parfor
- циклыЭтот пример показывает, как задать максимальное количество потоков, чтобы использовать для parfor
- цикл. Поскольку вы задаете максимальное количество потоков, чтобы использовать, сгенерированная MEX-функция выполняет итерации цикла параллельно на стольких же ядер сколько доступный до максимального количества, которое вы задаете. Если вы задаете больше потоков, чем существуют доступные ядра, MEX-функция использует доступные ядра.
Запишите функцию MATLAB®, specify_num_threads
, который использует входной параметр того, чтобы задать максимальное количество потоков, чтобы выполнить parfor
- цикл в сгенерированной MEX-функции. Например:
function y = specify_num_threads(u) %#codegen y = ones(1,100); % u specifies maximum number of threads parfor (i = 1:100,u) y(i) = i; end end
Сгенерируйте MEX-функцию для specify_num_threads
. Используйте -args {0}
, чтобы указать, что входной параметр u
является скаляром дважды. Используйте -report
, чтобы сгенерировать отчет генерации кода. В командной строке MATLAB войдите:
codegen -report specify_num_threads -args {0}
codegen
генерирует MEX-функцию, specify_num_threads_mex
, в текущей папке.Запустите MEX-функцию, указав, что она пытается запуститься параллельно на четырех потоках. В командной строке MATLAB войдите:
specify_num_threads_mex(4)
Сгенерированная MEX-функция работает на четырех ядрах. Если меньше чем четыре ядра доступны, MEX-функция работает на максимальном количестве ядер, доступных во время вызова.