Matlab Parallel Computing Toolbox назначает только 1 работника для одного ядра?
Привет, я использую набор инструментов параллельных вычислений Matlab для параллельных вычислений. Мой ноутбук имеет 2 ядра 4 потока, так что я предполагаю, что задача может быть связана с 4 работами? Однако, когда я набираю команду "Matlabpool Open", подключаются только 2 рабочих. Может кто-нибудь сказать мне, как указать точное количество рабочих, которые будут подключены, чтобы я мог распределить задачу по количеству рабочих больше, чем число ядер, чтобы сделать вычисления более эффективными? Спасибо!
1 ответ
Вы можете указать matlab использовать определенное количество рабочих, но это не позволит вам использовать больше максимального количества, которое, вероятно, является количеством ваших физических ядер, зависящих от версии и кластера. R2012b позволяет использовать 12 рабочих в локальном кластере, R2014a позволяет более 12.
От help matlabpool
:
...
matlabpool [poolSize]
...
matlabpool
или жеmatlabpool OPEN
запускает рабочий пул, используя профиль кластера по умолчанию с размером пула, указанным этим профилем. Вы также можете указать размер пула, используяmatlabpool OPEN <poolSize>
Обратите внимание, что большинство кластеров имеют максимальное количество процессов, которые они могут запустить.
% Start a worker pool using the local profile with 2 workers:
matlabpool local 2
Обновить:
Я немного поиграл. Запрос на 16 рабочих на R2012b дает мне ошибку
Вы запросили минимум 16 работников, но только 12 работникам разрешено работать с локальным кластером.
Это означает, что с этой версией невозможно иметь больше рабочих. Однако, если я вызываю локальный пул с 12 работниками, я получаю ошибку
Вы запросили не менее 12 рабочих, но для кластера "local" свойство NumWorkers установлено, чтобы разрешить максимум 4 рабочих. Чтобы запустить связывающее задание на большем количестве работников, чем это (максимум до 12 для локального кластера), увеличьте значение свойства NumWorkers для кластера. Значением по умолчанию NumWorkers для локального кластера является количество ядер на локальном компьютере.
Таким образом, возможно, что вы не сможете использовать более 12 рабочих, в зависимости от вашей версии. Если вы видите последнюю ошибку, вы можете переопределить ваш кластер, чтобы добавить больше ядер. Дублирование local
бассейн:
mycluster=parcluster('local');
mycluster.NumWorkers=48;
matlabpool(mycluster,48);
...
matlabpool close;