Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

coder.gpu.iterations

変数範囲ループの並列化を判定するための情報をコード ジェネレーターに提供するプラグマ

説明

coder.gpu.iterations(AVG_NUM_ITER) プラグマは、その直後の可変範囲 for ループの平均反復回数 (AVG_NUM_ITER) を指定するために使用できます。この値は、不完全なループでの並列化の判定に対してヒューリスティックな方法を提供するために使用されます。このプラグマは固定範囲 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

N1 の値に関係なく、Loop 1 は AVG_NUM_ITER > 20 (Loop2 の範囲) の場合に並列化されます。

入力引数

すべて折りたたむ

coder.gpu.iterations プラグマの直後に続く可変範囲 for ループの平均反復回数 (AVG_NUM_ITER) を指定します。

R2019a で導入