gaussian_mv#

多変量正規分布の乱数を生成します。

説明#

クラス・オブジェクトは、generate 関数で使用され、平均 (a) と分散共分散行列 C を持つ d 変量正規 (ガウス) 分布の乱数を提供します。ここで、aRd ; Cd x d 対称正定値行列です。

確率密度関数は次のように表されます。

\[f_{a, C} (x) = \frac{1}{\sqrt{\mathrm{det}(2\pi C)}} \exp (- \frac{1}{2} (x-a)^T C^{-1} (x-a))\]

ここで、x``∈ ``Rd です。

行列 CC = TTT と表すことができます。ここで、T は下三角行列、つまり C のコレスキー因子です。

API#

構文#

namespace oneapi::mkl::rng { 
  template<typename RealType = float, layout Layout = layout::packed, 
           typename Method = gaussian_mv_method::by_default> 
  class gaussian_mv { 
  public: 
    using method_type = Method; 
    using result_type = RealType; 
    static constexpr layout layout_type = Layout; 

    explicit gaussian_mv(std::uint32_t dimen, 
                         std::vector<RealType> mean, std::vector<RealType> matrix); // oneMKL 2023.0 以降は非推奨 
    explicit gaussian_mv(std::uint32_t dimen, 
                         sycl::span<RealType> mean, sycl::span<RealType> matrix); 
    explicit gaussian_mv(const param_type& pt); 

    std::uint32_t dimen() const; 
    std::vector<RealType> mean() const; 
    std::vector<RealType> matrix() const; 
    param_type param() const; 
    void param(const param_type& pt); 
  }; 
}

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

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

  • oneapi/mkl/rng.hpp

テンプレート・パラメーター#

名前

説明

typename RealType = float

生成された値のタイプ。固有の値は次のとおりです:

float

double

layout Layout = layout::packed

行列ストレージのタイプ。固有の値は次のとおりです:

layout::packed

layout::full

layout::diagonal

配布テンプレート・パラメーター・メソッドのメソッドの説明を参照してください。

typename Method = oneapi::mkl::rng::gaussian_mv_method::by_default

生成メソッド。固有の値は次のとおりです:

oneapi::mkl::rng::gaussian_mv_method::box_muller

oneapi::mkl::rng::gaussian_mv_method::box_muller2

oneapi::mkl::rng::gaussian_mv_method::icdf

配布テンプレート・パラメーター・メソッドのメソッドの説明を参照してください。

入力パラメーター#

名前

タイプ

説明

dimen

std::uint32_t

出力ランダムベクトルの次元

平均

sycl::span<RealType> (float, double)

次元 d の平均スパン a

matrix

sycl::span<RealType> (float, double)

分散共分散行列 C

  • explicit gaussian_mv(std::uint32_t dimen, std::vector<RealType> mean, std::vector<RealType> matrix); は非推奨であり、次のリリースのいずれかで削除される予定です。代わりに explicit gaussian_mv(std::uint32_t dimen, sycl::span<RealType> mean, sycl::span<RealType> matrix); を使用してください。

  • ユーザーメモリー上に構築された sycl::span をコンストラクターに渡す場合、ユーザーは sycl::span の下のメモリーを自身で管理する必要があります。データが処理されている間は、メモリーを破棄してはなりません。