parfor
ループ内のスレッドの最大数の指定
この例は、parfor
ループに使用するスレッドの最大数を指定する方法を示しています。使用するスレッドの最大数を指定するため、生成された MEX 関数はループの反復を、指定した最大数までの使用できる限り多くのコア上で並列に実行します。使用可能なコア数以上のスレッド数を指定した場合、MEX 関数は使用可能なコアを使用します。
MATLAB® 関数
specify_num_threads
を記述します。この関数は、1 つの入力を使用して、生成された MEX 関数でparfor
ループを実行するための最大スレッド数を指定します。以下に例を示します。function y = specify_num_threads(u) %#codegen y = ones(1,100); % u specifies maximum number of threads parfor (i = 1:100,u) y(i) = i; end end
specify_num_threads
の MEX 関数を生成します。-args {0}
を使用して、入力u
がスカラーの double であることを指定します。-report
を使用して、コード生成レポートを生成します。MATLAB コマンド ラインで次のように入力します。codegen -report specify_num_threads -args {0}
codegen
は現在のフォルダーに MEX 関数specify_num_threads_mex
を生成します。4 つのスレッド上で並列に実行することを試行するように指定して、MEX 関数を実行します。MATLAB コマンド ラインで次のように入力します。
specify_num_threads_mex(4)
生成された MEX 関数は最大 4 つのコアで実行されます。使用可能なコアが 4 つに満たない場合、MEX 関数は呼び出し時に使用可能な最大数のコア上で実行します。