exponenta event banner

coder.gpu.iterations

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

Описание

пример

coder.gpu.iterations(AVG_NUM_ITER) pragma может использоваться для указания среднего числа итераций (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 bound) независимо от значения N1.

Входные аргументы

свернуть все

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

Представлен в R2019a