◆◆◆◆INSAMシステムについて◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
	[HSPシステムを中心に]
						1999.4.20 草野完也 記

 ■■ INSAMシステムについて

  INSAMは数値実験的手法による研究教育活動を行うため、INSAMシステムを保有し、自主的に維持管理しています。INSAMシステムを利用する全ての研究者はその管理に参加する義務を負います。

 ■■ INSAMシステムの構成

  INSAMシステムは以下の2つのシステムから構成されています。

        a. WS システム
                ワークステーション及びワークステーションクラスタ
                からなり、主に並列処理、スカラ処理、画像処理を担当する。

        b. HSP システム
                NEC製高速科学技術計算サーバHSPを中心としたシステムです。
                ベクトル高速処理を担当します。システム構成は以下の通りです。

		   hsp NEC製高速科学技術計算サーバHSP
		        主記憶 8GB ピーク性能 8GFLOPS x 2cpu
		        磁気ディスク 800GB

		   iox 133.41.136.202 NEC製HSP用IOサーバ
		        集合DAT x 2

		   daisen 133.41.136.203 SunUltra10 300MHz 256MB 36GB 
		        CDROM FD
		        プログラム開発 クロスコンパイル nqs

        <注意>WSおよびHSPシステムの構成マシンにはそれぞれ固有の役割
        があります。それぞれのマシンの役割と性能をよく理解した上で、
	利用して下さい。特に、daisenはプログラム開発とクロスコンパイラ
	以外に使用しないで下さい。


 ■■ HSP システム

        a. hsp はベクトル型高速計算機です。約99%以上ベクトル化されて
           いないコードの実行効率は極端に悪くなります。ベクトル化率
           が低いコードの利用は自粛して頂く場合があります。

        b. hsp で実行されるプロセスのcpu時間、ベクトル化率などは常時
           専用データベースに記録されます。

        c. hsp はdaisen からnqs を利用して使います。直接loginすること
           は原則としてできません。nqsのジョブクラスは別紙の資料を参考に
           して下さい。daisen上で使用できる主なnqsコマンドは以下の通り
	   です。(詳しくはmanを見よ!)

		/usr/local/bin/qsub  -q キュークラス   実行スクリプト名
		(実行スクリプトをキュークラスへ投入する)

		/usr/local/bin/qstat -h hsp
		(hspに投入されたジョブの状態を調べる)

		/usr/local/bin/qdel [ -k ] -h hsp request-id
		(hspに投入されたrequest-idのジョブをキャンセルする。
		実行中の場合は -k を付ける。)
  
        d. hsp は課金管理されます。

        e. hsp は2CPUの共有メモリシステムであり、CPU時間はそれぞれの
           CPUの使用時間の合計です。並列最適化されていないコードは
           複数のCPUを使用すると効率が悪くなる場合があります。

        f. 以下のファイルシステムはdaisenとhspでnfs共有されます。

		ホームディレクトリ daisen:/home/users
		恒久データ用ファイルシステム hsp:/hsp
		一時データ用ファイルシステム hsp:/hspwork

        g. hspの恒久データ用ファイルシステム /hsp の利用可能容量
           は最大5GB/課題です。

        h. hspの一時データ用ファイルシステム /hspwork に記録されている
           ファイルで2週間以上放置されているものは自動消去されます。

	i. iox にはDAT操作用のアカウント tape が用意されています。
	   /hspおよび/hspwork 上のファイルをDATに退避するために使用して
	   下さい。テープアカウント tape のパスワードはオペレータに問い
	   合わせてください。

	   マルチボリュームのテープアクセスにはnectarコマンドが便利です。
	   詳しくはマニュアルを参照してください。

	   なお、ioxにおけるDATのデバイス名は以下の通りです。

		/dev/rsmt/c1t1d0	上のドライブ
		/dev/rsmt/c1t0d0	下のドライブ

	j. iox からは2GB以上の大きさを持つファイルにアクセスできません。
	   1個で2GB以上の大きさをもつファイルをDATへ退避する場合は、
	   hspにて行わなくてはなりません。hspにおけるマルチボリューム用の
	   テープアクセスにはmtarが便利です。詳しくはマニュアルを参照して
	   ください。

	   なお、hspにおけるDATのデバイスは以下の通りです。

		/dev/rdt/s0f145hn	上のドライブ
		/dev/rdt/s0f144hn	下のドライブ

		最後の2文字に
		h を付けると圧縮モード (DDS3 1巻約 24GB)
		  非圧縮(DDS3 1巻約 12GB)は l をつける。
		n を付けるとrewind 抑止
	
	k. daisen におけるクロスコンパイラ

		/SX/usr/bin/sxf90

	   daisen におけるクロスコンパイラライブラリ・ディレクトリ

		/SX/usr/lib


 ■■ HSP ジョブクラス

        a. 昼間モードと夜間モードのクラスを以下のように決める。

           昼間モード(午前9時から午後9時まで)

             キュー  ジョブ数   最大メモリ  CPU時間(sec)
                c       2       4GB            300
                d2      3       2GB          7,200
                d4      1       4GB          7,200

           夜間モード(平日:午後9時から午前9時まで、
                および土・日曜全日)     

             キュー  ジョブ数   最大メモリ  CPU時間(sec)
                e       2       7.5GB       18,000

        b. 昼間モードから夜間モードへの移行は、平日午後9時に全ての
        キューの実行権を閉じた後、実行するジョブが無くなった時点で
        行われる。

        c. 夜間モードから昼間モードへの移行は以下のどちらかの
        条件が満たされたとき行われる。

                (1) 平日の午前9時になったとき。
                (2) 夜間モードの実行ジョブが無くなったとき。

        なお、(1)の場合、実行中のジョブはswap領域に退避され、次に
        夜間モードになった時点で再開される。

        d. 同一のユーザが同一のキューに複数のジョブを入れた場合、
        2本目以降のジョブの実行優先度は下る。



 ■■ ベンチマークテスト 

      do i=1,nx-1
      do j=1,ny-1
      do k=1,nz-1
         a(i,j,k)=10.0d0*a(i,j,k)
     &           +(b(i+1,j,k)-b(i-1,j,k))*0.5d0
     &           +(c(i,j+1,k)-c(i,j-1,k))*0.1d0
      end do
      end do
      end do

