Как сгенерировать псевдослучайный код в cuda

StackOverflow https://stackoverflow.com/questions/2202534

  •  18-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать систему частиц, использующую CUDA для выполнения тяжелой работы.Я хочу рандомизировать некоторые начальные значения частиц, такие как скорость и продолжительность жизни.Случайные числа не обязательно должны быть суперслучайными, так как это просто для визуального эффекта.Я нашел этот пост, посвященный той же теме:

Генерация случайных чисел в CUDA

Это наводит на мысль, что правильнее всего использовать линейную конгруэнтность.Кажется, что это должно быть просто реализовать, но у меня возникли проблемы с получением чего-либо полезного из моей реализации.Кто-нибудь может предоставить какой-нибудь код, который будет выполняться на устройстве?

Я использую CUDA с VC ++ в 64-битной версии Windows 7.

Это было полезно?

Решение

Генераторы псевдослучайных чисел CUDA - это

  1. включен в NVidia SDK, например C/src/MersenneTwister/ и C/src/quasirandomGenerator

  2. доступно в виде отдельных документов и источника:

    2.а Статья Лэнгдона и Исходный код Лэнгдона

    2.б Мерсенн Твистер на графическом процессоре

Другие советы

В зависимости от ваших требований существует несколько вариантов с открытым исходным кодом.Существует также несколько коммерческих вариантов, таких как ВОРЧАТЬ которые внедрили Mrg32k3a от l'Ecuyer.Будьте осторожны при использовании LCG, если вам нужно убедиться, что ваши потоки не коррелированы - вы можете использовать чехарду / разделение, но вам потребуется очень длительный период!

Если вы хотите перейти на открытый исходный код, то вам определенно следует рассмотреть возможность использования толчок потому что это простота.В NVIDIA SDK также есть несколько ГСЧ, в том числе образец PRNG Mersenne Twister (MT607, MT19937 есть на форумах) и QRNGS Sobol и Niederreiter.

Наконец - то, ОБНИМАШКИ также есть генератор случайных чисел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top