Skip to content

Commit 532bb11

Browse files
authored
[Ascend] fuj/fix-generator-with-getSeedAndOffset (#1233)
fix generator with getSeedAndOffset
1 parent ec68771 commit 532bb11

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

impl/ascend/functions/dropout.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ diopiError_t npuDropoutOut(diopiContextHandle_t ctx, diopiTensorHandle_t out, di
2323
diopiError_t ret = diopiRequireTensor(ctx, &maskNpu, &maskSize, nullptr, diopi_dtype_uint8, diopi_device);
2424
ASCEND_CHECK_ABORT(ret == diopiSuccess, "[npuDropoutOut] require tensor for mask failed.");
2525

26-
uint64_t seed, offset;
27-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
26+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
27+
const uint64_t seed = gen.first;
28+
const uint64_t offset = gen.second;
2829

2930
DIOPI_ASCEND_CALL_ACLNN(aclnnDropoutGenMask, ctx, inAt.shape(), p, seed, offset, maskNpu);
3031
DIOPI_ASCEND_CALL_ACLNN(aclnnDropoutDoMask, ctx, input, maskNpu, p, out);
@@ -57,8 +58,9 @@ diopiError_t npuDropout2dOut(diopiContextHandle_t ctx, diopiTensorHandle_t out,
5758
diopiError_t ret = diopiRequireTensor(ctx, &maskNpu, &maskNpuSize, nullptr, diopi_dtype_uint8, diopi_device);
5859
ASCEND_CHECK_ABORT(ret == diopiSuccess, "[npuDropout2dOut] require tensor for mask failed.");
5960

60-
uint64_t seed, offset;
61-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
61+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
62+
const uint64_t seed = gen.first;
63+
const uint64_t offset = gen.second;
6264

6365
DIOPI_ASCEND_CALL_ACLNN(aclnnDropoutGenMask, ctx, inAt.shape(), p, seed, offset, maskNpu);
6466
DIOPI_ASCEND_CALL_ACLNN(aclnnDropoutDoMask, ctx, input2d, maskNpu, p, out2d);

impl/ascend/functions/normal.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ diopiError_t diopiNormal(diopiContextHandle_t ctx, diopiTensorHandle_t out, doub
1616
return diopiSuccess;
1717
}
1818

19-
uint64_t seed, offset;
20-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
19+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
20+
const uint64_t seed = gen.first;
21+
const uint64_t offset = gen.second;
2122

2223
float meanCast = static_cast<float>(mean);
2324
float rstdCast = static_cast<float>(std);
@@ -26,8 +27,9 @@ diopiError_t diopiNormal(diopiContextHandle_t ctx, diopiTensorHandle_t out, doub
2627
}
2728

2829
diopiError_t diopiNormalInp(diopiContextHandle_t ctx, diopiTensorHandle_t inout, double mean, double std, diopiGeneratorHandle_t generator) {
29-
uint64_t seed, offset;
30-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
30+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
31+
const uint64_t seed = gen.first;
32+
const uint64_t offset = gen.second;
3133

3234
float meanCast = static_cast<float>(mean);
3335
float rstdCast = static_cast<float>(std);
@@ -42,8 +44,9 @@ diopiError_t diopiNormalTensor(diopiContextHandle_t ctx, diopiTensorHandle_t out
4244
return diopiSuccess;
4345
}
4446

45-
uint64_t seed, offset;
46-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
47+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
48+
const uint64_t seed = gen.first;
49+
const uint64_t offset = gen.second;
4750

4851
DIOPI_ASCEND_CALL_ACLNN(aclnnNormalTensorTensor, ctx, mean, std, seed, offset, out);
4952
return diopiSuccess;
@@ -56,8 +59,9 @@ diopiError_t diopiNormalScalarTensor(diopiContextHandle_t ctx, diopiTensorHandle
5659
return diopiSuccess;
5760
}
5861

59-
uint64_t seed, offset;
60-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
62+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
63+
const uint64_t seed = gen.first;
64+
const uint64_t offset = gen.second;
6165

6266
float meanCast = static_cast<float>(mean);
6367
DIOPI_ASCEND_CALL_ACLNN(aclnnNormalFloatTensor, ctx, meanCast, std, seed, offset, out);
@@ -71,8 +75,9 @@ diopiError_t diopiNormalTensorScalar(diopiContextHandle_t ctx, diopiTensorHandle
7175
return diopiSuccess;
7276
}
7377

74-
uint64_t seed, offset;
75-
DIOPI_CALL(diopiGeneratorGetSeedAndOffset(generator, &seed, &offset));
78+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
79+
const uint64_t seed = gen.first;
80+
const uint64_t offset = gen.second;
7681

7782
float rstdCast = static_cast<float>(std);
7883
DIOPI_ASCEND_CALL_ACLNN(aclnnNormalTensorFloat, ctx, mean, rstdCast, seed, offset, out);

impl/ascend/functions/uniform.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ namespace impl {
1111
namespace ascend {
1212

1313
diopiError_t diopiUniformInp(diopiContextHandle_t ctx, diopiTensorHandle_t inout, double from, double to, diopiGeneratorHandle_t generator) {
14-
uint64_t seed = 0;
15-
uint64_t offset = 0;
16-
diopiGeneratorGetSeedAndOffset(generator, &seed, &offset);
14+
const std::pair<uint64_t, uint64_t> gen = getSeedAndOffset(ctx, generator, 10);
15+
const uint64_t seed = gen.first;
16+
const uint64_t offset = gen.second;
1717
DIOPI_ASCEND_CALL_ACLNN(aclnnInplaceUniform, ctx, inout, from, to, seed, offset);
1818
return diopiSuccess;
1919
}

0 commit comments

Comments
 (0)