В этом примере показано, как создать код C для алгоритма MATLAB ®, содержащего parfor-луп.
Запись функции 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
Создать код C для test_parfor. В командной строке MATLAB введите:
codegen -config:lib test_parfor
Поскольку максимальное число используемых потоков не указано, созданный код C выполняет итерации цикла параллельно с доступным количеством ядер.
Чтобы указать максимальное количество потоков, перепишите функцию 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
Создать код C для test_parfor. Использовать -args 0 чтобы указать, что входные данные, u, является скалярным двойником. В командной строке MATLAB введите:
codegen -config:lib test_parfor -args 0
В созданном коде итерации parfor-закольцовывание выполняется не более чем по количеству ядер, указанному входом, u. Если меньше u ядра доступны, итерации выполняются на ядрах, доступных во время вызова.