HOME > 利用者支援 > FAQ > HA8000クラスタシステムFAQ

HA8000クラスタシステムFAQ

利用申込


HA8000 クラスタシステムの利用について、パーソナルコース・専用キュー・ノード固定とありますが、それぞれのサービス内容はどの様に違うのでしょうか。
研究者が個人単位で利用するのが「パーソナルコース」、研究グループ単位でまとまった資源を確保するのが「専用キュー」、スーパーコンピューターの一部を専有利用できるのが「ノード固定」です。
それぞれのコースのサービス内容と利用負担金は、HA8000 クラスタシステムの「コース紹介」をご覧ください。

▲ HA8000クラスタシステムFAQ TOPへ


システム全般、サービス内容


HA8000クラスタシステム のハードウェア性能について教えてください。
主な諸元は以下の通りです。詳しくは、「HA8000クラスタシステム利用の手引き」をご覧ください。


・CPU AMD Quad Core Opteron 8356(2.3GHz)
・Node 数 952(16CPU/Node)
・1 CPU 当りの理論演算性能 9.2 GFlops
・1 Node 当りの理論演算性能 147.2 GFlops
・1 Node 当りの主記憶容量 32 GB(936 Node)、128 GB(16 Node)


HA8000クラスタシステム の OS について教えてください。
HA8000クラスタシステム の OS は RedHat Enterprise Linux 5.1 です。

利用できるソフトウェアは何がありますか。
コンパイラ、数値計算ライブラリが使用できます。詳しくは、「HA8000クラスタシステム利用の手引き」をご覧ください。

主なソフトウェア
・最適化 FORTRAN 77/90/95
・最適化 C/最適化標準 C++(ANSI/ISO C++ 1998 準拠 及び ARM 仕様対応)
Intel Compiler C / C++ / Fortran Version 11
PGI Compiler 7.1(アカデミックユーザーのみ)
・MPI / 一般的非経験分子軌道計算プログラム Gaussian03
・行列計算副プログラムライブラリ MATRIX/MPP
・行列計算副プログラムライブラリ スカイライン法 MATRIX/MPP/SSS
・数値計算副プログラムライブラリ MSL2
Intel Math Kernel Library


利用できるディレクトリが複数あるようです。それぞれの特徴等はありますか。
利用者が利用できるディレクトリと特徴は以下の通りです。詳細は、「HA8000クラスタシステム利用の手引き」及び「NFSファイルシステム」「Lustreファイルシステム」をご覧ください。

ディレクトリ 用途 容量制限 保存期間 申込
/home/ログイン名 ホームディレクトリ あり -- 不要
/nfs/all/ログイン名 レスポンス重視 10GB -- 不要
/nfs/グループ名/ログイン名 大容量、並列入出力 あり -- 必要(※1)
/lustre/ログイン名 大容量、並列入出力 あり -- 10GBまで不要(※2)
/short/ログイン名 短期利用 なし 5日 不要
/tmp 一時利用 140GB ※3 不要

※1
パーソナルコースの方も申し込み可能です(「/nfs/personal/ログイン名」などの名前になります)。利用をご希望する場合は、「NFSファイルシステム(試行)」をご覧いただき、必要事項を記入の上、受付(受付のメールアドレス)あてにメールしてください。
※2
10GBを超えて利用したい場合は、「Lustreファイルシステム」をご覧いただき、必要事項を記入の上、受付(受付のメールアドレス)あてにメールしてください。
※3
/tmp に作られたファイルはログインノードでは2日以内、計算ノードではジョブ終了時に削除されます。


/nfs/xxx を利用していますが、注意すべき点などはありますか。
NFS は負荷分散機能を持たないため、多数のノードからの同時アクセスを苦手とします。そのため、並列アプリケーションからのデータ入出力に /nfs/all を使うことはご遠慮ください。/nfs/グループ名 については /nfs/all とは異なり、並列アプリケーションからご利用いただくことができます。ここで、NFSが負荷分散機能を持たないこと、また、他の利用者の影響も受けることをご理解の上ご利用ください。
次に、/nfs/グループ名 は大容量領域ですが、大容量ファイルの出力(Gaussian のスクラッチファイル等)により I/O 高負荷がかかると計算ノードのハングアップ等の不具合が発生することがあります。
Gaussian のスクラッチファイル等の大容量ファイルの /nfs/グループ名 への出力は控えていただきますようお願いいたします。

NFS (Lustre) 領域を拡張したいのですが、どの様にすればよいでしょうか。
NFS (Lustre) 領域を拡張するには、以下の方法があります。ご不明な点については受付までお問い合わせください。
現状のファイルシステム領域の再配分
現在設定されているファイル容量から各ファイルシステムへの容量割当を変更します。この場合は、追加の利用負担金等は発生いたしません。ただし、再割振りしたファイルシステムのディスク使用状況が、すでに超過する場合などは設定変更ができませんのでご注意ください。
ディスク容量の追加
必要とするディスク容量分を新たに追加の申込を行います。この場合は、追加分に対して新たに負担金が発生いたします。また、年度内の増量申込はできますが、減量はできませんのでご注意ください。

