Генератор случайных сигналов SIMD двойной точности с нормальным распределением для AVX, AVX2 и AVX512?

0

После некоторых исследований мне не удалось найти векторизованный генератор случайных чисел двойной точности (лучше всего было бы нормальное распределение), использующий AVX, AVX2 или AVX512.

Как это можно / нужно сделать в C ++ для векторов n doubles
( __m128d/ __m256d/ __m512d)?

В идеале нужно изучить методы SIMD FP, поэтому предпочтительнее более простые.

5
  • 1
    Проверьте библиотеку FastNoise2. Он имеет производительность 100M / s случайного открытого симплексного шума на процессоре Fx8150, а тесты показывают 800M / s для нового процессора. 2 дня назад
  • Что вас смущает?
    njuffa
    2 дня назад
  • Я отредактировал вопрос, чтобы сделать его более ясным: на самом деле я не могу найти ни одного случайного генератора двойной точности на основе avx. Хорошо, для равномерного распределения можно ли объединить два 32-битных числа с плавающей запятой? но этот подход не работает для нормального распределения.
    Tommy91
    2 дня назад
  • 1
    «Может ли кто-нибудь опубликовать минимальный рабочий пример ... на C ++» - пройдите экскурсию . Мы здесь не этим занимаемся.
    Chris
    2 дня назад
  • Что ж, MRG32k3a - очевидный кандидат на векторизацию, учитывая, что это линейная операция, которая генерирует переменную n + 8 из переменной n. Существует RNGAVXLIB библиотека , которая включает его. Статьи: https://www.sciencedirect.com/science/article/abs/pii/S0010465515004117 и https://publications.hse.ru/mirror/pubs/share/folder/0uv4q564kx/direct/204282243.pdf . 17 часов назад