質問

重労働を行うために CUDA を利用してパーティクル システムを構築しようとしています。速度や寿命などのパーティクルの初期値の一部をランダム化したいと考えています。視覚効果だけを目的としているため、乱数は非常にランダムである必要はありません。同じテーマを扱った次の投稿を見つけました。

CUDA での乱数生成

これは、線形合同が進むべき道であることを示唆しています。実装は簡単そうに思えますが、実装から役立つものを得るのに苦労しています。誰かがデバイスで実行されるコードを提供できますか?

Windows 7 64ビット上でVC++でCUDAを使用しています。

役に立ちましたか?

解決

CUDA 擬似乱数生成器は次のとおりです。

  1. NVidia SDK に含まれています。例: C/src/MersenneTwister/ そして C/src/quasirandomGenerator

  2. 別の論文およびソースとして入手可能:

    2.a ラングドンの論文 そして ラングドンのソースコード

    2.b GPU 上のメルセンヌ ツイスター

他のヒント

あなたの要件に応じて、オープンソースの選択肢がいくつかあります。このよう NAG のL'EcuyerのMRG32k3aを実装している人など、いくつかの商業的なオプションもあります。あなたのストリームが相関していないことを保証する必要がある場合はLCGを使用しての注意が必要! - あなたは馬跳び/分割を使用することができますが、あなたは非常に長い期間が必要になります。

あなたがオープンソースに行きたいなら、あなたは間違いなく、それはだために推力を使用することを検討すべきですシンプルさ。メルセンヌツイスターPRNGサンプル(MT607、MT19937は、フォーラム上で)とソボルとNiederreiter QRNGs含むNVIDIA SDKでいくつかのRNGは、もあります。

最後に、 CUDPP にも乱数発生器を有している。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top