Количество рабочих в парке Матлаба

Я запускаю цикл for, используя функцию MATLAB parfor. Характеристики моего процессора

введите здесь описание изображения

Я установил предпочтительное количество рабочих процессов равным 24. Однако MATLAB устанавливает это число равным 6. Ограничено ли количество рабочих количеством ядер или (количество ядер) x (количество процессоров = 6x12?


person AlexandrosB    schedule 03.12.2019    source источник


Ответы (1)


Matlab предпочитает ограничивать количество рабочих количеством ядер (шесть в вашем случае). Ваш процессор (intel i7-9750H) имеет гиперпоточность, то есть вы можете запускать несколько (здесь 2) потоков на ядро. Однако это бесполезно, если вы хотите запустить их с полной нагрузкой, а это означает, что просто нет доступных ресурсов для переключения на другую задачу (что фактически представляют собой дополнительные потоки).

См. документацию.

Ограничение одним рабочим процессом на физическое ядро ​​гарантирует, что каждый рабочий процесс будет иметь эксклюзивный доступ к единице с плавающей запятой, что в целом оптимизирует производительность вычислительного кода. Если ваш код не требует интенсивных вычислений, например, он интенсивно использует ввод-вывод (I/O), рассмотрите возможность использования до двух рабочих процессов на физическое ядро. Запуск слишком большого количества рабочих процессов на слишком малом количестве ресурсов может повлиять на производительность и стабильность вашей машины.

Обратите внимание, что Matlab необходимо передавать данные на каждое ядро ​​для запуска распределенного кода. Это своего рода усилия по инициализации и причина, по которой вы не сможете сократить время выполнения вдвое, если удвоите количество ядер/работников. И это также объясняет, почему Matlab не использует гиперпоточность. Это просто означало бы увеличение начальных усилий по потоковой передаче без какого-либо ускорения - на самом деле, ядро, вероятно, заставит Matlab сохранять промежуточные результаты и время от времени переключаться на другую задачу... что является той же задачей, что и раньше. ;)

person max    schedule 03.12.2019