Используя параллельные вычисления в 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 аргумент, чтобы протестировать или использовать параллельную функциональность.

Похожие темы