DPCT1033
目次
DPCT1033
メッセージ
移行したコードは、基本 Sobol ジェネレーターを使用します。oneapi::mkl::rng::sobol
ジェネレーターをユーザー定義の方向比で初期化し、スクランブル Sobol ジェネレーターとして使用します。
説明
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) (英語) の RNG は現在、デフォルトでスクランブル Sobol ジェネレーターをサポートしていません。
移行したコードは、基本 Sobol ジェネレーターを使用します。
修正方法の提案
基本 Sobol ジェネレーターにユーザ定義の方向比を設定して、スクランブル Sobol ジェネレーターとして使用します。
詳細は、乱数ジェネレーター (英語) を参照してください。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1void foo(){
2 ...
3 curandGenerator_t rng;
4 curandCreateGenerator(&rng, CURAND_RNG_QUASI_SCRAMBLED_SOBOL32);
5 curandSetQuasiRandomGeneratorDimensions(rng, 1234);
6}
このコードは、以下の SYCL* コードに移行されます。
1void foo(){
2 ...
3 dpct::rng::host_rng_ptr rng;
4 /*
5 DPCT1033:0: Migrated code uses a basic Sobol generator. Initialize
6 oneapi::mkl::rng::sobol generator with user-defined direction numbers to use
7 it as Scrambled Sobol generator.
8 */
9 rng = dpct::rng::create_host_rng(dpct::rng::random_engine_type::sobol);
10 rng->set_dimensions(1234);
11}
このコードは次のように書き換えられます。
1void foo(){
2 ...
3 dpct::rng::host_rng_ptr rng;
4 rng = dpct::rng::create_host_rng(dpct::rng::random_engine_type::sobol);
5 rng->set_direction_numbers(direction_numbers /*Use user-defined direction numbers*/);
6}