DPCT1033#

メッセージ#

移行したコードは、基本 Sobol ジェネレーターを使用します。oneapi::mkl::rng::sobol ジェネレーターをユーザー定義の方向比で初期化し、スクランブル Sobol ジェネレーターとして使用します。

詳細な説明#

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) (英語) の RNG は現在、デフォルトでスクランブル Sobol ジェネレーターをサポートしていません。

移行したコードは、基本 Sobol ジェネレーターを使用します。

修正方法の提案

基本 Sobol ジェネレーターにユーザ定義の方向比を設定して、スクランブル Sobol ジェネレーターとして使用します。

詳細は、乱数ジェネレーター (英語) を参照してください。

例えば、以下のオリジナル CUDA* コードについて考えてみます。


1  void foo() { 
2    ...
3   curandGenerator_t rng; 
4   curandCreateGenerator(&rng, CURAND_RNG_QUASI_SCRAMBLED_SOBOL32); 
5   curandSetQuasiRandomGeneratorDimensions(rng, 1234); 
6  }

このコードは、以下の SYCL* コードに移行されます。


1  void 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 }

このコードは次のように書き換えられます。


1  void 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  }