NFS (Lustre) 領域の変更を申込した場合、どの程度の日程で変更されるのでしょうか。
通常の場合だと 2 営業日程度で変更作業は終了します。ただし、月末処理日の前後などでは少々お時間を頂く可能性があります。

現時点での CPU 時間を調べるにはどうしたら良いでしょうか。
CPU 時間は下記の la コマンド(list account の略)で制限値(無制限)、使用量(合計と今月分)、残り時間が確認できます。 また -a オプションを付けることで使用ディスク量(制限値、使用量)、設定コースも調べることができます(以下は 2009 年 8 月現在の表示例です。今後変更になる場合があります。)
 $ la -a

 cpu resource for p09000  (HH:MM:SS)
   system      limit(hour)                used(this month)           remain
  HA8000        2147483647        63:53:10(      19:01:41) 2147483583:06:50
 Course name for p09000
  personal 4
 disk resource    user(p09000)
  file system     limit(MB)  occupied(MB)
  /home             102400          7029
なお、表示される値は 1 日に 2 回反映しているもので、待ち行列にあるジョブや実行中のジョブについては含まれていません。

" .... command not found "というメッセージが出て、コマンドを受け付けない。
コマンドパス等を設定する .bashrc や.bash_profile ファイルがあり、このファイルの中の記述がおかしくなってしまうと、正しい設定が行われなくなり、標準的なコマンドも使えなくなってしまうことがあります。ファイルの中の記述を確認してください。

nslookup や traceroute を実行すると" Permission denied "となる。w や ps ax と入力した時に、自分以外のプロセスが見あたらないのですが。
管理者用のコマンドについては、一般利用者は実行できないように設定してあります。また ps, w 等のシステムの状態を表示するコマンドについては、システム管理者以外の一般ユーザーが使った場合、本人に関係する情報のみを表示するように設定してあります

/proc/cpuinfo の flags を見てみると、sse3 がありません。
/proc/cpuinfo の flags では、sse3 は pni と表示されます。

利用者番号間でファイルを譲渡したいがどうしたらよいでしょうか。
UNIX 系はサブディレクトリを含む場合は、個別共有関係の設定ができないため、tar のようなアーカイバと、外部媒体を利用するのが容易です。 グループコースの場合は、標準ではグループ内の利用者番号間では参照可能となっています。

▲ HA8000クラスタシステムFAQ TOPへ


日立製作所製 最適化FORTRAN コンパイラ


Fortran プログラムで長い名前の変数を使いたい。
FORTRAN77 プログラムでの変数名の長さはセンターの標準では 8 文字以内に制限されています 9 文字以上の変数名及び外部手続き名を使用する場合は、 コンパイルオプション -i,U を指定してください。(-i,U は、外部手続きの名称中の_(アンダースコア)及び 31 文字までの外部手続き名称を許すオプションです。) Fortran90(f90)ではこの制限はありません。


$ f77 -i,U a.f


Fortran プログラムが "segmentation fault" で終わる。コンパイルオプションによって結果が異なる。
配列の宣言範囲を超えて使用している関数・サブルーチンの引数の個数・型が不一致であることが考えられます。プログラムを確認してください。-debug オプションで原因がわかる場合があります。

"KCHF446R segmentation violation occurred." と出て動きません。どうすればよいですか。
プログラム中の関数の引数や配列の参照に問題があることが考えられます。コンパイルオプションに「-subchk」、「-debug」などを利用して、プログラムを確認してください。こちらも参考にしてください。

Fortranプログラムのチューニングをしたいのですが。
チューニングのヒントのために並列化の報告を出力することができます。次のように -loglist オプションを付けてコンパイルしてください。並列化ログはソースファイル名の拡張子を .log にしたファイルとして生成され、元のソースファイルにコメントを加える形で並列化状況が書き込まれます。


$ mpif90 -Oss -loglist mpi-program.f90


プログラムの実行が遅いのですが。
最適化、要素並列化が効いてないかもしれません。-loglist オプション等を使用してコンパイル診断メッセージを確認してください。 またプログラムによっては、最適化が性能を劣化させる場合もあります。この場合、一部の最適化オプションを抑止してコンパイルしてください。詳細は以下の日立発行のマニュアルの「最適化による副作用」を参照してください。


最適化 Fortran 使用の手引(3000-3-E52)


WS で動いていた Fortran プログラムを動かしたい。コンパイルしてみると、膨大な量のメッセージが出てきた。
WS から移植する際の代表的なコンパイルエラーの例及び原因と対処法は次のとおりです。コンパイルメッセージを見て対応をお願いします。
8 文字より長い変数名を使っている。
コンパイルオプション -i,U を指定してください。
「原始プログラム中に許されない文字が現れました」
?、!、$、" などの特殊文字が使われている場合は言語仕様の拡張が必要です。コンパイルオプション -i,P や -i,{E,N},LT を指定してください。また、注釈以外での漢字コードはシフト JIS コードを使用してください。
「分類不可能な文があります」
プログラムが自由形式で書かれている場合はコンパイルオプション -free を指定してください。


