並列 for ループ (parfor) を使用するコードの生成
この例は、parfor
ループを含む MATLAB® アルゴリズムの C コードを生成する方法を示しています。
parfor
ループを含む MATLAB 関数を記述します。次に例を示します。function a = test_parfor %#codegen a=ones(10,256); r=rand(10,256); parfor i=1:10 a(i,:)=real(fft(r(i,:))); end
test_parfor
の C コードを生成します。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
test_parfor
の C コードを生成します。-args 0
を使用して、入力u
がスカラーの double であることを指定します。MATLAB コマンド ラインで次のように入力します。codegen -config:lib test_parfor -args 0
生成コードで、多くても入力
u
で指定されたコア数でparfor
ループの反復処理が実行されます。使用可能なコアがu
個に満たない場合、呼び出し時に使用可能なコア上で反復処理が実行されます。