Сгенерируйте код с параллельными циклами for (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 доступны, итерации работают на ядрах, доступных во время вызова.

Похожие темы

Была ли эта тема полезной?