パーソナルツール
現在位置: ホーム すべてのサービス HPCクラウド・アプリケーション HPCクラウド (HUC12)

HPCクラウド (HUC12)

メディアセンターでは高度科学技術計算のためのHPCクラウドシステムを導入しています。利用者自身で作成されたプログラムの実行のほか,Gaussian/NastranのISVジョブを動かすことも可能です。

目次 

お知らせ

スケジューラ設定の見直しを行いました(2016年5月9日更新)

  • 各クラスの同時実行ジョブ数の設定について見直しを行いました。
    • test, small クラス:(変更前) 4, (変更後) 8
    • isv-small クラス:(変更前) 4, (変更後) 16

投入ジョブ数の制限について(2016年2月25日更新)

  • 特定ユーザのジョブ大量投入による混雑を避けるために,2016年2月25日より,1ユーザあたりのジョブ投入数を32に制限する処理を試験的に導入しています。
  • 今回のジョブ投入制限とフェアシェアスケジューリングにより,ユーザに公平な動作環境を提供することが目的です。制限については定期的な見直しを行います。ご理解とご協力をよろしくお願い致します。

HPCクラウドシステム構成

フロントエンド(ポータルサーバ)

物理構成

CPU Intel Xeon E5-2620 v3 2.4GHz (6C/12T) x 2CPUs
メモリ容量 (1ノードあたり) 64GB

導入ソフトウェア

ジョブスケジューラ SLURM
コンパイラ Intel Parallel Studio 2015 / Intel MPI v.5.0.3
GCC v.4.4.7 / OpenMPI v.1.8.6
ライブラリ Intel Math Kernel Library
GSL (GNU Scientific Library)
FFTW2, FFTW3
ISVアプリケーション Gaussian g09d01
MSC Nastran 2014.1

計算ノード

物理構成

CPU (1ノードあたり) Intel Xeon E5-2697 v3 2.6GHz (14C/28T) x 2CPUs
メモリ容量 (1ノードあたり) 64GB
インターコネクト 10Gbps Ethernet

論理構成

CPU (1仮想ノードあたり) Intel Xeon E5-2697 v3 2.6GHz 8 cores
メモリ容量 (1仮想ノードあたり)
16GB
仮想ノード数 48ノード

ストレージ

ファイルシステム Gluster FS
ディスク容量 HPCホーム領域 (/home): 20GB/1人,  HPCワーク領域 (/work): 26TB(共用. ※1)
※1: HPCワーク領域は共用です。利用者自身でディレクトリを作成することができますが,パーミッションの設定には十分配慮下さい。また,アカウント削除後のユーザワーク領域は一定期間をおいて削除を行います(年2回,9月および4月を予定)。あらかじめご了承ください。

初めて使う時は?

  • HPCクラウドを利用するためには、事前に一度だけWeb上で利用登録が必要になります(2015年8月以前の旧システムをご利用の方は既に登録済ですので登録の必要はありません)。
  • 利用登録システムの操作方法については 利用登録システム をご覧ください。

フロントエンド(ポータルサーバ)について

エディタ、シェル等

  • エディタは、emacs (GNU Emacs 23.1.1) および vim (7.2) が利用できます
  • ログインシェルは bash を推奨しています。csh, tcsh も利用可能できますが、利用者自身の責任でお使い下さい。

ディスク領域

  • ホームディレクトリのクォータ(利用量制限)は一人20GBまでです。ジョブの中間ファイルや大容量のファイルを生成する必要がある場合などは、ワーク領域(/work)をお使いください。
  • 一時的なデータ保存領域として、ワーク領域(/work : 26TB)が利用できます。 なお、利用者自身でディレクトリを作成することができますが,共用のためパーミッションの設定には気を付けてください。また,作成するディレクトリ名はアカウント名としてください。ワーク領域は一時作業領域ですので,メディアセンター側で定期的に監視し、整理する場合があります。重要なデータはホーム領域もしくは利用者自身のローカルディスクに保存するようにして下さい。
  • 離籍したアカウントのホーム領域およびワーク領域は,一定期間経過した後削除します。研究グループ等で必要となるデータは,卒業時までに引き継ぐようにお願いします。

ジョブスケジューラについて

SLURMスケジューラにおけるジョブクラス(パーティション)

本システムでは,ジョブ管理スケジューラとしてSLURMを導入しています。PBS Pro,LSF,GridEngine 等と同様に,マシンリソースを管理してジョブを効率よく実行させるためのソフトウェアです。

