本項ではプログラムのコンパイルからOCTOPUS CPUノードでの1ノード実行までの手順を簡単にご説明いたします。
1.コンパイル
プログラムのソースファイルを計算機で実行できる形式にすることを「コンパイル」と呼びます。
OCTOPUSでは、Intelコンパイラ、GNUコンパイラ、PGIコンパイラ(それぞれC/C++/Fortran)などのコンパイラを利用することができます。
コンパイルを行う際のコマンドは、利用するコンパイラ、プログラミング言語ごとに異なります。詳細な使い方については、下記表のコンパイラ名からリンクしております、コンパイラ毎の使い方ページをご参照ください。
C言語 | C++言語 | Fortran言語 | |
---|---|---|---|
Intelコンパイラ | icc | icpc | ifort |
GNUコンパイラ | gcc | g++ | gfortran |
PGIコンパイラ | pgcc | pgc++ | pgfortran |
たとえばfortran言語で記述されたサンプルプログラム"sample.f90"をintelコンパイラでコンパイルする場合、フロントエンド上で以下のコマンドを実行してください。
% ifort sample.f90
エラーが表示されず、a.outというファイルが生成されていれば、コンパイルが成功したことを意味しています。
-
※エラーが表示されている場合、プログラムを見なおしましょう。よくある間違いとしてはスペルミスが挙げられます。
2.ジョブスクリプトの作成
ジョブスクリプトを作成し、計算ノードにプログラムの実行を要求します。このような実行方法を「バッチ処理」と呼びます。「ジョブスクリプト」で実行を要求すると、すぐに計算が始まるわけではありません。計算機は沢山の人が同時利用しておりますので、混雑している状況であれば、待たされることもあります。当センターでは「スケジューラ」というシステムが、プログラムの実行の順序を管理しています。
-
※フロントエンド上でプログラムを実行することは原則禁止となっています。
※バッチ処理、もしくはインタラクティブバッチ利用での実行をお願いいたします。
以下にジョブスクリプトの例を示します。
OCTOPUS 汎用CPUノードでのa.outの1ノード実行を要求するジョブスクリプトです。
1 2 3 4 5 |
#!/bin/bash #PBS -q OCTOPUS #PBS -l elapstim_req=1:00:00 cd $PBS_O_WORKDIR ./a.out |
このジョブスクリプトはプログラムの実行を行うだけのものになっていますが、オプションを追加で指定することで「ジョブ実行終了時にメールアドレスに通知を送信する」、「出力結果ファイルの名前を指定する」といった要求を行うことも可能です。
ジョブスクリプトの詳細やその他のオプションについては以下のページをご参照ください。
3.プログラムの実行、結果確認
ジョブスクリプトを計算機に投入し、プログラムを実行します。ジョブスクリプトの投入は下記のqsubコマンドで行います。(ここではジョブスクリプトのファイル名をnqs.shとしています)
% qsub nqs.sh
投入されたジョブの状況はqstatコマンド、sstatコマンドで確認可能です。
各コマンドや表示される内容の詳細は下記のページをご参照ください。
計算機での実行が終わると、計算結果がフロントエンドに転送されます。
計算結果は、スクリプト中で特別に指定しなければ、標準出力として出力されます。
標準出力は"ジョブスクリプト名.oリクエストID"
標準エラー出力は"ジョブスクリプト名.eリクエストID"
として出力されます。エディタなどでご確認ください。
おわりに
基本的な利用の流れは以上になります。
ここに書かれた内容でわからないことがある場合は、FAQページや利用相談をお気軽にご利用ください。
相談・お問い合わせ