Можно записать портативный параллельный код, который автоматически использует параллельные ресурсы, если вы используете Parallel Computing Toolbox™, и это все еще запустится, если у вас не будет Parallel Computing Toolbox.
Эта тема покрывает как к:
Запишите портативный параллельный код, который запускается в последовательном ни с чем не сравнимом Вычислительном Тулбоксе.
Запишите код, который запускает в фоновом режиме ни с чем не сравнимый Вычислительный Тулбокс и использует больше параллельных ресурсов, если у вас есть Parallel Computing Toolbox.
Запишите пользовательский портативный параллельный код, который запускает в фоновом режиме ни с чем не сравнимый Вычислительный Тулбокс и использует больше параллельных ресурсов, если у вас есть Parallel Computing Toolbox.
Можно запустить следующие функции языка параллельного программирования в последовательном ни с чем не сравнимом Вычислительном Тулбоксе:
Чтобы записать портативный параллельный код, спроектированный, чтобы использовать параллельные пулы или кластеры, если у вас есть Parallel Computing Toolbox, используйте синтаксисы языка параллельного программирования с автоматической параллельной поддержкой. Эти синтаксисы запускаются в сериале, если у вас нет Parallel Computing Toolbox.
Чтобы записать портативный параллельный код, который автоматически запускается в сериале, если у вас нет Parallel Computing Toolbox, не задавайте аргумент пула для этих функций языка.
Как лучшая практика, задайте аргумент пула для функциональности Parallel Computing Toolbox, только если необходимо задать среду, чтобы запустить код. Если вы не задаете аргумент пула для параллельной функциональности, запусков функциональности:
В сериале, если одно из следующего применяется:
У вас нет Parallel Computing Toolbox
У вас нет параллельного пула, в настоящее время открываются, и вам не включили автоматическое создание пула
На параллельном пуле, если у вас есть Parallel Computing Toolbox и если одно из следующего применяется:
У вас есть параллельный пул, в настоящее время открываются
Вам включили автоматическое создание пула
Если у вас нет параллельного пула, открытое и автоматическое создание пула включено, вы открываете пул с помощью кластерного профиля по умолчанию. Для получения дополнительной информации об установке вашего кластерного профиля по умолчанию смотрите, Обнаруживают Кластеры и Профили Кластера Использования.
Использование parfeval
без пула, чтобы асинхронно запустить magic(3)
и возвратите один выходной параметр. Функция запускается в сериале, если у вас нет Parallel Computing Toolbox.
f = parfeval(@magic,1,3)
Используйте a parfor
- цикл без пула, чтобы запустить magic
с различными матричными размерами. Цикл запускается в сериале, если у вас нет Parallel Computing Toolbox.
parfor i = 1:10 A{i} = magic(i); end
Для получения информации о синтаксисах языка параллельного программирования, которые запускаются в последовательном ни с чем не сравнимом Вычислительном Тулбоксе, смотрите, Идут параллельно Язык в Последовательном.
backgroundPool
Если у вас есть Parallel Computing Toolbox, ваш код, который использует backgroundPool
автоматически масштабирует, чтобы использовать более доступные ядра.
Для получения дополнительной информации о ваших вычислениях в фоновом режиме автоматически увеличение масштаба, смотрите функции MATLAB Запуска в Основанной на потоке Среде.
parfor
- цикл на фоновом пулеМожно использовать parforOptions
запускать parfor
- цикл на фоновом пуле.
Примечание
Когда вы запускаете parfor
- цикл с помощью фонового пула, MATLAB® приостанавливает выполнение, пока цикл не закончен. Когда код все еще запускается в фоновом режиме, можно использовать только функциональность, которая поддерживается в основанной на потоке среде.
Когда вы запускаете несколько функций в фоновом режиме с помощью parfeval
и backgroundPool
, ваш код масштабирует, чтобы использовать более доступные ядра. Использование parfeval
запускаться rand
в фоновом режиме 20
\times.
for i = 1:20 f(i) = parfeval(backgroundPool,@rand,1); end
Запускать parfor
- цикл в фоновом режиме, задать backgroundPool
в качестве аргумента пула для parforOptions
, затем используйте результат в качестве opts
аргументы для parfor
.
parfor (loopVal = initVal:endVal, parforOptions(backgroundPool)) statements end
Если вы пишете портативный параллельный код, который может автоматически использовать параллельные ресурсы, если у вас есть Parallel Computing Toolbox, вы создаете портативный параллельный код с нижеследующими ограничениями:
Вы не можете автоматически запустить ThreadPool
запускать ваш параллельный код
Ваш код запускается в сериале, если у вас нет Parallel Computing Toolbox
selectPool
функция ниже возвратов или фоновый пул или параллельный пул. Можно использовать selectPool
в качестве аргумента пула с функциями языка параллельного программирования такой как parfeval
и parforOptions
. Если вы имеете Parallel Computing Toolbox и имеете автоматическое параллельное включенное создание пула, функция возвращает параллельный пул. В противном случае это возвращает фоновый пул.
function pool = selectPool if canUseParallelPool pool = gcp; else pool = backgroundPool; end end