本システムにおけるジョブクラス(SLURMでは「パーティション」とよびます)は以下の通りです。なお、種別および設定は稼働率などを基に見直しを行う可能性があります。予めご了承下さい。

パーティション 最大コア数(並列度) 最大実行時間 ※1 同時実行ジョブ数 用途
test 8コア 1時間 8 テスト(動作確認)用
small 16コア 144時間 8 小規模ジョブ用
medium 32コア 72時間 4
中規模ジョブ用
large 64コア 36時間 2
大規模ジョブ用
param 1コア 24時間 16
シングルコアジョブ用
isv-small ※2 8コア 36時間 16 Gaussian, Nastran用
isv-large ※2 8コア 252時間(10.5日間)
16
Gaussian, Nastran用

※1 ・・・ ジョブが上記時間までにジョブが終了しなかった場合、ジョブは強制的に終了します。
※2 ・・・ ISVジョブはノード単位で処理され複数ノードを使うジョブは実行できません。

SLURMの基本コマンド

SLURMの基本コマンドは以下に示す通りです。各コマンドの具体的な利用方法については次節以降で説明します。コマンドのオプション等の詳細については man コマンドをご参考ください。
  • sinfo     パーティションの状態確認
  • squeue ジョブ実行状態の確認 
  • sbatch  ジョブの投入
  • scancel ジョブのキャンセル 

基本的な使い方

HPCグリッドシステムでの基本的な作業の流れは以下の通りになります。
  1. フロントエンドへのアクセス
  2. プログラムのコンパイル (自作プログラムの場合)
  3. パーティションの確認
  4. ジョブスクリプトファイルの作成とジョブ投入
  5. ジョブの確認と削除

以下に手順を追って基本的な使い方について説明します。

 1. フロントエンドへのアクセス

  • ホスト: hpcg.huc.hiroshima-u.ac.jp (学内限定)
  • センターアカウントおよびパスワードで認証可能
  • SSHアクセスのみ許可しています
    • Windows からは TeraTermPro + TTSSH、 Cygwin 等を別途インストールし、ご利用下さい。
    • Linux, MacOSX, 各種UNIXは ssh コマンドが利用できます。
  • ファイル転送は scp または sftp のみ可能です。
    • Windows からは WinSCP を別途インストールし、ご利用下さい。
    • Linux, MacOSX, 各種UNIXは scp コマンドが利用できます。
  • 学内からのアクセスのみ許可しています。学外からはメディアセンターが提供するSSL-VPNサービスをご利用下さい。

2. 実行環境の切替とプログラムのコンパイル(自作プログラムの場合)

(2-1) moduleコマンドによる実行環境の切替

本システムでは,実行環境(コンパイラ,ライブラリ等)の切替設定に module コマンドを利用します。なお,初期は intel/all が選択され,Intel Paralell Studio 2015 + Intel MPI の使用環境をなっています。
利用可能な環境の一覧表示は以下の通りです。
$ module avail

------------------------ /usr/share/Modules/modulefiles ------------------------
PrgEnv-intel   intel/compiler module-git     null
dot            intel/impi     module-info    use.own
gnu/openmpi    intel/itac     modules

------------------------------- /etc/modulefiles -------------------------------
gaussian/g09   intel/all      intel/impi     nastran/20141
gnu/openmpi    intel/compiler intel/itac

通常用途であれば,Intel Parallel Studio利用には「intel/all」を,GNU Compiler + OpenMPIの利用には「gnu/openmpi」を選択します。GAUSSIAN g09dは「gaussian/g09」,NASTRAN20141 は「nastran/20141」をそれぞれ選択してください。

目的の環境への切替えと確認には以下のコマンドを利用します。

$ module load intel/all
$ module list
Currently Loaded Modulefiles:
  1) intel/compiler   3) intel/itac
  2) intel/impi       4) intel/all
$ module unload intel/all
$ module list
No Modulefiles Currently Loaded.

●● 注意 ●● 
実行環境を切り替えるには,切替え前のモジュールを一旦 unloadする必要があります。
「module list」コマンドでモジュールが読み込まれていないことを確認してから,load してください。

(2-2) Intelコンパイラ+Intel MPIの場合

