НА ГЛАВНУЮГЕНЕРАТОРPARMONCMONCОБ АВТОРЕ
 

Параллельный 128-битный конгруэнтный генератор псевдослучайных чисел

 

 

Оглавление

 

Базовый 128-битный генератор псевдослучайных чисел

Распределительный способ получения параллельных потоков псевдослучайных чисел

Программы и параметры для генератора

Публикации  

 
 
Базовый 128-битный генератор псевдослучайных чисел
 

Для получения базовой последовательности псевдослучайных чисел {αk }используется линейный конгруэнтный генератор (метод вычетов):

Период такой последовательности равен

Для генератора используются следующие параметры:

Следовательно, его период равен

 
 
Распределительный способ получения параллельных потоков псевдослучайных чисел
 Для получения независимых потоков случайных чисел базовая последовательность {αk } разбивается на подпоследовательности длины n, которые начинаются с элементов


Таким образом, производятся"прыжки" длины n. Начальные элементы подпоследовательностей {αm } вычисляются по формуле




Множитель A(n) такого вспомогательного генератора вычисляется по формуле


Итак, базовая последовательность распределяется по параллельным потокам следующим образом:


С целью эффективной реализации параллельного статистического моделирования полезно использовать следующую иерархию подпоследовательностей:



Под вычислительным экспериментом понимается конкретный расчет методом статистического моделирования. Для его проведения выделяется самая большая по количеству чисел подпоследовательность для экспериментов длиной ne . Из подпоследовательности для экспериментов выделяются подпоследовательности для процессоров длиной np , которые используются для расчетов на каждом процессоре. Из подпоследовательности для процессоров выделяются подпоследовательности для реализаций длиной nr , которые используются для моделирования отдельных реализаций.

Как правило, подпоследовательность для экспериментов пользователь выбирает самостоятельно (точнее, выбирает ее номер). Подпоследовательности для процессоров и подпоследовательности для реализаций выбираются автоматически в программе пользователя. Соответствующие рекомендации приведены в разделе "Программы и параметры для генератора".


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

2) Для проведения независимых в статистическом смысле расчетов следует выбирать для них различные подпоследовательности для экспериментов

3) При возобновлении ранее проведенного расчета (например, с целью уменьшения статистической погрешности) в новом расчете следует выбирать отличную от первого расчета подпоследовательность для экспериментов.


 Программы и параметры для генератора 
 

Однопроцессорный (последовательный) вариант генератора

32-разрядная версия

C

Fortran

64-разрядная версия

C

Fortran

Многопроцессорный (параллельный) вариант генератора

32-разрядная версия

C

Fortran

64-разрядная версия

C

Fortran

Вспомогательные программы для генератора

Программы для расчета множителей для параллельного генератора

32-разрядная версия

C

Fortran

64-разрядная версия

C

Fortran

Программы для расчета начальных значений для параллельного генератора

32-разрядная версия

C

Fortran

64-разрядная версия

C

Fortran

Файлы с начальными значениями подпоследовательностей для параллельного генератора

32-разрядная версия

64-разрядная версия

 
Публикации
 
 

[1] Марченко М.А., Михайлов Г.А. Распределенные вычисления по методу Монте-Карло // Автоматика и телемеханика. 2007. Вып. 5. С. 157–170. Скачать статью в pdf формате

[2] Mikhailov G.A., Marchenko M.A. Parallel realization of statistical simulation and random number generators. // Russ. J. Numer. Anal. Math. Modelling. - 2002. - Vol. 17. - NO 1. pp.113-124 Скачать статью в pdf формате