※ 後は入出力関連や(時間の計測等の)処理系固有のルーチンを使っていないかチェックする必要があります。 センターで利用する Fortran 処理系の詳細は、日立発行のマニュアルを参照してください。

最適化 Fortran 使用の手引(3000-3-E52)


▲ HA8000クラスタシステムFAQ TOPへ


日立製作所製 最適化C/C++ コンパイラ


C++ の STL(標準テンプレートライブラリ)は使用できますか。
使用できます。以下のように指定してください。

64 ビットモードでコンパイルする場合
 $ sCC sample.cpp -I/opt/STLport-4.6.2/stlport -L/opt/STLport-4.6.2/lib64 -lstlport_sCC -lm
32 ビットモードでコンパイルする場合
 $ sCC -32 sample.cpp -I/opt/STLport-4.6.2/stlport -L/opt/STLport-4.6.2/lib -lstlport_sCC -lm


▲ HA8000クラスタシステムFAQ TOPへ


Intel コンパイラ


Intel コンパイラを使用したいのですが。
以下に示すシェルスクリプトを実行することで Intel コンパイラに必要な PATH などの環境変数が設定されます。詳細は、「HA8000クラスタシステム利用の手引き」及び「Intel コンパイラについて」をご覧ください。


$ source /opt/itc/mpi/mpiswitch.sh mpich-mx-intel11(通常の環境)
$ source /opt/itc/mpi/mpiswitch.csh mpich-mx-intel11(tcsh に変更している場合)


"segmentation fault" と出て動きません。どうすればよいですか。
プログラム中の関数の引数や配列の参照に問題があり、メモリアクセス周りでエラーが発生していると考えられます。プログラムを確認してください。

-xSSE3 オプションが使えません。
HA8000 クラスタシステムに使用されている CPU は、AMD Quad-core Opteron 8356 で、SSE3 命令をサポートしております。しかし、-xSSE3 は、Intel CPU 用のオプションのためエラーとなります。
HA8000 クラスタシステムで使用されている AMD プロセッサにおいてSSE3 命令を使用した最適化を行う場合のコンパイラオプションは -msse3 になります。
利用の手引きには記述誤りがありますので、【 正誤表 】をご参照ください。

▲ HA8000クラスタシステムFAQ TOPへ


PGI コンパイラ


PGI コンパイラを使用したいのですが。
最初に、PGI コンパイラはアカデミックライセンスで導入されておりますので企業ユーザーの方はご利用になれません。ご了承ください。以下に示すシェルスクリプトを実行することで PGI コンパイラに必要な PATH などの環境変数が設定されます。詳細は、「HA8000クラスタシステム利用の手引き」及び「PGI コンパイラについて」をご覧ください。


$ source /opt/itc/mpi/mpiswitch.sh mpich-mx-pgi(通常の環境)
$ source /opt/itc/mpi/mpiswitch.csh mpich-mx-pgi(tcsh に変更している場合)


▲ HA8000クラスタシステムFAQ TOPへ


GNU Compiler Collection(GCC)


GNU Compiler Collection(GCC)を使用したいのですが。
HA8000 クラスタシステムには RedHat Linux 標準の GNU Compiler Collection(GCC)がインストールされています。GCC のコマンドは C 言語、C++、Fortran がそれぞれ gcc, g++, gfortran です。詳しい使い方は info gcc コマンドなどでご確認ください。また、以下に示すシェルスクリプトを実行することで GCC 用の MPI 環境に切り替わります。


$ source /opt/itc/mpi/mpiswitch.sh mpich-mx-gcc(通常の環境)
$ source /opt/itc/mpi/mpiswitch.csh mpich-mx-gcc(tcsh に変更している場合)


▲ HA8000クラスタシステムFAQ TOPへ


ライブラリ


使用できる数値計算ライブラリにはどのようなものがありますか。また、それぞれどのようにすれば使用できますか。
以下のライブラリが用意されています。使用方法に関しては以下の日立発行のマニュアルまたは「HA8000クラスタシステム利用の手引き」をご覧ください。


・行列計算副プログラムライブラリ MATRIX/MPP
  - 行列計算副プログラムライブラリ MATRIX/MPP(3000-3-E75)
・行列計算副プログラムライブラリ スカイライン法 MATRIX/MPP/SSS
  - 行列計算副プログラムライブラリ MATRIX/MPP/SSS(3000-3-E76)
・数値計算副プログラムライブラリ MSL2
  - 数値計算副プログラムライブラリ MSL2 行列計算(3000-3-E71)
  - 数値計算副プログラムライブラリ MSL2 関数計算(3000-3-E72)
  - 数値計算副プログラムライブラリ MSL2 統計計算(3000-3-E73)
  - 数値計算副プログラムライブラリ MSL2 操作  (3000-3-E74)
・BLAS(Basic Linear Algebra Subprogram)
・LAPACK(Linear Algebra PACKage)
・ScaLAPACK(Scalable Linear Algebra PACKage)
・Intel Math Kernel Library
・AMD Core Math Library
・GotoBLAS


