XcalableMP
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/01 23:28 UTC 版)
ナビゲーションに移動 検索に移動| パラダイム | 並列計算、メッセージパッシング、命令形(手続き型言語)、構造化プログラミング | 
|---|---|
| 設計者 | PCクラスタコンソーシアム 並列プログラミング言語XcalableMP規格部会 | 
| 最新リリース | 1.4/ 2018年11月9日 | 
| 型付け | 弱い静的型付け | 
| 主な処理系 | Omni Compiler | 
| 影響を受けた言語 | High Performance Fortran、Co-array Fortran | 
| プラットフォーム | クロスプラットフォーム | 
| ウェブサイト | xcalablemp.org | 
XcalableMP、XMP は大規模な並列計算機上での高性能計算向けにC言語およびFortranを拡張して作られたプログラミング言語である[1]。
XMPの実行モデルはSPMDであり、その実行主体はノードと呼称する。 XMPは並列化の手段として、グローバルビューとローカルビューをユーザに提供している。 グローバルビューでは、テンプレートと呼ばれる仮想的なインデックス集合を用いて並列化を行う。 グローバルビューでは、OpenMPのように、プログラマは逐次コードに対して指示文を挿入することで、データのマッピング、ノード間のデータのread/write、ループ文の並列化などを行う。XMPの指示文のいくつかはHigh Performance Fortranの指示文を引き継いだものである。 ローカルビューでは、Co-array Fortranのように、ノード番号を指定してノード間のデータのread/writeを行う。なお、Fortran言語のXMPはCo-array Fortranの上位互換である。
例(グローバルビュー)
int a[20];
#pragma xmp template t[20]  /* 0から19までのテンプレートを定義 */
#pragma xmp nodes p[4]        /* ノード集合を定義 */
#pragma xmp distribute t[block] onto p  /* テンプレートをノード集合に分散させる */
#pragma xmp align a[i] with t[i]        /* 分散されたテンプレートと配列を関連付ける */
int main() {
#pragma xmp loop on t[i]   /* 分散されたテンプレートに従い、ループ文を各ノードで実行する */
for (int i = 0; i < 20; i++)
   a[i] = func(i);
  return 0;
}
 例(ローカルビュー)
#include <xmp.h>
#pragma xmp nodes p[4]        /* ノード集合を定義 */
int a[20]:[*];  /* Coarrayの定義 */
int main() {
  int me = xmpc_node_num();   /* 自身のノード番号を取得 */
 
  if (me == 1)
    a[0:20]:[3] = a[0:20];  /* ノード番号1は、自身が持つ配列aを、ノード番号3が持つ配列aにPUTする */
  return 0;
}
 関連項目
- High Performance Fortran
- Co-array Fortran
- Chapel
- X10 (プログラミング言語)
- 区分化大域アドレス空間
- 並列計算
- XcalableACC
- OpenACC
外部リンク
- 書籍、"XcalableMP PGAS Programming Language", Springer # オンライン版はフリー
脚注
- XcalableMPのページへのリンク

 
                             
                    


