Speaker
Description
Работа посвящена построению оптимизированных параллельных реализаций генератора случайных чисел на основе алгоритма rnd128 [1]. Данный алгоритм используется в программе поддержки статистических расчетов PARMONC, разработанной более 15 лет назад [2,3]. С тех пор произошли существенные изменения в архитектуре вычислительных систем. Процессоры получили развитые векторные расширения (AVX2, AVX-512), в массовом сегменте появились графические ускорители общего назначения с тысячами параллельных потоков и десятками гигабайт быстрой памяти HBM/GDDR, реализовано разделение на P\E ядра процессоров и т.д.
Разработана эталонная программная реализация генератора и проведено профилирование на современной архитектуре. Реализована серия оптимизаций, использующих упакованное представление состояния, нативные intrinsics 128-битной арифметики и AVX2 на этапе упаковки и записи результатов в сочетании с явной развёрткой инструкционного параллелизма. Дополнительно разработана реализация генератора на платформе NVIDIA CUDA с использованием warp-coalesced размещения состояний потоков для согласованного доступа к памяти.
Проведенное статистическое тестирование средствами пакета PractRand [4] и набора стандартных статистических критериев [5] показало корректность исполнения. Тестирование производительности и масштабируемости продемонстрировало результаты сопоставимые с результатами современных генераторов splitmix64 [6], xoshiro256++ [7], mt19937_64 [8] и превосходящие эталонную программную реализацию.
Исследования выполнены в рамках государственного задания ИВМиМГ СО РАН FWNM-2025-0002.
Литература:
[1] Dyadkin I.G., Hamilton K.G. A study of 128-bit multipliers for congruential pseudorandom number generators // Computer Physics Communications. 2000. - Vol. 125 (2000). - P. 239 -258.
[2] Михайлов Г. А., Марченко М. А. Параллельная реализация статистического
моделирования и генераторов случайных чисел // Препринт / РАН. Сиб. отд-ние. ИВМиМГ.
2001. № 1154.
[3] Параллельная библиотека PARMONC (PARallel MONte Carlo). Документация по
программной библиотеке PARMONC. - URL: https://sscc.ru/information/parmonc.html (дата
обращения: 30.06.2026). - Текст : электронный.
[4] Doty-Humphrey C. PractRand (Practically Random): Library of Practical Random Number Generation Tests. - URL: http://pracrand.sourceforge.net/ (дата обращения: 01.04.2026). - Текст : электронный.
[5] L'Ecuyer P., Simard R. TestU01: A C Library for Empirical Testing of Random Number Generators // ACM Transactions on Mathematical Software. - 2007. - Vol. 33, No. 4. - Article 22. - 40p.
[6] Steele, G. L., Lea, D., & Flood, C. H. (2014). Fast splittable pseudorandom number generators. Proceedings of the 2014 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, 453–472.
[7] Marsaglia, G. (2003) “Xorshift RNGs”, Journal of Statistical Software, 8(14), pp. 1-6. doi: 10.18637/jss.v008.i14.
[8] Matsumoto, M. Mersenne Twister: a 623-dimensionally equidistributed uniform pseudorandom number generator / M. Matsumoto, T. Nishimura // ACM Transactions on Modeling and Computer Simulation. — 1998. — Vol. 8, no. 1. — P. 3—30.