next up previous
: VIOS変数 : プログラミングモデル : ワーキングセット


並列処理構文

VIOSでは,任意のワーキングセットに対する処理を,以下に示すparallel構文を 利用し記述することにより,全ワーキングセットに対する処理を並列に行うプロ グラミング,および実行スタイルを従来より定義している.

  1. 各ワーキングセット間に順序関係の無い場合

     parallel$<$WSサイズ, ...$>$ (index変数, ...) {    
        /********  本文  *********/
     }

    まず引数について,$< および >$に囲まれた,第1引数となる WSサイズは,1ワーキングセットに含まれる要素の数を示す. これは,あるデータ``ブロック''を1ワーキングセットとして扱う場合 に利用する.

    次に,$( および )$に囲まれた,第2引数となるindex変数は, 並列処理中,各ワーキングセットが自身を特定するための変数名を指定 するもので,任意の名前(事前に宣言されている必要はない)が利用可 能である.

    また並列処理のベースとなる変数は,以下に従い決定される.

     

  2. 各ワーキングセット間に順序関係がある場合
    (または通信 により各処理単位の処理時間に大きな差が存在する場合)

     parallel_ie$<$WSサイズ, ...$>$(index変数, ...) {    
        /********  本文  *********/
      }

    こちらの並列処理構文は,全てのワーキングセットを同等に扱うことが 出来ない場合に利用する.具体的には,

    場合に利用する.

    なお詳しい書式に関しては,以下の制約は加わるが,基本的な書式は parallel構文のものと同様である.

example:

   vs_module sample(iImage data1, iImage data2) {     
       parallel<2,3>(lx, ly) {
           if((lx == 0) && (ly == 0)) ....

        } ....

この例では,2次元変数に対するparallel構文を利用している. parallel構文内では,モジュール sample()の最初の引数であるVIOS変 数data1をベース変数とし,各次元の識別変数には lx, lyという名前を利用して いる.また,各ワーキングセットの大きさは$2 \times 3$ピクセルとなる.



Tomohide Kawawaki 平成14年3月22日