MATRIX/MPP を使用したプログラムがコンパイルできません。
以下の点にご注意ください。


コンパイラ
日立コンパイラ(最適化 FORTRAN / 最適化 C / 最適化標準 C++)をご利用ください。
コンパイルオプションの位置
ld: 1012 error : Undefind symbol: .HDFT2M
-lmatmpp は以下のようにオプションの一番最後に指定してください。
$ f90 -parallel program.f -lmatmpp
要素並列オブジェクトの作成
ld: 1012 error : Undefind symbol: _h_comp_link_var
ld: 1012 error : Undefind symbol: _h_total_ip_num


以下のように -parallel を指定してください。(要素並列オブジェクトのリンク)
$ f90 -parallel program.f -lmatmpp


スカラー版を利用する場合は以下のように指定をしてください。
$ f90 program.f -lmatmpp_sc


MSL2 を使うにはどうしたらよいですか。
日立提供のライブラリとして、MSL2 及び MATRIX が、マニュアルに記述された標準的な形態で登録してありますので、マニュアルの記述どおりに利用することができます。日立コンパイラ(最適化 FORTRAN / 最適化 C / 最適化標準 C++)をご利用ください。なお、センター提供の数値計算ライブラリの検索パスは標準で設定されていますので、-L オプションは省略できます。


$ f90 ... -lMSL2 ...


詳細は「HA8000クラスタシステム利用の手引き 第8章 数値計算ライブラリ」をご覧ください。

FX10 スーパーコンピュータシステムで使用していた富士通社製ライブラリ (SSL II、C-SSL II、SSL II/MPI) は利用できますか。
利用できません。日立製ライブラリをご使用ください。

LAPACK95(LAPACK を f95 から呼び出せるもの)は使用できますか。
今後、検討します。とりあえずはユーザ各自で対応してください。

▲ HA8000クラスタシステムFAQ TOPへ


アプリケーション


Gaussian のバージョンを教えてください。
Gaussian03 Revision E.01 です。

Gaussian09 のインストール予定はありますか。
現在のところバージョンアップの予定はありません。

Gaussian を利用しています。何か注意すべき事柄はありますか。
「Gaussian03の利用について」または、SR11000 用の「東大センターにおけるスーパーコンピューター利用入門 -SR11000編- 付録 D Gaussian03 の使い方」を参考にしてください。(インストール先がSR11000 は /usr/local/g03 ですが HA8000クラスタシステム では /opt/g03 ですので、ご注意ください)

Gaussian を Node 間並列した実行をすることはできますか。
本センターの Gaussian は要素並列版です。Node 間並列した実行はできません。

Gaussian を使っていますが、PC と同じくらいの速さでしかないです。なぜでしょうか。
本センターの Gaussian は要素並列版であり、スカラー処理が大部分を占めるような計算の場合、1 プロセッサ(1 Node の 1/16)程度の性能で処理するため、PC と同程度であることも考えられます。

PHASE を利用することはできますか。
本センターで PHASE のサポートはしておりませんが、非商用利用であれば RSS21 ソフトウェアの PHASE の利用が可能です。以下に日立コンパイラでビルドした PHASE があります。サポート対象外となりますことをご理解の上、ご利用ください。


・FlatMPI版: /opt/itc/rss21/phase_v701/bin/phase
・HybridMPI版: /opt/itc/rss21/phase_v701/bin/phase.hybrid

 ----- FlatMPIでのジョブスクリプト例 -----
 #!/bin/sh
 #@$-q parallel
 #@$-N 4
 #@$-J T16
 #@$-lm 28GB
 #@$-lT 4:00:00 
 #@$
 
 cd ${QSUB_WORKDIR}
 mpirun /opt/itc/rss21/phase_v701/bin/phase
 
 exit
 ----- HybridMPIでのジョブスクリプト例 -----
 #!/bin/sh
 #@$-q parallel
 #@$-N 4
 #@$-J T4
 #@$-lm 7GB
 #@$-lT 4:00:00 
 #@$
 
 export HF_PRUNST_THREADNUM=4
 cd ${QSUB_WORKDIR}
 mpirun /opt/itc/rss21/phase_v701/bin/phase.hybrid
 
 exit

個別に購入したソフトウェアを使用することはできますか。
利用者ディレクトリにインストールして使用する場合には、ライセンス等をご確認の上、ご使用頂いても問題ありません。

ライセンスサーバを必要とするソフトウェアを利用したいのですが。
個別に対応できる場合がございます。相談受付(相談受付のメールアドレス)までメールでご連絡ください。

▲ HA8000クラスタシステムFAQ TOPへ


NQS


ジョブクラスにはどのような種類がありますか。
パーソナルコース、専用キューコースとノード固定コースで共通のジョブクラスと個別のジョブクラスが存在します。ジョブクラスの概要については、以下を参照してください。詳細は、「ジョブクラス」をご覧ください。
全コース共通

※ 2012年9月24日(月末処理)以降、shortキューのサービスを終了しました。
short(S004 ~ S016)
 実行可能時間が短い代わりに待ち時間も短いジョブクラスです。
