Main Content

parfor ループ内のスレッドの最大数の指定

この例は、parfor ループに使用するスレッドの最大数を指定する方法を示しています。使用するスレッドの最大数を指定するため、生成された MEX 関数はループの反復を、指定した最大数までの使用できる限り多くのコア上で並列に実行します。使用可能なコア数以上のスレッド数を指定した場合、MEX 関数は使用可能なコアを使用します。

  1. 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
    

  2. specify_num_threads の MEX 関数を生成します。-args {0} を使用して、入力 u がスカラーの double であることを指定します。-report を使用して、コード生成レポートを生成します。MATLAB コマンド ラインで次のように入力します。

    codegen -report specify_num_threads -args {0}
    codegen は現在のフォルダーに MEX 関数 specify_num_threads_mex を生成します。

  3. 4 つのスレッド上で並列に実行することを試行するように指定して、MEX 関数を実行します。MATLAB コマンド ラインで次のように入力します。

    specify_num_threads_mex(4)

    生成された MEX 関数は最大 4 つのコアで実行されます。使用可能なコアが 4 つに満たない場合、MEX 関数は呼び出し時に使用可能な最大数のコア上で実行します。