Получите настройки генератора графического процессора и установите состояние генератора случайных чисел центрального процессора совпадать с настройками генератора графического процессора. Создайте предсказуемые массивы случайных чисел на центральном процессоре и графическом процессоре.
Восстановите тип генератора и seed к их значениям по умолчанию и на центральном процессоре и на графическом процессоре.
Сохраните seed по умолчанию и тип генератора генератора случайных чисел графического процессора.
GPUdef = struct with fields:
Type: 'threefry'
Seed: 0
State: [17×1 uint32]
Установите генератор случайных чисел центрального процессора совпадать с настройками GPU по умолчанию.
Создайте массив равномерно распределенных случайных чисел на графическом процессоре.
rGPU =
0.3640 0.5421 0.6543 0.7436 0.0342 0.8311 0.7040 0.2817 0.1163 0.5671
Создайте массив случайных чисел на центральном процессоре.
rCPU = 1×10
0.3640 0.5421 0.6543 0.7436 0.0342 0.8311 0.7040 0.2817 0.1163 0.5671
Seed и тип генератора являются тем же самым и для графического процессора и для центрального процессора, таким образом, массивы являются тем же самым.
Состояние gpurng
не сохраняет настройки для преобразования, примененного, чтобы сгенерировать нормально распределенный набор случайных чисел. Даже при том, что seed и тип генератора являются тем же самым на графическом процессоре и центральном процессоре, набор нормально распределенных случайных чисел отличается.
Статистические данные нормального распределения случайных чисел являются тем же самым на графическом процессоре и центральном процессоре.
По умолчанию центральный процессор использует преобразование 'Ziggurat'
, в то время как графический процессор использует алгоритм 'BoxMuller'
для генератора 'Threefry'
. Единственным методом преобразования, поддержанным и на центральном процессоре и на графическом процессоре, является 'Inversion'
, преобразовывают.
Можно изменить метод преобразования на графическом процессоре с помощью parallel.gpu.RandStream
.