Frage

Ich bin versucht, ein Partikelsystem CUDA zu bauen unter Verwendung das schwere Heben zu tun. Ich möchte ein Teil der Partikel Anfangswerte wie Geschwindigkeit und Lebensdauer randomisieren. Die Zufallszahlen sein müssen nicht Super zufällig, da sie nur für die visuelle Wirkung ist. Ich fand diesen Beitrag, der das gleiche Thema befasst:

Random Number Generation in CUDA

Das legt nahe, eine lineare Kongruenz ist der Weg zu gehen. Es scheint, wie es sollte einfach zu implementieren sein, aber ich habe Probleme immer etwas nützlich meine Umsetzung. Kann jemand etwas Code, der in dem Gerät ausgeführt wird?

Ich bin mit CUDA mit VC ++ auf Windows 7 64bit.

War es hilfreich?

Lösung

CUDA Pseudozufallszahlengeneratoren sind

  1. , die in der NVidia SDK zB C/src/MersenneTwister/ und C/src/quasirandomGenerator

  2. als separate Papiere und Quelle:

    Langdon Papier und Langdon Quellcode

    Mersenne Twister auf GPU

Andere Tipps

Je nach Bedarf gibt es eine Reihe von Open-Source-Optionen. Darüber hinaus gibt es mehrere kommerzielle Optionen wie NAG die l'Ecuyer des MRG32k3a umgesetzt haben. Seien Sie vorsichtig bei Verwendung eines LCG, wenn Sie benötigen, um sicherzustellen, dass Ihre Streams nicht korreliert sind - Sie verwenden können leapfrog / Splitting, aber Sie werden eine sehr lange Zeit benötigen

Wenn Sie Open-Source gehen wollen, dann sollten Sie auf jeden Fall überlegen mit Schub es ist Einfachheit. Es gibt auch einige RNGs im NVIDIA SDK, einschließlich der Mersenne-Twister-PRNG Probe (MT607, MT19937 in den Foren ist) und die Sobol und Niederreiter QRNGs.

Schließlich CUDPP auch einen Zufallszahlengenerator hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top