Использование параллельных вычислений в Optimization Toolbox

Использование параллельных вычислений с многоядерными процессорами

Если у вас есть многоядерный процессор, можно увеличить скорость обработки при помощи параллельной обработки. Можно создать параллельный пул из нескольких работников с лицензией Parallel Computing Toolbox™. Описание программного обеспечения Parallel Computing Toolbox смотрите в Запуск с Parallel Computing Toolbox (Parallel Computing Toolbox).

Предположим, у вас есть двухъядерный процессор, и вы хотите использовать параллельные вычисления. Введите этот код в командной строке.

parpool

MATLAB® запускает пул рабочих процессов, использующих многоядерный процессор. Если вы ранее установили профиль кластера без параметров, можно применить многоядерные (локальные) вычисления, введя этот код.

parpool('local')

Примечание

В зависимости от ваших настроек MATLAB может автоматически запустить параллельный пул. Чтобы включить эту функцию, выберите Parallel > Parallel Preferences в группе Environment на вкладке Home, а затем выберите Automatically create a parallel pool.

Установите опции решателя, чтобы использовать параллельные вычисления.

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.

  1. Выполните базовую проверку путем ввода этого кода, где prof - ваш профиль кластера.

    parpool(prof)
  2. Работники должны иметь возможность доступа к файлу целевой функции и, если применимо, к нелинейным файлам функции ограничений. Выполните один из следующих шагов, чтобы гарантировать доступ:

    • Распространите файлы среди работников, используя parpool (Parallel Computing Toolbox) AttachedFiles аргумент. В этом примере objfun.m Ваш объективный файл функции, и constrfun.m является вашим нелинейным ограничением файл функции.

      parpool('AttachedFiles',{'objfun.m','constrfun.m'});

      Работники получают доступ к собственным копиям файлов.

    • Задайте путь к сетевому файлу для ваших целевых или ограничительных файлов функции.

      pctRunOnAll('addpath network_file_path')

      Рабочие получают доступ к файлам функции по сети.

  3. Проверьте, указан ли файл в пути каждого работника.

    pctRunOnAll('which filename')
    Если какой-либо рабочий процесс не имеет пути к файлу, он сообщает
    filename not found.

Установите опции решателя, чтобы задать с помощью параллельных вычислений. Аргумент 'solvername' представляет нелинейный решатель, который поддерживает параллельную оценку.

options = optimoptions('solvername','UseParallel',true);

После того, как вы установили своё параллельное вычислительное окружение, применимые решатели автоматически используют параллельные вычисления всякий раз, когда вы вызываете их с options.

Чтобы остановить вычисление оптимизации параллельно, установите UseParallel на false. Чтобы остановить все параллельные расчеты, введите этот код.

delete(gcp)

Примечание

Документация рекомендует не использовать parfor или parfeval при вызове Simulink; см. Использование функции sim в parfor (Simulink). Поэтому вы можете столкнуться с проблемами при оптимизации параллельной симуляции Simulink с помощью встроенной параллельной функциональности решателя.

Проверка параллельных расчетов

Выполните следующие действия, чтобы проверить, правильно ли ваша проблема запускается параллельно.

  1. Попробуйте свою задачу без параллельных расчетов, чтобы убедиться, что она запускается последовательно. Убедитесь, что этот тест успешен (дает правильные результаты), прежде чем переходить к следующему тесту.

  2. Задайте UseParallel на true, и убедитесь, что никакого параллельного пула не существует путем ввода delete(gcp). Чтобы убедиться, что MATLAB не создает параллельный пул, выберите Parallel > Parallel Preferences в группе Environment на вкладке Home, а затем очистите Automatically create a parallel pool. Ваша задача запускается parfor последовательно, с итерациями цикла в обратном порядке от a for цикл. Убедитесь, что этот тест успешен (дает правильные результаты), прежде чем переходить к следующему тесту.

  3. Задайте UseParallel на true, и создать параллельный пул, используя parpool. Если у вас нет многоядерного процессора или сети, этот тест не увеличивает скорость обработки. Это тестирование просто для проверки правильности расчетов.

Не забудьте вызвать решатель с помощью options аргумент для тестирования или использования параллельных функций.

Похожие темы