Почему --oversubscribe не требуется при работе с большим количеством процессов, чем на реальных процессорах?
У меня есть MacBook Pro 2015 года с двухъядерным процессором i7. Таким образом, я должен иметь возможность запускать максимум 2 процессора на распараллеленном коде без переподписки. Если я запускаю свой исполняемый файл, используя
mpirun -n num_proc ./executable
это дает ошибку:
There are not enough slots available in the system to satisfy the 4 slots
that were requested by the application:
./bin/pso
Either request fewer slots for your application, or make more slots available
for use.
-----------
за num_proc > 2
, Если я использую --oversubscribe
флаг, я могу использовать до num_proc = 56
, Как примечание стороны, где это 56
номер пришел?
Вернуться к теме: я запускаю идентичный код на MacBook Pro моего друга. Это четырехъядерный процессор i5. Так что у него должно быть 4 процессора. Но я могу выполнить
mpirun -n num_proc ./executable
за num_proc > 4
без необходимости использовать --oversubscribe
флаг. Я запутался, почему его процессор позволяет это сделать? Это связано с какой-то гиперпоточностью по умолчанию, которая была настроена (я не знаю об этом)?