・large(L004 ~ L008)
 128GB のメモリを利用可能なジョブクラスです。利用には別途申し込みが必要です。
・debug
 実行可能時間が非常に短い(5分)デバッグのためのジョブクラスです。
・avs
 可視化システム AVS/Express PCE、AVS/Express PST 実行専用のジョブクラスです。
・profile
 性能モニタ機能を使用するためのジョブクラス。それ以外の目的では使用できません。

パーソナルコース
※ 2012年9月24日(月末処理)以降、パーソナルコース5の最大ノード数を変更しました。

・parallel(P004 ~ P128 ⇒ P064
 並列ジョブを実行するパーソナルコース標準のジョブクラスです。

専用キューコース

・ユーザ定義(任意)
 専用キューコースではジョブクラスをご希望のポリシーで作成できます。
 例えば、32 ノードを申し込みの上で 8 ノードジョブが同時に2本流れるようなキューと16 ノードジョブ用のキューを作成するなどの設定が可能です。ノード固定コースとの違いは、物理ノードを他の専用キューコースの方と共有することです。

ノード固定コース

・ユーザ定義(任意)
 専用キューコースと同様に、ジョブクラスをご希望のポリシーで作成できます。
 専用キューコースとの違いは、物理ノードを専有することです。


NQS にジョブを投入したいのですが、投入方法がわかりません。
バッチスクリプトを記述して、qsub コマンドでジョブを投入します。詳細は、「HA8000クラスタシステム利用の手引き」をご覧ください。
バッチスクリプトの例

 $ vi バッチスクリプト


記入例 説明
#!/bin/csh
#@$-q parallel
#@$-N 4
#@$-lT 1:00:00
#@$-lM 28GB
cd ~/work
./program < in.date > out.data

パイプキュー名
Node 数
実行時間制限値
メモリサイズ制限値
cd ディレクトリ
プログラム名 < 入力ファイル > 出力ファイル


 $ qsub バッチスクリプト


バッチスクリプトで指定できるオプションにはどのようなものがありますか。
Node 数、メモリサイズ、制限時間等が指定できます。詳細は、「HA8000クラスタシステム利用の手引き」をご覧ください。

投入した NQS ジョブを確認する方法を教えてください。
qstat コマンドで確認することができます。
 $ qstat
  2009/10/30 (Fri) 17:22:38:    REQUESTS on HA8000 cluster
  NQS schedule stop time : 2009/11/27 (Fri)  9:00:00 (Remain: 663h 37m 22s)
     REQUEST      NAME      OWNER      QUEUE     PRI NICE E-TIME   MEM    STATE
  356727.batch1   job1.sh   p09000     P004      63  0     1440m    28GB  RUNNING
  356739.batch1   job2.sh   p09000     P004      60  0     1440m    28GB  QUEUED
  356751.batch1   job3.sh   p09000     P004      59  0     1440m    28GB  QUEUED

※実行中の NQS ジョブは、STATE が RUNNING に、実行待ち状態は QUEUED と表示されます。


投入した NQS ジョブを kill するにはどうしたらよいですか。
qdel コマンドで NQS ジョブを削除します。例えば、リクエスト ID 356727.batch1 を削除する場合は次のように指定します。
 $ qstat
  2009/10/30 (Fri) 17:22:38:    REQUESTS on HA8000 cluster
  NQS schedule stop time : 2009/11/27 (Fri)  9:00:00 (Remain: 663h 37m 22s)
     REQUEST      NAME      OWNER      QUEUE     PRI NICE E-TIME   MEM    STATE
  356727.batch1   job1.sh   p09000     P004      63  0     1440m    28GB  RUNNING

 $ qdel 356727

また、リクエスト ID を複数指定することも可能です。

 $ qdel 356727 356739 356751

メモリをどれだけ使えますか。
parallel キュー(P004 ~ P064)、debug キュー、profile キュー、専用キューでは最大 28GB です。large キュー(L004 ~ L008)、avs キュー では最大 112GB です。NQS ジョブでは、#@$-lM 値 MB または GB で指定します(通常、指定する必要はありません。最大値が仮定されます)。


バッチスクリプト内での指定例
 #@$-lM 8GB


NQS ジョブが実行されません。
投入されたジョブのうち、システム停止予定時刻(計画停止時刻)までに終了しないジョブについては実行しないよう設定しています。停止時刻直前まで実行するためには、実行時間制限値(#@$-lT)で NQS ジョブの終了が計画停止時刻を超えないよう指定してください。計画停止時刻と残り時間は qstat コマンドで確認することができます。
 $ qstat
  2009/10/30 (Fri) 17:22:38:    REQUESTS on HA8000 cluster
  NQS schedule stop time : 2009/11/27 (Fri)  9:00:00 (Remain: 663h 37m 22s)

※ NQS ジョブの実行が終了する日付、時刻(残り時間)が表示されています。月末処理などのシステム停止前には、残り時間等をご確認ください。


複数の NQS ジョブを実行することはできますか。
ジョブの同時実行数の制限があります。各コースのジョブクラスで制限が異なりますので、以下をご覧ください。
全コース共通(large)
 同一キューでの NQS ジョブの同時実行数は 1 です。
 他のキューを含めた NQS ジョブの同時実行数は 2 です。
全コース共通(debug, profile, avs)
 同一キューでの NQS ジョブの同時実行数は 1 です。
 他のキューを含めた NQS ジョブの同時実行数の制限はありません。
パーソナルコース(parallel)
 同一キューでの NQS ジョブの同時実行数は 1 です。
 他のキューを含めた NQS ジョブの同時実行数は 2 です。
専用キューコース・ノード固定コース(ユーザ定義)
 同一キューでの NQS ジョブの同時実行数は申込ノード数と同じ値です。
 例えば、16ノードの場合、16 本まで流れます。
 他のキューを含めた NQS ジョブの同時実行数の制限はありません。

NQS ジョブが長時間待たないと実行されません。
本センターでは利用者の皆様に公平な計算機資源の提供を行うため、ジョブスケジューリングシステム(「フェアシェアスケジューリングシステム」)を導入しています。 本システムでは、4 月から現在までに実行済みの NQS ジョブにて使用した CPU の使用量と投入したジョブに設定した実行予定時間より算出される CPU の予定使用量から各ジョブの実行優先度を決定しています。 そのため、既に CPU 時間を大量に使用していた場合、他の NQS ジョブの方が優先順位が高くなっている場合があり、実行まで長時間待つ場合があります。なお、専用キューコースまたはノード固定コースでは、 投入順に実行される「FIFO スケジューリング」のキューを作成することもできます。詳細は、「HA8000クラスタシステム利用の手引き 7.5 ジョブスケジューリングのルール」を参照してください。

NQS ジョブの実行順位が知りたいのですが。
qstat コマンドの "PRI" 値で確認することができます。優先順位(PRI 値)の最大は 63 で、0 まで各 NQS ジョブに順位付けを行い、順位の高い NQS ジョブから順に実行されます。そのため、自分の NQS ジョブの PRI 値を確認することで、実行順位を調べることができます。詳細は、「HA8000クラスタシステム利用の手引き 7.5 ジョブスケジューリングのルール」を参照してください。
例 )下記の例の場合、999999.batch1 の PRI 値は 62 なので、2 番目となります。
 $ qstat
  2009/10/30 (Fri) 17:22:38:    REQUESTS on HA8000 cluster
  NQS schedule stop time : 2009/11/27 (Fri)  9:00:00 (Remain: 663h 37m 22s)
    REQUEST      NAME      OWNER      QUEUE     PRI NICE   CPU    MEM    STATE
 999999.batch1   test.sh   p09000     P004      62  0     1440m    28GB  QUEUED

Large キュー(128GBメモリのノード)を使いたいのですがどうしたらよいでしょうか
Large キュー(128GBメモリのノード)を利用するためには、別途申込が必要です。1 ノード 32 GB 以上のメモリ容量を必要とする理由を明記のうえ、(受付のメールアドレス)まで、メールでお申込ください。詳細は、「128GBメモリのノードの利用について」をご覧ください。

ジョブが途中で終了してしまう。配列を大きくしたら動かなくなった。
NQSジョブ の各キューに応じて、E-TIME、メモリなどのリソースを制限していますので、その制限を超えるジョブは流せません。各キューにおける制限値は、「ジョブクラス」をご覧ください。

以下のメッセージが出力され、NQS ジョブが Kill されます。なぜでしょうか。
job killed: walltime 172830 exceeded limit 172800
ジョブの実行時間(経過時間)制限値を超えています。長時間ジョブについては、チェックポイントリスタートの利用等で対処をお願いいたします。また、専用キューについては審査に基づき制限時間の延長を認めることがあります。

専用キューを利用していますが、制限時間を延長して頂けないでしょうか。
長時間ジョブについては、可能な限りチェックポイントリスタートの利用等で対処していただくことをお願いしておりますが、チェックポイントリスタートが不可能であるような場合については、審査に基づき、制限時間の延長を認めることがあります。延長を希望されるグループは専用キュー 制限時間延長申込書にご記入の上、受付(受付のメールアドレス)までメールでご提出ください。

NQS ジョブを投入したところ、以下のようなメッセージが返ってきて、ジョブが投入できません。
No suitable queue found.
reason: ……
制限時間、メモリ容量等の指定がキューの制限値を超えていると思われます。この場合、上記メッセージを出力し、NQS ジョブは投入されません。ジョブクラス毎の制限値を超えないよう指定してください。

NQS ジョブが "killed" または "no more process" で終わってしまいます。
メモリ不足が考えられます。parallel キュー(P004 ~ P064)、debug キュー、profile キュー及び専用キューで使用できるメモリは最大 28GB です。large キュー(L004 ~ L008)及び avs キュー で使用できるメモリは最大 112GB です。

NQSの開始・終了メールが異なるログインノードに届きます。
NQSの開始・終了メールは qsub したログインノードに届きます。異なるログインノードから qsub したときも、ひとつのログインノードのみに集約するには、


1. NQS の -mu オプションで指定する。
2. ~/.forward に記述する。


のどちらかの方法で対処してください。

あるジョブが終わるのを待ってから次のジョブが流れるように、連続してジョブを実行したい場合はどうすればよいですか?
HA8000 クラスタシステムにおいては、ジョブチェイン、ジョブの連携といった機能はありません。
ただし、以下の方法により、お互いに関係のあるジョブを連続して実行することができます。
なお、いずれの場合においても前のジョブ job0 に続いて次のジョブ job1 を開始しても問題が無い状態かどうかを確認する必要があります。
例えば、以下の点についてご注意ください。


1. job0 にエラーが発生していないかどうか
2. job0 で出力されるデータを job1 が使う場合にデータの準備ができているかどうか


A. 本来の計算がジョブの制限値の時間内に収まらないため、細切れのジョブ(複数のジョブスクリプト)として連続して流したい場合

申込コースによらず、基本的には以下の方法のどちらかのみとなります。


1. job0 の実行中または終了後に HOLDING 状態でサブミット(qsub -H)してあった job1 を、qmod -NHで解除する


2. ジョブ A の終了後にジョブ B をサブミットする


パーソナルコースでは、1つのキューで流すことができるジョブ数は1本までとなっております。この時、ジョブ毎の使用ノード数や経過時間に変化が無いという条件の下、同じキュー(debug キューを除く)に job0、job1、…、jobN と投入しておけば、順次待ち状態(QUEUED)となり、前のジョブが終わると次のジョブが投入された順番にて実行(RUNNING)されます。よって、この場合では連続して流すことができます。
しかし、専用キューコースにおいては、1つの専用キューで流すことができるジョブの同時実行数は申込ノード数と同じ値であるため、パーソナルコースと同様のふるまいとはなりません。


3. ジョブの中で別のジョブを qsub することが可能です。job0 のジョブスクリプトの末尾で次の job1 を qsub する処理を加えます。


この場合、job0 のジョブスクリプト中にて、次の job1 を qsub する前の処理としてエラーが無くかつデータの準備ができていることを確認する処理を追加し、job1 を qsub するという処理を続けていただければ、job0 の終了状態を反映する形をとることが可能となります。


B. ジョブの制限値の時間内に収まる計算を複数連続して流し、ジョブの待ち時間を節約したい(1つのジョブスクリプト)といった場合

例えば、以下のような複数の要因が考えられます。使用ノード数(-N)、使用プロセス数(-J)に変更が無い前提で、ジョブスクリプト中に連続してジョブを記述することで、ジョブの制限値の時間まで順次ジョブを実行することが可能です。
例えば、24時間制限のキューで1回7時間のジョブ:JOBX を実行したい場合、
・mpirun JOB0
・mpirun JOB1
・mpirun JOB2
・mpirun JOB3
とジョブスクリプトに記述しておくと、JOB2 が終わってJOB3 の途中まで実行し、ジョブの制限値を超えてジョブが強制終了されることになります。

RUNLIMIT とは何でしょうか?
qstat -b コマンドで表示される RUNLIMIT は計算資源に空きがあった場合にシステム全体で同時実行できるジョブの数です。
ただし、以下の点についてご注意ください。


1. サービス形態により、計算ノードの割り当て数は適宜変更が行われておりますが、割り当てられた計算ノードをできるだけ効率的に利用できるように RUNLIMIT 数も変化します。
2. 個々の利用者様が各キューにおいて同時実行できるジョブ数は固定されており、変化いたしません。この値は RUNLIMIT 数と関連したものではありません。
3. RUNLIMIT はシステム管理者側で設定を行うものであり、利用者様によって設定変更を行うものではありません。


以下に各ケースにおいて、どのように判断すればよいかの例をご参考までに提示いたします。


A. 該当キューが有効であるが、QUEUED になっている(実行待ち)ジョブが存在するもの RUNNING 数が 0 の場合

例えば、以下のような複数の要因が考えられます。


1. 実行待ちジョブの要求する計算資源の確保を待っている。
2. 実行待ちジョブで指定されている計算時間が、サービス休止までの残り時間より大きい時間を指定している。(サービス休止までの残り時間は qstat -s で確認することができます。)


B. 実行待ちジョブがあるのに RUNLIMIT の値よりも RUNNING の値の方が小さい場合

例えば、以下のような状況があります。
 $ qstat -b
               TOTAL   RUNNING  RUNLIMIT  QUEUED HELD   IN-TRANSIT
 L004  AVAILBL     3   1        2         2      0       0
 L008  AVAILBL     1   1        1         0      0       0

L00X キューは 128GB メモリノードを利用(申込制)するためのキューですが、L00X キューで利用できるノードは全部で 12 ノードであり、L004 は最大 4 ノード、L008 は最大 8 ノード利用可能なキューです。
このケースでは L004 での RUNNING のジョブは 2 ノードジョブであり、L008 での RUNNING のジョブは 8 ノードジョブとなっておりました。合計 10 ノードが利用中となります。よって、空き計算資源は 2 ノードです。
したがって、L004 において QUEUED のユーザジョブは 2 つとも 4 ノードジョブであると、RUNLIMIT が 2 でも計算資源が足らず QUEUED のまま維持されます。


▲ HA8000クラスタシステムFAQ TOPへ


並列処理


要素並列化機能とは何ですか。
要素並列化機能とは 1 Node 内(16 プロセッサ)の複数プロセッサを並列に利用してプログラムを実行させる機能です。日立製作所のコンパイラでは SECTION 型要素並列化と呼ばれる並列化手法が提供されています。 SR11000などの本センターでサービスをしていたマシンで、この SECTION 型要素並列化を使用して並列化したプログラムをお持ちの方は HA8000 クラスタシステムでも引き続き使用できます。ですが、新しく作成するプログラムに関しては特殊な事情がない限り、 なるべく汎用的な方法での並列化をお勧めします。


詳細は日立発行のマニュアルを参照してください。
・最適化 Fortran 使用の手引(3000-3-E52)
・最適化 C 使用の手引(3000-3-E62)
・最適化標準 C++ 使用の手引(3000-3-E63)


MPI は使えますか。使い方を教えてください。
並列プログラミングのための MPI は、メーカーから提供されており、利用可能です。詳細は、「HA8000クラスタシステム利用の手引き」を参照してください。特に、コンパイル・リンク時に必要な指定が省略できるように、mpif77, mpif90, mpicc, mpiCC の各コマンドが用意されていますので、こちらをご利用ください。

MPI のプログラムを動かしたいのですが。
コンパイルコマンドは mpif77, mpif90, mpicc, mpiCC 実行コマンドは mpirun を使用してください。mpirun の実行ノード数は、ジョブスクリプトで指定したノード数が使用され、-n オプションは無効となります。 また、実行プロセス数はジョブスクリプトのノード数とノードあたりのプロセス数で決定され、-np オプションは無効となります。J オプションには T に続けてノードあたりのプロセス数を書きます。 J オプションを指定しない場合はプロセス数はノード数と同じ値となります。


例 1)
 #@$-q parallel
 #@$-N 4
 mpirun ./a.out → 4 ノード 4 プロセスで実行します。
