exponenta event banner

Укажите максимальное количество потоков в parfor- Петли

В этом примере показано, как задать максимальное количество потоков для parfor-луп. Поскольку указано максимальное количество используемых потоков, созданная функция MEX выполняет итерации цикла параллельно на любом количестве ядер, вплоть до указанного максимального количества. Если указано больше потоков, чем доступно ядер, функция MEX использует доступные ядра.

  1. Напишите функцию 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
    

  2. Создание функции MEX для specify_num_threads. Использовать -args {0} для указания входных данных u является скалярным двойником. Использовать -report для создания отчета о создании кода. В командной строке MATLAB введите:

    codegen -report specify_num_threads -args {0}
    codegen генерирует функцию MEX, specify_num_threads_mex, в текущей папке.

  3. Запустите функцию MEX, указав, что она пытается работать параллельно на четырех потоках. В командной строке MATLAB введите:

    specify_num_threads_mex(4)

    Созданная функция MEX работает на четырех ядрах. Если доступно менее четырех ядер, функция MEX работает на максимальном количестве ядер, доступном во время вызова.