next up previous
: 制限 : プログラミングモデル : VIOS変数

特殊関数

各ワーキングセットにおいて,境界条件などの例外処理,およびインデックス情 報などを得るために使用する関数群となる.

  1. アドレス変換関数:

    各計算機が持っている分割データ中でのindexと,統合された 全データにおけるindexの変換を行うための関数群となる.ア ドレスの絶対指定などの場合に利用する.

    1. int l2g_x(VIOS変数, num)

      VIOS変数x軸における,ローカルindex numを, 全体データでのindexに変換する(local to global).

    2. int l2g_y(VIOS変数, num)

      上記関数のy軸版.vsImage, vsCube変数のみ利用可能.

    3. int l2g_z(VIOS変数, num)

      上記関数のz軸版.vsCube変数のみ利用可能.  

    4. int g2l_x(VIOS変数, num)

      VIOS変数x軸における,グローバルindex num を,ローカルデータでのindexに変換する(global to local).

    5. int g2l_y(VIOS変数, num)

      上記関数のy軸版.vsImage, vsCube変数のみ利用可能.

    6. int g2l_z(VIOS変数, num)

      上記関数のz軸版.vsCube変数のみ利用可能.

     
  2. VIOS変数からの情報取得関数:

    VIOS変数における,幅や高さなどの全体の情報を得るための関数群.

    1. int orig_width(VIOS変数)

      VIOS変数全体における,x軸方向のローカル最大値を得る.

    2. int orig_heigh(VIOS変数)

      VIOS変数全体における,y軸方向の最大値を得る.

    3. int orig_depth(VIOS変数)

      VIOS変数全体における,z軸方向の最大値を得る.

    4. int local_width(VIOS変数)

      ローカル計算機が保有する,VIOS変数x軸方向の最大値 を得る(ただしキャッシュ領域を含む).

    5. int local_heigh(VIOS変数)

      ローカル計算機が保有する,VIOS変数y軸方向の最大値 を得る(ただしキャッシュ領域を含む).

    6. int local_depth(VIOS変数)

      ローカル計算機が保有する,VIOS変数z軸方向の最大値 を得る(ただしキャッシュ領域を含む).

    7. int local_min_x(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最小x値を 得る.

    8. int local_max_x(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最大x値を 得る.

    9. int local_min_y(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最小y値を 得る.

    10. int local_max_y(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最大y値を 得る.

    11. int local_min_z(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最小z値を 得る.

    12. int local_max_z(VIOS変数)

      ローカル計算機が保有する,VIOS変数に対して, ``処理を行う''ワーキングセットのローカル最大z値を 得る.

     
  3. VIOS変数のコピー:

    型全体のデータを同型式,同サイズの変数へコピーするための 関数(ただし,キャッシュ領域のデータも上書きされる).

    1. void ValCopy(VIOS変数1,VIOS変数2)

      vsvalue型(ivalue, fvalue)の変数2から変数1へ全データ領域を コピーする.

    2. void ImgCopy(VIOS変数1,VIOS変数2)

      vsImage型(iImage, fImage)の変数2から変数1へ全データ領域を コピーする.

    3. void CubeCopy(VIOS変数1,VIOS変数2)

      vsCube型(iCube, fCube)の変数2から変数1へ全データ領域をコピー する.

     
  4. 全体での処理や通信を制御する関数:

    特定ワーキングセットに対する処理の抑制や,キャッシュ領域の更新な どを行う関数.

    1. void vsSetBoundary1D(num)

      1次元parallel構文により並列処理を行う際,全体デー タでの外周numをその処理対象から外します.

    2. void vsSetBoundary2D(num)

      上記関数の2次元版

    3. void vsSetBoundary3D(num)

      上記関数の3次元版

      example:

      \includegraphics {data/set_boundary.eps}

      上記図は,2次元変数を4分割した場合のイメージしている.本来, 各計算機が担当する処理領域は,図中心の十文字で区切られた各 領域全てであるが,vsSetBoundaryにより,それぞれ,L字状に処 理を行わない領域が出来ている.

    4. void vsSync()

      全計算機間において同期が取られる.

    5. void vsSyncCache(VIOS変数)

      VIOS変数におけるキャッシュ領域を最新のものに更新 する.またこの際,全計算機間において同期が取られる.

    6. vsUnion(VIOS変数, TYPE)

      指定したTYPEによりVIOS変数の統合を行う. 詳しくはチュートリアル → モジュール特殊関数 を参照.

      なお,VIOS変数は分割タイプとしてALLが指定されてい ることを前提とする.

    7. vsVote(VIOS変数, int pos, value)

      VIOS変数のindex pos に値 val を代入する(ただし、VIOS変数 は1次元,かつ分割タイプはALLである必要あり)。 また, vsUnion(VIOS変数,vsAGGRIGATE)を行うまで値valの反映はない.

     
  5. user_comm命令:

    ワーキングセット間で値の交換を行うための関数.

    1. comm_in(相対アドレス1, ..., &入力変数)

      自身から相対アドレス指定されるワーキングセットよりデータを 入力変数に受信する.また処理はデータの入力がある までブロックされる.

      e.x) comm_in(-1, 0, &value);  相対座標(-1, 0)のワー キングセットから値を入力し,変数valueへ代入する.

    2. comm_out(相対アドレス1, ..., val)

      自身から相対アドレス指定されるワーキングセットへデータ valを 送信する.

    なおこれら命令の使用例は,サンプルdp_matchingを参照すること.


next up previous
: 制限 : プログラミングモデル : VIOS変数

Tomohide Kawawaki 平成14年3月22日