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}