例 2)
 #@$-q parallel
 #@$-N 4
 #@$-J T16
 mpirun ./a.out → 4 ノード 64 プロセスで実行します。
例 3)
 #@$-q parallel
 #@$-N 4
 #@$-J T5
 mpirun ./a.out → 4 ノード 20 プロセスで実行します。


「NQS におけるプロセス数の指定について」も参照してください。


GCC や Intelコンパイラで MPI を使うことはできますか。
使えます。GCC を使用する MPI は /opt/itc/mpi/mpich-mx-gcc/ 以下にあります。source /opt/itc/mpi/mpiswitch.sh mpich-mx-gcc としてから mpicc, mpicxx をご利用ください。Interコンパイラについては、「Intelコンパイラについて」をご覧ください。

MPIの環境変数はどのように設定されますか。
全ノードに設定が渡ります。

▲ HA8000クラスタシステムFAQ TOPへ


実行


$ a.out と入力したが、実行できません。
a.out の前に ./ (ピリオド、スラッシュ)を入れてください。以下の例を参考にしてください。


$ ./a.out


プロセスが使う CPU は固定できますか。
numactl コマンドが使用できます。詳細は「HA8000クラスタシステム利用の手引き 9.4 NUMA最適化実行の例」を参照してください。

パラメタ並列実行(prun)は可能ですか。
prun はありません。

