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

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

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

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

  • Войти

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

    parpool('local')

    Примечание

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

    • Для использования командной строки войти

      options = optimoptions('solvername','UseParallel',true);
    • Для приложения Оптимизации проверяйте Options > Approximated derivatives > Evaluate in parallel.

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

Чтобы остановить вычислительную оптимизацию параллельно, установите UseParallel на false или установите приложение Оптимизации не вычислять параллельно. Чтобы остановить все параллельное вычисление, войти

delete(gcp)

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

Если у вас есть несколько процессоров в сети, используйте функции Parallel Computing Toolbox и программное обеспечение MATLAB Parallel Server™, чтобы установить параллельное вычисление. Вот шаги, чтобы взять:

  1. Убедитесь, что ваша система сконфигурирована правильно для параллельных вычислений. Согласуйте со своим системным администратором или обратитесь к документации Parallel Computing Toolbox.

    Выполнять основную проверку:

    1. В командной строке войти

      parpool(prof)
      где prof является вашим кластерным профилем.

    2. Рабочие должны смочь получить доступ к вашему файлу целевой функции и, если применимо, вашему нелинейному ограничительному файлу функции. Существует два способа гарантировать доступ:

      1. Распределите файлы рабочим, использующим аргумент parpool AttachedFiles. Например, если objfun.m является вашим файлом целевой функции, и constrfun.m является вашим нелинейным ограничительным файлом функции, войти

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

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

      2. Дайте путь к сетевому файлу к своим файлам. Если network_file_path является сетевым путем к вашей цели или ограничительным файлам функции, войти

        pctRunOnAll('addpath network_file_path')

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

    3. Проверяйте, является ли файл на пути каждого рабочего путем ввода

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

    • Для использования командной строки войти

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

      где 'solvername' представляет один из нелинейных решателей та оценка параллели поддержки.

    • Для приложения Оптимизации проверяйте Options > Approximated derivatives > Evaluate in parallel.

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

Чтобы остановить вычислительную оптимизацию параллельно, установите UseParallel на false или установите приложение Оптимизации не вычислять параллельно. Чтобы остановить все параллельное вычисление, войти

delete(gcp)

Разверните параллельную оптимизацию

Если вы развертываете код, который вызывает решатель оптимизации, и хотят, чтобы решатель использовал параллельные вычисления, гарантировал, что вы явным образом создаете параллельный пул в своем коде. В противном случае развернутый код может не запуститься параллельно, и так запускается только в сериале, потому что анализ зависимостей MATLAB Compiler™ может не сделать параллельную функциональность доступной. Например, вызовите parpool явным образом, в дополнение к установке опции UseParallel решателя к true.

Тестирование параллельных вычислений

Чтобы протестировать видят, запускается ли проблема правильно параллельно,

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

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

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

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

Похожие темы