exponenta event banner

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

В этом примере показано, как создать код C для алгоритма 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. Создать код C для 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. Создать код C для test_parfor. Использовать -args 0 чтобы указать, что входные данные, u, является скалярным двойником. В командной строке MATLAB введите:

    codegen -config:lib test_parfor -args 0 

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

Связанные темы