>> English


実行モデル

概要

XMPアプリケーションは分散メモリシステム上で実行されることを想定しています.XMPでは処理の単位を「ノード」と呼び,メモリを共有する複数(もしくは1つの)のコアからなるノードが,ネットワークによって結合されているプラットフォームを対象としています.各ノードは他ノードから参照・更新できる固有のメモリ空間を持ちます.他のノードのメモリを参照・更新するためには,XMPが提供する指示文もしくはCoarray文を用いる必要があります.

XMPの実行モデルは,MPIと同様にSPMD(Single Program Multiple Data)です.各ノードで同じプログラムが同時に実行が開始され,XMP指示文やCoarray文により各ノードのプログラムは通信・同期を行います.それ以外の箇所は各ノードにおいて重複実行されることになります.

XMPでは並列アプリケーション作成のために,2種類のメモリモデルを提供しています.1つ目は「グローバルビューモデル」であり,XMP指示文を用いてノード間に跨る配列データを宣言し,各ノードで分散処理を行うことができます.2つ目は「ローカルビューモデル」であり,ノード番号を指定することによって,他のノードに配置されたデータを簡易にアクセスすることができます.

グローバルビューによるプログラミング

グローバルビューは,典型的な並列化をサポートし,HPFやOpenMPのように指示文を用いることで既存の逐次コードを少ない変更量で並列化する機能です.

まず各ノードで共有して利用するデータを各ノードに分散配置する指示文を書きます.次に,そのデータが割り当てられている各ノードに分割して実行するように指示します.その際,プログラマは必要な指示文を用いて,各ノードが計算を行うのに必要なデータはそのノードにあるように,データ通信を行う必要があります.グローバルビューは,逐次プログラムのイメージから出発して,データをノードに分散させ,それに応じた計算の並列化を考えていくプログラミングスタイルに適しています.

ローカルビューによるプログラミング

ローカルビューは,各ノードが持つローカルデータに対して通信を行う機能です.ローカルビューは,各ノードの振る舞いを詳細に記述するプログラミングスタイルに適しています.

ローカルビューを実現するために,XMPはCoarray機能を提供しています.例えば,ノードnの配列Aの要素iを参照するには,XMP/FortranではA(i)[n],XMP/CではA[i]:[n]と表記します.XMP/Fortranは並列言語Coarray Fortranと等価です.