Сгенерируйте код с параллельными циклами для циклов (parfor)

В этом примере показано, как сгенерировать код С для MATLAB® алгоритм, который содержит parfor-цикл.

  1. Написание функции MATLAB, которая содержит parfor-цикл. Для примера:

    function a = test_parfor %#codegen
    a=ones(10,256);
    r=rand(10,256);
    parfor i=1:10
      a(i,:)=real(fft(r(i,:)));
    end
  2. Сгенерируйте код С для test_parfor. В командной строке MATLAB введите:

    codegen -config:lib test_parfor

    Поскольку вы не задали максимальное количество потоков для использования, сгенерированный код C выполняет итерации цикла параллельно с доступным количеством ядер.

  3. Чтобы задать максимальное количество потоков, перепишите функцию test_parfor следующим образом:

    function a = test_parfor(u) %#codegen
    a=ones(10,256);
    r=rand(10,256);
    parfor (i=1:10,u)
      a(i,:)=real(fft(r(i,:)));
    end
  4. Сгенерируйте код С для test_parfor. Использование -args 0 чтобы указать, что вход, u, является скалярным двойником. В командной строке MATLAB введите:

    codegen -config:lib test_parfor -args 0 

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

Похожие темы