Запишите портативный параллельный код

Можно записать портативный параллельный код, который автоматически использует параллельные ресурсы, если вы используете 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