DPCT1105
目次
DPCT1105#
メッセージ#
mcg59 乱数ジェネレーターが使用されます。後続の引数 <expression> は無視されます。移行を確認する必要があります。
詳細な説明#
mcg59 乱数生成器は、subsequence パラメーターをサポートしていません。subsequence パラメーターを使用する場合、代わりに philox4x32x10 乱数生成器を使用できます。
修正方法の提案
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 __global__ void kernel() {
2 unsigned int u;
3 curandStateXORWOW_t rng1;
4 curand_init(1, 2, 3, &rng1);
5 u = curand(&rng1);
6 }
このコードは、以下の SYCL* コードに移行されます。
1 void kernel() {
2 /*
3 DPCT1032:0: A different random number generator is used.You may need to adjust the code.
4 */
5 dpct::rng::device::rng_generator<oneapi::mkl::rng::device::mcg59<1>> rng1;
6 /*
7 DPCT1105:1: The mcg59 random number generator is used.The subsequence argument "2" is ignored.You need to verify the migration.
8 */
9 rng1 = dpct::rng::device::rng_generator<oneapi::mkl::rng::device::mcg59<1>>(1, 3);
10 u = rng1.generate<oneapi::mkl::rng::device::uniform_bits<std::uint32_t>, 1>();
11 }
このコードは次のように書き換えられます。
1 void kernel() {
2 dpct::rng::device::rng_generator<oneapi::mkl::rng::device::mcg59<1>> rng1;
3 rng1 = dpct::rng::device::rng_generator<oneapi::mkl::rng::device::mcg59<1>>(1, 3);
4 u = rng1.generate<oneapi::mkl::rng::device::uniform_bits<std::uint32_t>, 1>();
5 }