◆ 短いベクトルはWSの方が早い!  nx=10,ny=10,nz=10 
HSP: 	vector		3.39E-5 sec ( 150MFlops)
  VLEN                  :         27.639714
  V. Op. Ratio (%)      :         62.832456
PD (Alpha 600MHz): f90 -fast -tune ev5
			2.23E-5 sec ( 228MFLops)
		   g77	2.61E-5 sec ( 194MFlops)
PW (Alpha 433MHz): f90 -fast -tune ev5
			3.13E-5 sec ( 162MFlops)

◆ 長いベクトルではhspが断然強い! nx=100,ny=100,nz=100
HSP: 	vector		4.02E-3 sec (1690MFlops)
  VLEN                  :        100.363914
  V. Op. Ratio (%)      :         98.566610
			でも、ベクトル化できなければ悲惨!!!
	novector	5.90E-1 sec (  12MFlops)
PD (Alpha 600MHz): f90 -fast -tune ev5
			2.88E-1 sec (  25MFLops)
		   g77	3.22E-1 sec (  20MFlops)
PW (Alpha 433MHz): f90 -fast -tune ev5
			5.92E-1 sec (  12MFlops)

◆ もっと長いベクトルを使うと! nx=300,ny=300,nz=300
HSP: 	vector		8.29E-2 sec (2256MFlops)
  VLEN                  :        156.796846
  V. Op. Ratio (%)      :         99.182838



 ■■ Program Information 

実行スクリプトの中で環境変数、F_PROGINF を YES にするとProgram Information
が出力される。ただし、多用すると実行性能が低下する。

cshの場合: setenv F_PROGINF YES

Program Information の出力例

     ******  Program Information  ******
  Real Time (sec)       :       5773.370423
  User Time (sec)       :       5718.251241
  Sys  Time (sec)       :         32.294963
  Vector Time (sec)     :       4277.347957
  Inst. Count           :      227810313199.
  V. Inst. Count        :      121662665650.
  V. Element Count      :    26549245474171.
  FLOP Count            :    11170861700009.
  MOPS                  :       4661.458897
  MFLOPS                :       1953.545101
  VLEN                  :        218.220153
  V. Op. Ratio (%)      :         99.601778
  Memory Size (MB)      :        116.031250