При наличии многоядерного процессора можно увеличить скорость обработки с помощью параллельной обработки. Можно создать параллельный пул из нескольких работников с лицензией Parallel Computing Toolbox™. Описание программного обеспечения Parallel Computing Toolbox см. в разделе Начало работы с Parallel Computing Toolbox (Панель параллельных вычислений).
Предположим, что у вас есть двухъядерный процессор и вы хотите использовать параллельные вычисления. Введите этот код в командной строке.
parpool
MATLAB ® запускает пул работников, использующих многоядерный процессор. Если ранее был задан профиль кластера по умолчанию, можно принудительно использовать многоядерные (локальные) вычисления, введя этот код.
parpool('local')Примечание
В зависимости от предпочтений, MATLAB может запускать параллельный пул автоматически. Чтобы включить эту функцию, выберите команду Параллельный (Parallel) > Параллельные настройки (Parallel Preferences) в группе Среда (Environment) на вкладке Главная страница (Home), а затем выберите Автоматически создавать параллельный пул (Automatically
Задайте параметры решателя для использования параллельных вычислений.
options = optimoptions('solvername','UseParallel',true);При запуске применимого решателя с помощью options, применимые решатели автоматически используют параллельные вычисления.
Чтобы остановить параллельные вычисления оптимизации, установите UseParallel кому false. Чтобы остановить все параллельные вычисления, введите этот код.
delete(gcp)
Примечание
В документации рекомендуется не использовать parfor или parfeval при вызове Simulink ®; см. Использование sim-функции в parfor (Simulink). Поэтому при параллельной оптимизации моделирования Simulink с помощью встроенных функций параллельного решения могут возникнуть проблемы.
При наличии нескольких процессоров в сети используйте функции Parallel Computing Toolbox и программное обеспечение MATLAB Parallel Server™ для организации параллельных вычислений.
Убедитесь, что система правильно настроена для параллельных вычислений. Обратитесь к системному администратору или обратитесь к документации Parallel Computing Toolbox.
Выполните базовую проверку, введя этот код, где prof является профилем кластера.
parpool(prof)
Работники должны иметь доступ к файлу целевой функции и, если применимо, к файлу нелинейной функции ограничения. Для обеспечения доступа выполните одно из следующих действий:
Распространение файлов среди работников с помощью parpool(Панель инструментов параллельных вычислений) AttachedFiles аргумент. В этом примере: objfun.m является файлом целевой функции, и constrfun.m является файлом нелинейной функции ограничения.
parpool('AttachedFiles',{'objfun.m','constrfun.m'});
Работники получают доступ к собственным копиям файлов.
Укажите сетевой путь к файлам функций цели или ограничения.
pctRunOnAll('addpath network_file_path')Работники получают доступ к файлам функций по сети.
Проверьте, находится ли файл в пути каждого работника.
pctRunOnAll('which filename')filename not found.
Задайте параметры решателя для задания с помощью параллельных вычислений. Аргумент 'solvername' представляет нелинейный решатель, поддерживающий параллельную оценку.
options = optimoptions('solvername','UseParallel',true);
После создания среды параллельных вычислений соответствующие решатели автоматически используют параллельные вычисления при каждом вызове с помощью options.
Чтобы остановить параллельные вычисления оптимизации, установите UseParallel кому false. Чтобы остановить все параллельные вычисления, введите этот код.
delete(gcp)
Примечание
В документации рекомендуется не использовать parfor или parfeval при вызове Simulink; см. Использование sim-функции в parfor (Simulink). Поэтому при параллельной оптимизации моделирования Simulink с помощью встроенных функций параллельного решения могут возникнуть проблемы.
Выполните следующие действия, чтобы проверить, правильно ли работает проблема параллельно.
Попробуйте решить проблему без параллельного вычисления, чтобы убедиться, что она выполняется последовательно. Перед переходом к следующему тесту убедитесь, что этот тест прошел успешно (дает правильные результаты).
Набор UseParallel кому trueи убедитесь, что параллельный пул не существует, введя delete(gcp). Чтобы убедиться, что MATLAB не создает параллельный пул, выберите пункт Параллельный (Parallel) > Параллельные настройки (Parallel Preferences) в группе Среда (Environment) на вкладке Главная (Home), а затем снимите флажок Автоматически создавать параллельный пул (Automatically create a parallel pool). Ваша проблема запускается parfor последовательно, с итерациями цикла в обратном порядке из for цикл. Перед переходом к следующему тесту убедитесь, что этот тест прошел успешно (дает правильные результаты).
Набор UseParallel кому trueи создайте параллельный пул с помощью parpool. Если не установлен многоядерный процессор или сеть, этот тест не увеличивает скорость обработки. Это тестирование просто для проверки правильности вычислений.
Не забудьте вызвать решатель с помощью options аргумент для проверки или использования параллельной функциональности.