coder.gpu.iterations

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

Описание

пример

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

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

Примеры

свернуть все

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

Рассмотрите следующую функцию точки входа 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 pragma, чтобы сообщить генератору кода среднее количество итераций, которые должен выполнить цикл.

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