前へ  次へ

モジュール特殊関数


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

  1. アドレス変換関数:

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

    1. int l2g_x(vios_value, num)

      vios_valueのx軸における、ローカルindex numを、全体データでのindexに変換します。(local to global)

    2. int l2g_y(vios_value, num)

      上記関数のy軸版。vsImage、vsCube変数のみ利用可能です。

    3. int l2g_z(vios_value, num)

      上記関数のz軸版。vsCube変数のみ利用可能です。

    4. int g2l_x(vios_value, num)

      vios_valueのx軸における、グローバルindex num を、ローカルデータでのindexに変換します。(global to local)

    5. int g2l_y(vios_value, num)

      上記関数のy軸版。vsImage、vsCube変数のみ利用可能です。

    6. int g2l_z(vios_value, num)

      上記関数のz軸版。vsCube変数のみ利用可能です。


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

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

    1. int orig_width(vios_value)

      vios_value全体における、x軸方向のローカル最大値を得ます。

    2. int orig_heigh(vios_value)

      vios_value全体における、y軸方向の最大値を得ます。

    3. int orig_depth(vios_value)

      vios_value全体における、z軸方向の最大値を得ます。

    4. int local_width(vios_value)

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

    5. int local_heigh(vios_value)

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

    6. int local_depth(vios_value)

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

    7. int local_min_x(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最小x値を得ます。

    8. int local_max_x(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最大x値を得ます。

    9. int local_min_y(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最小y値を得ます。

    10. int local_max_y(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最大y値を得ます。

    11. int local_min_z(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最小z値を得ます。

    12. int local_max_z(vios_value)

      ローカル計算機が保有する、vios_valueに対して、処理を行うワーキングセットのローカル最大z値を得ます。


  3. VIOS変数のコピー:

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

    1. void ValCopy(vios_value1,vios_value2)

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

    2. void ImgCopy(vios_value1,vios_value2)

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

    3. void CubeCopy(vios_value1,vios_value2)

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


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

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

    1. void vsSetBoundary1D(num)

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

    2. void vsSetBoundary2D(num)

      上記関数の2次元版

    3. void vsSetBoundary3D(num)

      上記関数の3次元版

      example:

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

    4. void vsSync()

      全計算機間において同期が取られます。

    5. void vsSyncCache(vios_value)

      vios_valueにおけるキャッシュ領域を最新のものに更新します。またこの際、全計算機間において同期が取られます。

    6. vsUnion(vios_value, TYPE)

      指定したTYPEによりvios_valueの統合を行います。

      なお、vios_valueは分割タイプとしてALLが指定されていることを前提とします。

    7. vsVote(vios_value, int pos, value)

      vios_valueのindex pos に値 value を代入します。(ただし、vios_value は1次元,かつ分割タイプはALLである必要があります) また、vsUnion(vios_value,vsAGGRIGATE)を行うまで値valueの反映はされません。


  5. user_comm命令:

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

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

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

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

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

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

    なおこれら命令の使用例は、サンプルdp_matchingを参照してください。


前へ  次へ