1

CUDAを利用してパーティクルシステムを構築し、重い物を持ち上げようとしています。速度や寿命など、パーティクルの初期値の一部をランダム化したいと思います。乱数は視覚効果のためだけなので、超ランダムである必要はありません。私は同じ主題を扱っているこの投稿を見つけました:

CUDAでの乱数生成

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

Windows764ビットのVC++でCUDAを使用しています。

4

2 に答える 2

3

要件に応じて、いくつかのオープンソースオプションがあります。l'EcuyerのMRG32k3aを実装したNAGなどのいくつかの商用オプションもあります。ストリームが相関していないことを確認する必要がある場合は、LCGの使用に注意してください。leapfrog/ splittingを使用できますが、非常に長い期間が必要になります。

オープンソースに移行したい場合は、その単純さのために推力の使用を確実に検討する必要があります。NVIDIA SDKには、Mersenne Twister PRNGサンプル(MT607、MT19937はフォーラムにあります)やSobolおよびNiederreiterQRNGなどのRNGもあります。

最後に、CUDPPには乱数ジェネレーターもあります。

于 2010-02-04T22:00:16.420 に答える
3

CUDA疑似乱数ジェネレーターは

  1. NVidiaSDKに含まれていますC/src/MersenneTwister/C/src/quasirandomGenerator

  2. 別の論文と出典として入手可能:

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

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

于 2010-02-04T19:48:52.620 に答える