初心者のための HSP システムの使い方

岩瀬康行 (99.6.2)

私ごときが書くのもおこがましいですが、HSP を使って計算をしたいが使い方 が良く分からないという方のために簡単な使い方を書きました。 なお、ここでいう「初心者」というのは INSAM やベクトルスーパーコンピュー タにあまり馴染みがない人という意味で、UNIX の基本的な知識やプログラム言 語に関する知識はあることを前提とします。

1. HSP とは何者か?

HSP とは日本電気(NEC)の最新のベクトル型(スーパー)コンピュータです。 NEC のホームページを 見ても HSP という機種は載っていません。 HSP は INSAM のために NEC が独自開発したコンピュータだからです。 S×-5/2D(×は伏字、エックスではない)と同等のコンピュータだと思って下さ い。 ということで、NEC の SX シリーズと高い互換性を持っているので、SXシリーズ を使ったことのある方はほぼ同じに使うことができます。 HSP は UNIX (SUPER UX) で動いているので、研究室にある(あるいはINSAM所有の) ワークステーションと同様の使い方をします。 今までワークステーション等で動いていたプログラムもHSP用に特別にソース コードを変更することもなく動きます。 ただし、以下の2点の注意があります。
1. HSP は大規模計算専用に使用するため、一般ユーザが直接ログインして操作を おこなうことはできないようにしてあります。 操作は HSP のフロントエンド(ホスト名=daisen、Sun ULTRA10)からすべて行い ます。
2. HSP は高い性能を持っていますが、高い性能を引き出すためにはプログラムを チューニングする必要があります。 あまり、チューニングされていないプログラムならワークステーションで走ら せた方が高速に動きます。
以下の章ではフロントエンドからの HSP の操作とプログラムのチューニングに ついて簡単に説明をします。

2.HSP の操作方法

HSP システムはすべてフロントエンドである daisen から操作を行います。 daisen の FQDN は daisen.sci.hiroshima-u.ac.jp で IP アドレスは 133.41.136.203 です。

2.1 ファイルシステムの構成

ユーザが使用できるファイルシステムのディレクトリ構成はdaisenとHSPは同じです。
    /home/users1/ユーザ名
または
    /home/users2/ユーザ名
に各ユーザのホームディレクトリがあります。 ホームディレクトリに置くことのできるファイルの量には制限があります。 各ユーザ毎に 2GB までファイルを置くことができます。 この他に
    /hsp/ユーザ名
    /hspwork/ユーザ名
というディレクトリが使用できます。 これらは HSP システムのファイルシステムなので高速な入出力が行えます。
: HSP から daisen のファイルシステムに書き込むのははっきりいって遅いです。

/hsp/ユーザ名 は容量制限は 3GB です。
/hspwork/ユーザ名 は容量制限はありませんが、 作成(変更)してから2週間を経過したファイルは自動的に消去されます。

2.2 コンパイルの方法

HSP で動かすためのコードは daisen でコンパイルすることができます。
    /SX/usr/bin/sxcc
    /SX/usr/bin/sxf90
がそれぞれ C コンパイラ、FORTRAN90 コンパイラです。
: daisen 自身で動くコードを生成するためのコンパイラ は /opt/SUNWspro/bin にあります(cc、f77、f90など)。

コンパイラのオプションについては「HSP のチューニング」で説明します。

2.3 ジョブの投入方法

daisen から HSP へジョブを投入するには、NQS (Network Queue System)を 利用します。 ジョブを投入するに当たって、まず、ジョブクラス を決めなければなりません。 HSP で計算に使用する CPU 時間、メモリによっていくつかのジョブクラスが 設定されているのでそのうちのどれかを選ばなければなりません。
ジョブクラスが決まったら、以下のようにしてジョブを投入します。
    qsub -q ジョブクラス 実行スクリプト名
ジョブを投入すると、
    Request ジョブ番号.daisen submitted to queue: ジョブクラス.
というメッセージがでます。 ジョブ番号は daisen の NQS が勝手に割り振る番号で、今後、このジョブに 対する操作を行う際に必要なものです。
実行スクリプトの中身は例えば
#!/bin/sh
F_PROGINF=detail
export F_PROGINF

cd /hsp/opr01
/hsp/opr01/a.out
のような物です(色々と指定できます。詳しくは man qsub して下さい)。 ジョブが終了すると標準では
    実行スクリプト名.eジョブ番号
というファイルと
    実行スクリプト名.oジョブ番号
というファイルが作られます。 「実行スクリプト名.eジョブ番号」は標準エラー出力の結果、 「実行スクリプト名.oジョブ番号」は標準出力の結果です。 コンソール画面に直接結果が出力されることはありません。

2.4 ジョブの操作方法

自分の投入したジョブがどうなっているのかは
    qstat -h hsp
で知ることができます。 以下のようなメッセージがでます。
d2@hsp;  type=BATCH;  [ENABLED, STOPPING];  pri=10
  0 exit;  1 run;  0 suspend;  0 stage;  0 queued;  0 wait;  0 hold;  0 arrive;

<1 request RUNNING>

d4@hsp;  type=BATCH;  [ENABLED, STOPPING];  pri=10
  0 exit;  1 run;  0 suspend;  0 stage;  0 queued;  0 wait;  0 hold;  0 arrive;

<1 request RUNNING>

c@hsp;  type=BATCH;  [ENABLED, STOPPED];  pri=10
  0 exit;  0 run;  0 suspend;  0 stage;  0 queued;  0 wait;  0 hold;  0 arrive;


e@hsp;  type=BATCH;  [ENABLED, STOPPED];  pri=10
  0 exit;  0 run;  0 suspend;  0 stage;  4 queued;  0 wait;  0 hold;  0 arrive;

<4 requests QUEUED>
d2、d4クラスにそれぞれジョブが1本ずつ走っていて、eクラスには4本のジョブが キューに入っています。
HSP では同時に走らせることのできるジョブの数は制限されていて、 制限を越えた分はキューに入り順番が来るまで待っています。 順番が来ると自動的にジョブは走り始めます。
自分の投入したジョブの状態をさらに詳しく知りたい場合は
    qstat -l -h hsp
とします。 (必要以上に)詳細な情報が表示されます。
: 他人のジョブの詳しい情報を見るコマンドはありません。

自分の投入したジョブを中止するには
    qdel [-k] -h hsp ジョブ番号.daisen
とします。 -k はすでに実行中の場合に必要です。

3.HSP のチューニング

作成中です。