mrg32k3a#

説明#

複合多重再帰擬似乱数生成器 MRG32k3a [L’Ecuyer99a]。

API#

構文#

namespace oneapi::mkl::rng { 
  class mrg32k3a { 
  public: 
    static constexpr std::uint32_t default_seed = 1; 

    mrg32k3a(sycl::queue queue, std::uint32_t seed = default_seed); 
    mrg32k3a(sycl::queue queue, std::uint32_t seed, mrg32k3a_mode::optimal mode); 
    mrg32k3a(sycl::queue queue, std::uint32_t seed, mrg32k3a_mode::custom mode); 
    mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed); 
    mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed, 
             mrg32k3a_mode::optimal mode); 
    mrg32k3a(sycl::queue queue, std::initializer_list<std::uint32_t> seed, 
             mrg32k3a_mode::custom mode); 
    mrg32k3a(const mrg32k3a& other); 
    mrg32k3a(mrg32k3a&& other); 
    mrg32k3a& operator=(const mrg32k3a& other); 
    mrg32k3a& operator=(mrg32k3a&& other); 
    ~mrg32k3a(); 
  }; 
}

サポートされるデバイス: CPU と GPU。

インクルード・ファイル#

  • oneapi/mkl/rng.hpp

入力パラメーター#

名前

タイプ

説明

queue

sycl::queue

有効な sycl::queueoneapi::mkl::rng::generate() ルーチンの呼び出しにより、カーネルがこのキューに送信されます。

seed

std::uint32_t std::initializer_list<std::uint32_t>

生成器状態またはエンジン状態の初期条件。

mode

mrg32k3a_mode::optimal mrg32k3a_mode::custom

生成器状態またはエンジン状態の初期条件。

  • サブシーケンスの並列化 [L’Ecuyer02] は、mode パラメーターを介してサポートされます。mrg32k3a_mode::optimal は最適な数のサブストリームを使用し、mrg32k3a_mode::custom はユーザーが定義した数のサブストリームを渡すことを可能にします (例: mrg32k3a_mode::custom my_mode{123})。最適モード用のヘルパー構造テンプレート mrg32k3a_mode::optimal_v もあります。使用方法の詳細については、対応する例を参照してください。

  • 現在、サブシーケンスの並列化は、GPU デバイス上の均一分布とガウス分布でのみサポートされています。

この詳細については VS ノートを参照してください。