Если у вас есть многоядерный процессор, вы можете видеть, что ускорение использует параллельную обработку. Можно установить параллельный пул нескольких рабочих с лицензией Parallel Computing Toolbox™. Для описания программного обеспечения Parallel Computing Toolbox смотрите Начало работы с Parallel Computing Toolbox (Parallel Computing Toolbox).
Предположим, что вы имеете двухъядерный процессор и хотите использовать параллельные вычисления:
Войти
parpool
parpool('local')
В зависимости от ваших настроек MATLAB может запустить параллельный пул автоматически. Чтобы активировать эту опцию, проверяйте Automatically create a parallel pool в Home > Parallel > Parallel Preferences.
Установите свой решатель использовать параллельную обработку.
Решатель | Настройки командной строки | Настройки приложения оптимизации |
---|---|---|
ga |
|
|
gamultiobj |
|
|
MultiStart |
или
| |
paretosearch |
| |
particleswarm |
| |
patternsearch |
|
|
surrogateopt |
|
Начало в R2019a, когда вы устанавливаете 'UseParallel'
опция к true
, patternsearch
внутренне заменяет 'UseCompletePoll'
установка на true
таким образом, это опрашивает параллельно.
Когда вы запускаете применимый решатель с options
, применимые решатели автоматически используют параллельные вычисления.
Чтобы остановить вычислительную оптимизацию параллельно, установите UseParallel
к false
, или набор приложение Оптимизации, чтобы не вычислить параллельно. Чтобы остановить весь параллельный расчет, войти
delete(gcp)
Если у вас есть несколько процессоров в сети, используйте функции Parallel Computing Toolbox и программное обеспечение MATLAB Parallel Server™, чтобы установить параллельный расчет. Вот шаги, чтобы взять:
Убедитесь, что ваша система сконфигурирована правильно для параллельных вычислений. Согласуйте со своим системным администратором или обратитесь к документации Parallel Computing Toolbox.
Выполнять основную проверку:
В командной строке войти
parpool(prof)
prof
ваш кластерный профиль.Рабочие должны смочь получить доступ к вашему файлу целевой функции и, если применимо, вашему нелинейному ограничительному файлу функции. Существует два способа гарантировать доступ:
Распределите файлы рабочим, использующим parpool
AttachedFiles
аргумент. Например, если objfun.m
ваш файл целевой функции и constrfun.m
ваш нелинейный ограничительный файл функции, войти
parpool('AttachedFiles',{'objfun.m','constrfun.m'});
Рабочие получают доступ к своим собственным копиям файлов.
Дайте путь к сетевому файлу к своим файлам. Если network_file_path
сетевой путь к вашей цели или ограничительным файлам функции, войти
pctRunOnAll('addpath network_file_path')
Рабочие получают доступ к файлам функции по сети.
Проверяйте, является ли файл на пути каждого рабочего путем ввода
pctRunOnAll('which filename')
filename not found.
Установите свой решатель использовать параллельную обработку.
Решатель | Настройки командной строки | Настройки приложения оптимизации |
---|---|---|
ga |
|
|
gamultiobj |
|
|
MultiStart |
или
| |
paretosearch |
| |
particleswarm |
| |
patternsearch |
|
|
surrogateopt |
|
Начало в R2019a, когда вы устанавливаете 'UseParallel'
опция к true
, patternsearch
внутренне заменяет 'UseCompletePoll'
установка на true
таким образом, это опрашивает параллельно.
После того, как вы устанавливаете свою среду параллельных вычислений, применимые решатели автоматически используют параллельные вычисления каждый раз, когда вы вызываете их с options
.
Чтобы остановить вычислительную оптимизацию параллельно, установите UseParallel
к false
, или набор приложение Оптимизации, чтобы не вычислить параллельно. Чтобы остановить весь параллельный расчет, войти
delete(gcp)
Иметь patternsearch
ищите функциональный запуск параллельно или гибридную функцию для ga
или simulannealbnd
запуститесь параллельно, сделайте следующее.
Настройте параллельную обработку как описано в Сети Процессора или Многоядерных процессорах.
Убедитесь, что вашей поисковой функциональной или гибридной функции обрисовали в общих чертах условия в этих разделах:
patternsearch
использует параллельную поисковую функцию при следующих условиях:
UseCompleteSearch
true
.
Методом поиска не является @searchneldermead
или custom
.
Если методом поиска является patternsearch
опросите метод или латинский поиск гиперкуба, UseParallel
true
. Установите в командной строке с optimoptions
:
options = optimoptions('patternsearch','UseParallel',true,... 'UseCompleteSearch',true,'SearchFcn',@GPSPositiveBasis2N);
Или можно использовать приложение Оптимизации.
Если методом поиска является ga
, опция метода поиска имеет UseParallel
установите на true
. Установите в командной строке с optimoptions
:
iterlim = 1; % iteration limit, specifies # ga runs gaopt = optimoptions('ga','UseParallel',true); options = optimoptions('patternsearch','SearchFcn',... {@searchga,iterlim,gaopt});
В приложении Оптимизации сначала создайте gaopt
как выше, и затем используют эти настройки:
Для получения дополнительной информации о поисковых функциях, смотрите Используя Метод поиска.
ga
, particleswarm
, и simulannealbnd
могли выполняться после других решателей или вкрапленный их итерациями. Эти другие решатели вызваны гибридные функции. Для получения информации об использовании гибридной функции с gamultiobj
, смотрите Параллельные вычисления с gamultiobj. Оба patternsearch
и fmincon
могут быть гибридные функции. Можно установить опции так, чтобы patternsearch
запуски параллельно или fmincon
оценочные градиенты параллельно.
Установите опции для гибридной функции как описано в Гибридных Функциональных Опциях для ga
, Гибридная функция для particleswarm
, или гибридные функциональные опции для simulannealbnd
. Подводить итог:
Если вашей гибридной функцией является patternsearch
Создайте patternsearch
опции:
hybridopts = optimoptions('patternsearch','UseParallel',true,... 'UseCompletePoll',true);
Установите ga
или simulannealbnd
опции, чтобы использовать patternsearch
как гибридная функция:
options = optimoptions('ga','UseParallel',true); % for ga options = optimoptions('ga',options,... 'HybridFcn',{@patternsearch,hybridopts}); % or, for simulannealbnd: options = optimoptions(@simulannealbnd,'HybridFcn',{@patternsearch,hybridopts});
Или используйте приложение Оптимизации.
Для получения дополнительной информации о параллельном patternsearch
, смотрите Поиск Шаблона.
Если вашей гибридной функцией является fmincon
:
Создайте fmincon
опции:
hybridopts = optimoptions(@fmincon,'UseParallel',true,... 'Algorithm','interior-point'); % You can use any Algorithm except trust-region-reflective
Установите ga
или simulannealbnd
опции, чтобы использовать fmincon
как гибридная функция:
options = optimoptions('ga','UseParallel',true); options = optimoptions('ga',options,'HybridFcn',{@fmincon,hybridopts}); % or, for simulannealbnd: options = optimoptions(@simulannealbnd,'HybridFcn',{@fmincon,hybridopts});
Или используйте приложение Оптимизации.
Для получения дополнительной информации о параллельном fmincon
, смотрите Параллельные вычисления (Optimization Toolbox).
Чтобы протестировать видят, запускается ли проблема правильно параллельно,
Попробуйте свою проблему ни с чем не сравнимый расчет, чтобы гарантировать, что это запускается правильно последовательно. Убедитесь, что это успешно (дает правильные результаты) прежде, чем идти в следующий тест.
Установите UseParallel
к true
, и гарантируйте, что нет никакого параллельного пула с помощью delete(gcp)
. Снимите флажок с Automatically create a parallel pool в Home > Parallel > Parallel Preferences, таким образом, MATLAB не создает параллельный пул. Ваша проблема запускает parfor
последовательно, с итерациями цикла в обратном порядке от for
цикл. Убедитесь, что это успешно (дает правильные результаты) прежде, чем идти в следующий тест.
Установите UseParallel
к true
, и создайте параллельный пул с помощью parpool
. Если у вас не будет многоядерного процессора или настроенной сети, вы не будете видеть ускорения. Это тестирование должно просто проверить правильность расчетов.
Не забудьте вызывать свой решатель с помощью аргумента опций, чтобы протестировать или использовать параллельную функциональность.