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: 異なる乱数ジェネレーターが使用されています。コードを調整する必要があります。 
4 */ 
5 dpct::rng::device::rng_generator<oneapi::mkl::rng::device::mcg59<1>> rng1; 
6 /* 
7 DPCT1105:1: mcg59 乱数ジェネレーターが使用されています。後続の引数 2 は無視されます。移行を検証する必要があります。 
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}