Matlab 2011a Использовать все доступные ядра в 64-битной Linux - PullRequest
1 голос
/ 08 февраля 2012

Привет! Я посмотрел онлайн, но не могу найти ответ, нужно ли мне что-то делать, чтобы matlab использовал все ядра? Насколько я понимаю, многопоточность поддерживается с 2007 года. На моей машине matlab использует только одно ядро ​​при 100%, а остальные зависают на ~ 2%. Я использую 64-битный Linux (Mint 12). На моем другом компьютере, который имеет только 2 ядра и 32-битный Matlab, похоже, использует оба ядра на 100%. Не всегда, но в достаточном количестве случаев. На 64-битном, 4-ядерном ПК такого не бывает.

Нужно ли что-то делать в 64-битной версии, чтобы Matlab использовал все ядра, когда это возможно? После установки мне пришлось сделать несколько пользовательских ссылок, так как Matlab не находил библиотеки (например, libc.so.6), потому что не смотрел в нужных местах.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Стандартно, начиная с последней версии, вы можете использовать 12 ядер, используя Parallel Computing Toolbox .Без этого набора инструментов, я думаю, вам не повезло.Доступ к любым дополнительным ядрам может быть получен с распределенного вычислительного сервера MATLAB , где вы фактически платите за количество рабочих потоков.

Для того, чтобы Matlab использовал несколько ядер, вам нужно сделать

matlabpool open

И это, конечно, работает лучше, если у вас действительно многопоточный код (например, с использованием функции spmd или циклов parfor)

Дополнительная информация на домашней странице Matlab

0 голосов
/ 05 августа 2012

MATLAB имеет только один отдельный поток для вычислений.

При этом для определенных функций будет создано несколько потоков, которые используют многопоточные функции библиотек BLAS, которые используются ниже.

Таким образом, вы сможете получить «многопоточное» преимущество, только если вызываете функции, использующие эти многопоточные библиотеки blas.

Эта ссылка имеетинформация о списке функций, которые являются многопоточными.

Теперь для использования ваших ядер, это будет зависеть от вашей ОС.Я считаю, что ОС придется балансировать нагрузку ваших потоков, чтобы использовать их на всех ядрах.Один НЕ МОЖЕТ устанавливать сходство с потоками из MATLAB.Однако можно настроить рабочие процессы MATLAB так, чтобы они соответствовали ядрам из набора инструментов параллельных вычислений.

Однако вы всегда можете попытаться установить привязку к процессу MATLAB ко всем процессорам вручную, используя сведения, доступные по следующей ссылке для Linux

Пользователи Windows могут простощелкните правой кнопкой мыши по процессу в диспетчере задач и установите соответствие.

Насколько я понимаю, это всего лишь запрос к ОС, а не правило жесткого связывания, которому ОС должна придерживаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...