Main Content

spmdIndex

spmd ブロックにおける現在のワーカーのインデックス

    説明

    id = spmdIndex は、spmd ブロックまたは通信ジョブ内で関数を現在実行しているワーカーのインデックスを返します。ワーカーが spmd ブロックを実行するか通信ジョブが実行を開始すると、各ワーカーに一意のインデックスが割り当てられます。

    spmdIndex の値は、1 から現在の spmd ブロックまたは通信ジョブで実行されているワーカーの数までの整数です。現在の spmd ブロックを実行しているワーカーの数を取得するには、関数 spmdSize を使用します。

    ワーカーには、並列プールの利用期間にわたり、各 spmd ブロック内で同じ値 id が与えられます。

    すべて折りたたむ

    spmd ブロックにおけるワーカーのインデックスを表示します。

    p = parpool('Threads',2);
    spmd
        spmdIndex
    end
    
    Worker 1: 
             1
      
    Worker 2: 
            2

    2 つのワーカーがある同一のプール p で実行される parpool ループにおけるワーカーのインデックスを表示します。

    parfor a=1:4
        [a,spmdIndex]
    end
    ans =
         3     1
    ans =
         2     1
    ans =
         1     1
    ans =
         4     1
    

    出力引数

    すべて折りたたむ

    現在のワーカーのインデックス。正の整数として指定します。この入力の値は、現在の spmd ブロックまたは通信ジョブにおける関数 spmdSize の出力以下でなければなりません。

    ヒント

    spmd ブロックでは、ユーザーはすべてのワーカーに個別にアクセスしてワーカーでの実行対象の制御を行うことができるため、各ワーカーには一意のインデックスがあります。

    ただし、parfor ループ内では spmdIndex は、すべての反復のすべてのワーカーに必ず値 1 を返します。

    拡張機能

    バージョン履歴

    R2022b で導入