В интерактивном режиме запустите цикл в параллели Используя parfor

В этом примере вы запускаете с медленного for - цикл, и вы ускоряете вычисление с помощью parfor - цикл вместо этого. parfor разделяет выполнение for - итерации цикла по рабочим в параллельном пуле.

Этот пример вычисляет спектральный радиус матрицы и преобразовывает for - цикл в parfor - цикл. Узнайте, как измерить получившееся ускорение.

  1. В Редакторе MATLAB® введите следующий for - цикл. Добавьте tic, и toc, чтобы измерить время протек.

    tic
    n = 200;
    A = 500;
    a = zeros(n);
    for i = 1:n
        a(i) = max(abs(eig(rand(A))));
    end
    toc
  2. Запустите скрипт и отметьте прошедшее время.

    Elapsed time is 31.935373 seconds.

  3. В скрипте замените for - цикл с parfor - цикл.

    tic
    n = 200;
    A = 500;
    a = zeros(n);
    parfor i = 1:n
        a(i) = max(abs(eig(rand(A))));
    end
    toc

  4. Запустите новый скрипт и запустите его снова. Обратите внимание на то, что первый показ медленнее, чем второе выполнение, потому что параллельный пул занимает время, чтобы запустить и сделать код доступным для рабочих. Отметьте прошедшее время вторым выполнением.

    По умолчанию MATLAB автоматически открывает параллельный пул рабочих на вашей локальной машине.

    Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.
    ...
    Elapsed time is 10.760068 seconds. 
    parfor работает на четырех рабочих, приблизительно в три раза быстрее, чем соответствующий for - запущенный цикл. Ускорение меньше, чем идеальное ускорение фактора четыре на четырех рабочих. Это должно быть параллельным наверху, включая время, требуемое передавать данные от клиента рабочим и назад. Этот пример показывает хорошее ускорение с относительно маленькой параллелью наверху и извлекает выгоду из преобразования в parfor - цикл. Не весь for - итерации цикла могут быть превращены в более быстрый parfor - циклы. Чтобы узнать больше, смотрите, Решают, Когда Использовать parfor.

Одно ключевое требование для использования parfor - циклы - то, что отдельные итерации должны быть независимыми. Независимые проблемы, подходящие для обработки parfor, включают развертки параметра и симуляции Монте-Карло. Для следующих шагов смотрите, Преобразовывают циклы for В циклы parfor.

В этом примере, вы управляемый, чтобы ускорить вычисление путем преобразования for - цикла в parfor - цикл на четырех рабочих. Вы можете уменьшать прошедшее время далее путем увеличения числа рабочих в параллельном пуле, видеть, Увеличивают циклы parfor, чтобы Кластеризироваться и Объединиться в облако.

Можно изменить кластерные профили, чтобы управлять, сколько рабочих запускает циклы, и локальны ли рабочие или на кластере. Для получения дополнительной информации о профилях смотрите, Обнаруживают Кластеры и Профили Кластера Использования.

Измените свои параллельные настройки, чтобы управлять, автоматически создан ли параллельный пул, и сколько времени это остается доступным перед таймаутом. Для получения дополнительной информации о настройках смотрите, Задают Ваши Параллельные Настройки.

Можно запустить модели Simulink® параллельно с командой parsim вместо того, чтобы использовать parfor - циклы. Для получения дополнительной информации и примеры использования Simulink параллельно, смотрите Выполнение Несколько Симуляций (Simulink).

Смотрите также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте