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

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

  1. Запишите функцию MATLAB, которая содержит a 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 ядра доступны, итерации работают на ядрах, доступных во время вызова.

Похожие темы