(2-1)のmoduleコマンドにより,intel/all への切替が出来ていることを確認したら,実際にソースコードをコンパイルします。Intelコンパイラを使用する場合のコマンドは下記の通りです。詳細はmanコマンドを利用してドキュメント参照してください。

・コンパイル例

言語 コマンド書式 記述例
Fortran ifort [option] source ifort -o ./exec.exe ./source.f90
C icc [option] source icc -o ./exec.exe ./source.c
C++ icpc [option] source icpc -o ./exec.exe ./source.c++
$ icc -o ./cpi ./cpi.c
・MPIプログラムのコンパイル例
言語 コマンド書式 記述例
Fortran mpiifort [option] source mpiifort -o ./exec.exe ./source.f90
C mpiicc [option] source mpiicc -o ./exec.exe ./source.c
C++ mpiicpc [option] source mpiicpc -o ./exec.exe ./source.c++
$ mpiicc -o ./cpi ./cpi.c

(2-3) GNUコンパイラ+Open MPIの場合

(2-1)のmoduleコマンドにより,gnu/openmpi への切替が出来ていることを確認したら,実際にソースコードをコンパイルします。

・コンパイル例

言語 コマンド書式 記述例
Fortran gfortran [option] source gfortran -o ./exec.exe ./source.f90
C gcc [option] source gcc -o ./exec.exe ./source.c
C++ g++ [option] source g++ -o ./exec.exe ./source.c++
$ gcc -o ./cpi ./cpi.c
・MPIプログラムのコンパイル例
言語 コマンド書式 記述例
Fortran mpifort [option] source mpifort -o ./exec.exe ./source.f90
C mpicc [option] source mpicc -o ./exec.exe ./source.c
C++ mpicxx [option] source mpicxx -o ./exec.exe ./source.c++
mpicc -o ./cpi ./cpi.c
  • OpenMPの利用

OpenMPを利用する場合,Intelコンパイラ利用時には「-openmp」オプションを利用します。以下に例を記述します。詳細は HPC システム コンパイラ・ライブラリ ドキュメント を参照ください。
icc -openmp –openmp-report2 -O3 sample1.c

GNUコンパイラ利用時には「-fopenmp」オプションを利用します。
gcc -fopenmp -O3 sample1.c
  • Intel Math Kernel Libraryの利用

ヘッダファイルは /opt/intel/mkl/include/, ライブラリは /opt/intel/mkl/lib/ にあります。rapack,scalapack,blas95 等のライブラリはここに含まれています。
  • GNUScientific Library (GSL)の利用

ヘッダファイルは /usr/include/gsl/ 以下にあります。
#include <gsl/gsl.h>
などと記述すれば -I によるヘッダディレクトリ指定は不要です。 また、ライブラリは /usr/lib64 直下にありますので、-L によるライブラリディレクトリの指定は不要です。 リンカに -lgsl 等と指定してリンクしてください。詳細は man gsl で確認してください。
  • 離散フーリエ変換ライブラリ FFTW の利用

FFTW2 及びFFTW3 がインストールされています。ヘッダファイルは /usr/include 直下にインストールされていますので -I によるヘッダディレクトリ指定は不要です。 また、ライブラリは /usr/lib64 直下にありますので -L によるライブラリディレクトリの指定は不要です。 利用方法の詳細については FFTW Home Pageをご覧下さい。

3. パーティションとジョブの確認

各パーティションの状態は sinfo コマンドで確認できます。
$ sinfo -s
PARTITION AVAIL  TIMELIMIT   NODES(A/I/O/T)  NODELIST
test         up    1:00:00        0/48/0/48  hpc-calc[01-48]
small        up 6-00:00:00        0/48/0/48  hpc-calc[01-48]
medium       up 3-00:00:00        0/48/0/48  hpc-calc[01-48]
large        up 1-12:00:00        0/48/0/48  hpc-calc[01-48]
isv-small    up 1-12:00:00        0/48/0/48  hpc-calc[01-48]
isv-large    up 10-12:00:0        0/48/0/48  hpc-calc[01-48]
param        up 1-00:00:00        0/48/0/48  hpc-calc[01-48]

各項目の説明は以下の通りです。

PARTITION     パーティション名
AVAIL             パーティション状態 (upもしくはinact)
TIMELIMIT      最大実行時間
NODES            (A) ジョブ割り当て済みノードの数 (I) 空き状態ノードの数
                      (O) その他ノードの数 (T) AIOの合計