計算ノードどうしで特殊ポートでの通信は可能ですか。
環境変数 PBS_NODEFILE に設定されているファイルに書かれているノード間で通信するのであれば自由です。

▲ HA8000クラスタシステムFAQ TOPへ


その他


他サイトでコンパイルしたプログラムがエラーで終了します
本センター以外のマシンでコンパイルしたプログラムの実行については、ソフトウェアのバージョンや環境等の違いにより正常に動作しない可能性があります。本センターにてコンパイルを行い、実行するようにしてください。

HA8000クラスタシステムのエンディアンは何ですか
HA8000クラスタシステムはリトルエンディアンです(FX 10スーパーコンピュータシステム、SR16000(SMP)はビッグエンディアンです)。Fortranで書かれたプログラムの場合、実行時オプションを指定することにより、異なるエンディアンでも利用可能です。詳細は日立マニュアルをご覧ください。


最適化 Fortran 使用の手引(3000-3-E52)
 3.2.3 PORT オプション
 付録F データ変換


64 ビットでコンパイルできますか。
HA8000 クラスタシステム上で提供しているコンパイラについては、特段、コンパイルオプション等を指定しない場合には、64 ビットでコンパイルされます。また、file コマンドを利用するなどで、64/32 ビットでコンパイルされているかどうかを確認することができます。


[64 bit の場合]

% file a.out
a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, 
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped


[32 bit の場合]

% file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, 
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

▲ HA8000クラスタシステムFAQ TOPへ