本項ではプログラムのコンパイルからOCTOPUS Xeon Phiノードでの1ノード実行までの手順を簡単にご説明いたします。コア単位の演算性能は、汎用CPUノード群に劣りますが、特殊なテクニックを用いなくても、汎用CPUノード群と同じプログラムファイルを実行可能です。
 

1.コンパイル

プログラムのソースファイルを計算機で実行できる形式にすることを「コンパイル」と呼びます。
Xeon PhiノードではIntelコンパイラ(それぞれC/C++/Fortran)の利用を推奨します。詳細な使い方は、こちらをご参照ください。

C言語 C++言語 FORTRAN言語
Intelコンパイラ icc icpc ifort

 

FORTRAN言語で記述されたサンプルプログラム"sample.f90"をintelコンパイラでコンパイルする場合、フロントエンド上で以下のコマンドを実行してください。

% ifort -xMIC-AVX512 sample.f90

 

エラーが表示されず、a.outというファイルが生成されていれば、コンパイルが成功したことを意味しています。

    ※エラーが表示されている場合、プログラムを見なおしましょう。よくある間違いとしてはスペルミスが挙げられます。

 
 

2.ジョブスクリプトの作成

ジョブスクリプトを作成し、計算ノードにプログラムの実行を要求します。このような実行方法を「バッチ処理」と呼びます。「ジョブスクリプト」で実行を要求すると、すぐに計算が始まるわけではありません。計算機は沢山の人が同時利用しておりますので、混雑している状況であれば、待たされることもあります。当センターでは「スケジューラ」というシステムが、プログラムの実行の順序を管理しています。

    ※フロントエンド上でプログラムを実行することは原則禁止となっています。
    ※バッチ処理、もしくはインタラクティブバッチ利用での実行をお願いいたします。

 

以下にジョブスクリプトの例を示します。
OCTOPUS Xeon Phiノードでのa.outの1ノード実行を要求するジョブスクリプトです。

このジョブスクリプトはプログラムの実行を行うだけのものになっていますが、オプションを追加で指定することで「ジョブ実行終了時にメールアドレスに通知を送信する」、「出力結果ファイルの名前を指定する」といった要求を行うことも可能です。
ジョブスクリプトの詳細やその他のオプションについては以下のページをご参照ください。

ジョブスクリプトの書き方

 

3.プログラムの実行、結果確認

ジョブスクリプトを計算機に投入し、プログラムを実行します。ジョブスクリプトの投入は下記のqsubコマンドで行います。(ここではジョブスクリプトのファイル名をnqs.shとしています)

% qsub nqs.sh

投入されたジョブの状況はqstatコマンド、sstatコマンドで確認可能です。
各コマンドや表示される内容の詳細は下記のページをご参照ください。

スケジューラコマンドについて

 

計算機での実行が終わると、計算結果がフロントエンドに転送されます。
計算結果は、スクリプト中で特別に指定しなければ、標準出力として出力されます。
 
標準出力は"ジョブスクリプト名.oリクエストID"
標準エラー出力は"ジョブスクリプト名.eリクエストID"
 
として出力されます。エディタなどでご確認ください。
 

参考情報

Memory modeについて

XeonPhiノード群は192GBの主記憶(DDR)以外に、16GBのMCDRAMを搭載しています。DDRとMCDRAMのレイアウト(Memory mode)は3種類から選択できますが、OCTOPUSのXeonPhiノード群では「Flatモード」に固定しています。
 

Hyper Threadingについて

OCTOPUSのXeonPhiノード群ではOFFとなっています。
 

おわりに

基本的な利用の流れは以上になります。
ここに書かれた内容でわからないことがある場合は、FAQページや利用相談をお気軽にご利用ください。
相談・お問い合わせ