NODELIST       動作対象ノード(上記では,計算ノード01~48が割り当てられています)
ジョブの実行状態を確認するには squeue コマンドで確認できます。
$ squeue
       JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
       332     large SampleJo   XXXXXXXX  R       0:24      8 hpc-calc[01-08]

各項目の説明は以下の通りです。

JOBID           ジョブID
PARTITION    実行パーティション名
NAME            ジョブ名
USER             ユーザー
ST                 ステータス
TIME             ジョブの実行時間(WallTime)
NODES          実行ノード数
NODELIST      ノードリスト

各コマンドの詳細は,manコマンドでご確認ください。

4. ジョブスクリプトファイルの作成

ジョブを投入するには、実行プログラムのほかにジョブの処理内容を記述したジョブスクリプトファイルを用意します。ジョブスクリプトファイルの代表的な書式を以下に示します。

#!/bin/sh                      …(1)
#SBATCH -p test                …(2)
#SBATCH -n 8                   …(3)
#SBATCH -t 00:10:00            …(4)
#SBATCH -J SampleJob           …(5)
#SBATCH --mail-type=BEGIN,END,FAIL,REQUEUE,TIME_LIMIT    …(6)
#SBATCH --mail-user=hogehoge@hiroshima-u.ac.jp           …(7)

export OMP_NUM_THREADS=$SLURM_NTASKS   …(8)
./samplejob
  1. ジョブスクリプトが shスクリプトであることを示します
  2. ジョブを投入するパーティションを指定します
  3. 確保するプロセス数を指定します
  4. 制限時間(WallTime)を指定します
  5. ジョブ名を指定します。squeue などの出力時に表示されます
  6. メール送信のタイミングを記述します。以下を指定でき,複数の場合はカンマで区切ります
    • BEGIN     ジョブ開始時
    • END      ジョブ終了時
    • FAIL      ジョブエラー時
    • REQUEUE    ジョブリキューイング時
    • ALL       BEGIN,END,FAIL,REQUEUEを全て指定したものと同じ
    • TIME_LIMIT   ジョブスクリプト内で指定した時間制限に達した時
    • TIME_LIMIT_{90,80,50} ジョブスクリプト内で指定した時間制限の{90,80,50}%に到達した時
  7. メールの宛先を記述します。複数の場合はカンマで区切ります
  8. 実際に実行するコマンドを指定します。$SLURM_NTASKはSLURMが提供する環境変数です。本例ではSLURMで指定した8ノードを利用してMPIジョブを実行する例を示しています。

ジョブスクリプト内の #SBATCHディレクティブで指定できる ジョブスケジューラSLURMの仕様 で確認できます。

5. ジョブの投入

ジョブの投入は sbatch コマンドを利用します。引数には前項で作成したジョブスクリプトファイルを指定します。
$ sbatch ./jobtest.sh

6. ジョブの確認

パーティションに投入されたジョブの状況を確認するには squeue コマンドを利用します。
以下に実行例を示します。
$ squeue 
        JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
          525      test sample     XXXXXX  R       0:02      1 hpc-calc01

7. ジョブの削除

パーティションに投入されたジョブの削除するには scancel コマンドを利用します。

Gaussianジョブの投入方法

1. 実行環境の切替

Gaussianジョブを実行する場合,まず gaussian/g09 のモジュールをロードします。

$ module list
No Modulefiles Currently Loaded.
$ module load gaussian/g09

2. ジョブスクリプトファイルの作成

Guassianジョブの場合,以下の手順で実行します。
  1. 環境変数読み込み
  2. スクラッチディレクトリの作成
  3. 実行
  4. スクラッチディレクトリの削除
Gaussian実行用のジョブスクリプトのサンプルを示します。
#!/bin/sh
#SBATCH -p isv-small
#SBATCH -n 8
#SBATCH -J gau-output

# Gaussian Environment Variables
g09root=/opt
export g09root
if [ -r ${g09root}/g09/g09 ] ; then
        . $g09root/g09/bsd/g09.profile
        PATH=${g09root}/g09:$PATH
        export PATH
fi
# Create a scratch directory (name = uid / pid)
GAUSS_SCRDIR=/work/gau/${USER}/${HOSTNAME}
export GAUSS_SCRDIR
mkdir -p ${GAUSS_SCRDIR}

# Execute
g09 < test006.com

# Remove the scratch directory
rm -fr ${GAUSS_SCRDIR}
exit 0

スクリプトは以下の点に注意して作成してください。

