Я исследую использование Nvidia GPU для моделирований Монте-Карло. Однако я хотел бы использовать gsl генераторы случайных чисел и также параллельный генератор случайных чисел, такие как SPRNG. Кто-либо знает, возможно ли это?
Обновление
Я играл с RNG использование GPU. В настоящее время нет хорошего решения. Вихрь Мерсенна, который идет с SDK, не действительно подходит для (моих) моделирований Монте-Карло, так как он невероятно занимает много времени для генерации семян.
Библиотеки NAG являются более многообещающими. Можно генерировать RNs или в пакетах или в отдельных потоках. Однако только несколько дистрибутивов в настоящее время поддерживаются - Универсальная форма, экспоненциальная и Нормальная.
В руководстве GSL рекомендуется Mersenne Twister .
У авторов Mersenne Twister есть версия для графических процессоров Nvidia . Я попытался перенести это в пакет R gputools , но обнаружил, что мне нужно слишком большое количество отрисовок (я думаю, миллионы), прежде чем комбинация «создание графического процессора и предоставление доступа к R» будет быстрее, чем просто рисование в R (с использованием только ЦП).
Это действительно компромисс между вычислениями и коммуникациями.
Массивная параллельная генерация случайных чисел, как вам нужно, для графических процессоров - сложная проблема. Это активная тема для исследований. Вам действительно нужно быть осторожным, чтобы иметь не только хороший последовательный генератор случайных чисел (такие вы найдете в литературе), но и что-то, что гарантирует, что они независимы. Попарной независимости недостаточно для хорошего моделирования Монте-Карло. AFAIK не существует хорошего кода в открытом доступе.
Я только что обнаружил, что NAG предоставить несколько подпрограмм ГСЧ . Эти библиотеки бесплатны для ученых.
Используйте ГПСЧ Mersenne Twister, предоставляемую в CUDA SDK.
Здесь мы используем последовательности соболя на графических процессорах.