coder.gpu.iterations

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

Описание

пример

coder.gpu.iterations(AVG_NUM_ITER) прагма может использоваться, чтобы задать среднее количество итераций (AVG_NUM_ITER) для ограниченного переменной for- цикл, который сразу следует за ним. Это значение используется, чтобы обеспечить эвристику к принятию решений распараллеливания для несовершенных циклов. Эта прагма не влияет на фиксировано-ограниченный for- циклы.

Это - функция генерации кода. Это не оказывает влияния в MATLAB®.

Примеры

свернуть все

В этом примере показано, как использовать coder.gpu.iterations прагма, чтобы увеличить информацию, используемую генератором кода, чтобы принять решения распараллеливания.

Считайте следующую функцию точки входа MATLAB myFun содержа простой вложенный цикл.

function [a, c] = myFun(b, N1)

coder.gpu.kernelfun();
a = coder.nullcopy(zeros(1, N1));
c = coder.nullcopy(b);

for i = 1:N1             % Loop1
    a(i) = 1;
    
    for j = 1:20          % Loop2
        c(i,j) = 2 * b(i,j);
    end
end

end

В этом случае, Loop 1 несовершенный цикл, препятствуя тому, чтобы генератор кода параллелизировал внешний контур Loop 1.

Измените функцию точки входа при помощи coder.gpu.iterations прагма, чтобы сообщить генератору кода среднее количество итераций, что цикл, как ожидают, выполнится.

function [a, c] = myFun(b, N1)

coder.gpu.kernelfun();
a = coder.nullcopy(zeros(1, N1));
c = coder.nullcopy(b);

coder.gpu.iterations(25); % AVG_NUM_ITER
for i = 1:N1             % Loop1
    a(i) = 1;
    
    for j = 1:20          % Loop2
        c(i,j) = 2 * b(i,j);
    end
end

end

Цикл 1 параллелизируется когда AVG_NUM_ITER > 20 (Связанный Loop2) независимо от значения N1.

Входные параметры

свернуть все

Задайте среднее количество итераций (AVG_NUM_ITER) для ограниченного переменной for- цикл, который сразу следует за coder.gpu.iterations прагма.

Введенный в R2019a