パーティション設定
  • -p isv-small  キューは必ず isv-small か isv-large を指定してください。
リソース
  • -n 8  1ノード8コアとしてください。
スクラッチディレクトリの定義と作成
  • 環境変数 GAUSS_SCRDIRを定義してmkdirください。通常 /work/gau/${USER} 以下に作成してください。複数ジョブ実行時に重複することを避ける工夫をしてください。例の場合は,/work/gau/${USER}/${HOSTNAME} として重複を避けています。また、最後にこのスクラッチディレクトリを削除するのを忘れないでください(上記のジョブスクリプトでは下から2行目で rm コマンドにて削除をしています)。
g09
  • gaussian の実行プログラムは g09 です。例では入力データ(ファイル名 test006.com) をリダイレクト (<) で渡しています。 

3. ジョブの投入

ジョブの投入は、上記スクリプト(gau.shとします)を入力データファイルと同じディレクトリに置き、sbatch コマンドで投入します。sbatch のオプションはスクリプトの先頭に全て記述済みですので以下の通り引数はファイル名だけで結構です。
$ sbatch ./gau.sh

Nastranジョブの投入方法

1. 実行環境の切替

Nastranジョブを実行する場合,まず nastran/20141 のモジュールをロードします。

$ module list
No Modulefiles Currently Loaded.
$ module load nastran/20141

2. ジョブスクリプトファイルの作成

Nastranは以下の手順で実行されます。

  1. スクラッチディレクトリの作成
  2. 実行
  3. スクラッチディレクトリの削除
Nastran実行用のジョブスクリプトのサンプルを示します。
#!/bin/sh
#SBATCH -p isv-small
#SBATCH -n 8
#SBATCH -J nas-output

sdir=/work/nastran/${USER}/${HOSTNAME}
mkdir -p ${sdir}

nast20141 mydata.dat smparallel=8 scratch=yes sdirectory=$sdir batch=no append=yes

rm -fr ${sdir}
exit 0

スクリプトは以下の点に注意して作成してください。

パーティション設定  -p isv-small
  • パーティションは必ず isv-small か isv-large を指定してください。
リソース  -n 8
  • 1ノード8コアとしてください。
スクラッチディレクトリの定義と作成
  • 環境変数 sdir を定義して mkdir してください。通常,/work/nastran/${USER}/ 以下に作成してください。複数ジョブ実行時に重複することを避ける工夫をしてください。例の場合は,/work/nastran/${USER}/${HOSTNAME} として重複を避けています。また、最後にこのスクラッチディレクトリを削除するのを忘れないでください(上記のジョブスクリプトでは下から2行目で rm コマンドにて削除をしています)。
smparallel=8
  • 必ず指定してください。nastran で使用する CPU のコア数です。本システムでは8コアですので -n で指定する ncpus の値と一致する必要があります。
batch=no
  • 必ず指定してください。指定しないとジョブがバックグラウンドで起動します。計算が終了していないにもかかわらず SLURM に対して終了を宣言してしまいます。 仮に指定しない場合、バッチで起動された nastran は起動後数秒で SLURM により強制終了させられます。

3. ジョブの投入

ジョブの投入は、上記スクリプト(nastran.shとします)を入力データファイルと同じディレクトリに置き、sbatch コマンドで投入します。sbatch のオプションはスクリプトの先頭に全て記述済みですので以下の通り引数はファイル名だけで結構です。
sbatch  ./nastran.sh

演習

HPCクラウドシステム講習会で利用した資料を提供しています。
こちら からダウンロードしてください(学内限定)。

また HPCポータル上の/opt/samples/ディレクトリにサンプルファイルを用意しています。
こちらも合わせてご利用ください。

/opt/samples
 ・koshukai      ・・・ 上記講習会でのサンプルファイル
 ・slurm_g09     ・・・ Gaussianジョブ実行のためのサンプルファイル
 ・slurm_mpi     ・・・ MPIジョブ実行のためのサンプルファイル
 ・slurm_nast20141  ・・・ NASTRANジョブ実行のためのサンプルファイル

パブリッククラウドの利用

各種マニュアル、参考資料(学内限定)

  • HPCシステムドキュメント
    • コンパイラ・ライブラリドキュメント(インテルコンパイラ, インテルMKL, インテルMPI, OpenMP)
    • ジョブスケジューラSLURMドキュメント
    ドキュメントアクション