У меня есть цикл parfor
для параллельных вычислений в Matlab
. Я хочу иметь разные случайные числа при каждом вызове этих циклов parfor
на 8 рабочих. Если я не использую функцию rng('shuffle')
, у меня есть одно и то же случайное число для randperm(10)
. В этом случае мой код запускает rng('shuffle')
функцию до randperm
одновременно у всех работников. У меня разные случайные числа в этом состоянии? когда я вижу randperm
выходы в парфоре, некоторые из этих выходов одинаковы!Использование функции rng ('shuffle') в параллельных вычислениях
Мне нужно сохранить rng
до rng('shuffle')
и использовать что-то подобное rng(saved_rng)
после окончания параллельного цикла?
Мы имеем это в Matlab
помощи:
Примечания Поскольку ГСЧ («перетасовать») семена генератора случайных чисел на основе на текущий момент времени, вы не должны использовать эту команду, чтобы установить случайный поток номера на разных работников, если вы хотите обеспечить независимые потоки . Это особенно актуально, когда команда отправляется одновременно нескольким работникам, например, внутри команды parfor, spmd или . Для независимых потоков для рабочих используйте поведение по умолчанию ; или если этого недостаточно для ваших нужд, рассмотрите возможность использования уникального субпотока для каждого работника.
Так что я должен делать? Имею ли я разные случайные числа, если я удалю rng
? У меня есть две версии этих кодов. Один из них - расчет с parfor
и другими с использованием цикла for
. Могу ли я удалить shuffle
из for
? У меня разные случайные числа в этом состоянии?
Спасибо.
Ps.
Я могу иметь эти структуры:
parfor I=1:X
xx = randperm(10)
end
parfor I=1:X
rng('shuffle');
xx = randperm(10)
end
rng('shuffle');
parfor I=1:X
xx = randperm(10)
end
Я хочу иметь различные случайные числа от randperm
функции. Как я могу это сделать? для for
Структура мне нужна shuffle
функция (без него случайные числа совпадают), но когда я добавляю ее в parfor
, некоторые случайные выходы randperm
- то же самое!
Почему вы используете 'rng ('shuffle')'? Что случилось с настройкой по умолчанию? Кроме того, можно ли переместить случайную генерацию до параллельной части? –
Спасибо за ваш комментарий. Можно ли удалить 'rng ('shuffle')' в 'parfor'? Почему нам нужно 'random generation' перед' parfor loop'? – user2991243
Это не делает меня более понятным для меня. Не могли бы вы включить упрощенную версию вашего кода, четко отображая проблему? –