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* コードに移行されます。
1void 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}
このコードは次のように書き換えられます。
1void 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}