基本的な利用方法
本ページでは、スーパーコンピュータシステムを利用するための基本的な情報のみを記載しています。 より詳しい使い方については、利用者管理ポータルから入手できる「スーパーコンピュータシステム利用手引書」(PDFファイル)をご参照ください。
システムへの接続方法
スーパーコンピュータシステムを初めて利用する場合、まず、SSOもしくはiiC-IDとそのパスワードにより、利用者管理ポータルにログインし、SSH公開鍵を登録してください。 利用者管理ポータル上で鍵を作成し、秘密鍵をダウンロードする形での登録も可能です。
- SSH公開鍵:利用者管理ポータルの
サービスメニュー>情報登録・参照>SSH公開鍵登録から登録 - 接続方法:SSH(ver. 2)の公開鍵認証およびOAuth認証によるSSHアクセス(ssh/scp)のみ許可
- ログインノードのアドレス:grand.hucc.hokudai.ac.jp
重要
- スーパーコンピュータシステムへのアクセスに使用するユーザー名は、利用申請後に通知される利用者番号です。
- SSH秘密鍵には必ずパスフレーズを付けてください。
- 接続のためのターミナルは、最新のバージョンでご利用ください。
- 秘密鍵と公開鍵(鍵ペア)を同一サーバ上に保存しないでください。
- 複数人の間でのユーザーアカウント(利用者番号)の使い回しは厳禁です。
利用可能なストレージ領域
ユーザーが利用可能なストレージ領域は以下の通りです。
- home領域(
/home/ユーザ名):デフォルトで100GBを割り当て(追加申請可能) - work領域(
/work/ユーザ名(or グループ名)):付加サービスの申請により利用可能
ディスクの使用量について
show_quotaコマンドでディスクの使用状況と上限値を確認することができます。
注意
ファイルシステムの仕様上、1つのディレクトリ配下に作成できるファイル数に上限があります。 上限値はファイル名の長さに依存し、約400万個から1200万個です。 上限値を超えてファイルを作成しようとした場合、「No space left on device」のエラーが発生します。
実行パス/ライブラリの設定
ユーザーは、moduleコマンドを用いることで、アプリケーション実行やライブラリの利用時に必要となる環境変数(PATH、LD_LIBRARY_PATH)などの設定(load)・解除(unload)を行うことができます。サブコマンドは以下のとおりです。
| サブコマンド | 説明 |
|---|---|
list |
設定中のアプリケーション、ライブラリ一覧を表示 |
avail |
設定可能なアプリケーション、ライブラリ一覧を表示 |
load <module> |
アプリケーション、ライブラリ向けの環境変数を設定 |
unload <module> |
アプリケーション、ライブラリ向けの環境変数を解除 |
switch <moduleA> <moduleB> |
アプリケーション、ライブラリ向けの環境変数をmoduleAからmoduleBに入替 |
purge |
設定中のすべてのアプリケーション、ライブラリを解除 |
help <module> |
アプリケーション、ライブラリの使用方法を表示 |
注意
- moduleコマンドによる設定は、プログラムのコンパイル時だけでなく、実行時(ジョブスクリプト内)にも必要となる場合があります。詳しくはジョブスクリプトの例をご参照ください。
- 同一アプリケーションの複数バージョンや、排他関係にあるアプリケーション、ライブラリは同時に利用することができません。
module availで利用したいアプリケーション、ライブラリが表示されない場合、依存関係にあるアプリケーション、ライブラリを先にloadする必要があります。詳しくは、実行パス/ライブラリの依存関係をご参照ください。
プログラムのコンパイル
インテルコンパイラ
以下はIntel oneAPI (Classic) のコンパイルコマンド一覧(推奨)です。
| 言語 | 逐次(非MPI) | MPI並列 |
|---|---|---|
| Fortran | ifort |
mpiifort |
| C | icc |
mpiicc |
| C++ | icpc |
mpiicpc |
以下はIntel oneAPIのコンパイルコマンド一覧(参考)です。
| 言語 | 逐次(非MPI) | MPI並列 |
|---|---|---|
| Fortran | ifx |
mpiifx |
| C | icx |
mpiicx |
| C++ | icpx |
mpiicpx |
インテルコンパイラ向けの主なオプション
-xCORE-AVX512: 最適化オプション-qopenmp: OpenMP(デフォルトでは無効)
GPU向けコンパイラ
以下はNVIDIA HPC SDKのコンパイルコマンド一覧です。
| 言語 | 逐次(非MPI) | MPI並列 |
|---|---|---|
| Fortran | nvfortran |
mpifort |
| C | nvc |
mpicc |
| C++ | nvc++ |
mpic++ |
GPU向けコンパイラ向けの主なオプション
-fast: 最適化オプション-mp: OpenMP(デフォルトでは無効)-acc: OpenACC(デフォルトでは無効)
プログラムの実行
スーパーコンピュータシステムで利用可能なジョブ形式は、「バッチジョブ」と「インタラクティブジョブ」の2種類です。 ここではバッチジョブについて説明します。
ジョブスクリプトの作成
バッチジョブを実行するためには、以下の例のようなジョブスクリプトを作成する必要があります。
なお、ジョブスクリプトの拡張子は一般的に.shです。
#!/bin/sh
#------ qsub option ------ #
#PBS -q sc
#PBS -l select=1:nsockets=1
#PBS -l walltime=1:00:00
#PBS -W group_list=group1
#PBS -j oe
#------ Program execution ------ #
cd ${PBS_O_WORKDIR}
./a.out
引数の説明
#!/bin/sh: シェルのパスを指定- ログインシェルがbash以外で、shで記述されたジョブスクリプト内でmoduleコマンドを実行する場合は、「
#!/bin/sh -l」を指定する必要があります。 - bashで記述されたジョブスクリプト内でmoduleコマンドを実行する場合は、「
#!/bin/bash -l」を指定する必要があります。
- ログインシェルがbash以外で、shで記述されたジョブスクリプト内でmoduleコマンドを実行する場合は、「
#PBS -q: キューの指定(指定可能なキューについてはこちらをご参照ください。)#PBS -l: ジョブ実行に必要な資源値を指定select=<nnodes>:nsockets=<num>: ノード数、ノードあたりのCPUソケット数を指定(CPUノードの場合)select=<nnodes>:ngpus=<num>: ノード数、ノードあたりのGPUカード数を指定(GPUノードの場合)walltime=<elapselimit>: 経過時間制限値を指定 (hh:mm:ssで指定)
#PBS -W group_list=<groupname>: ジョブ実行時にトークンを消費するグループを指定#PBS -j oe: 標準エラー出力のマージ指定cd ${PBS_O_WORKDIR}: ジョブ投入ディレクトリに移動./a.out: プログラムの実行
具体的なジョブスクリプトの例については、こちらに記載していますので、ご参照ください。
コンテナの実行
スーパーコンピュータシステムでは、LinuxコンテナとしてSingularityを使用できます。 コンテナの実行方法についてはこちらをご覧ください。
ジョブ操作
以下はジョブ操作のためのコマンド一覧です。
| コマンド | 機能 |
|---|---|
qsub |
ジョブ投入 |
qstat |
ジョブ状態表示 |
qdel |
ジョブ削除 |
qhold |
ジョブ保留 |
qrls |
ジョブ保留の削除 |
ジョブ実行結果確認
- ジョブの標準出力 (マージオプション
-j eoを指定しない場合): 「ジョブ名.oジョブID」 - ジョブの標準エラー出力 (マージオプション
-j oeを指定しない場合): 「ジョブ名.eジョブID」
利用状況表示
自分が利用可能な演算リソース(共用ノードに関する演算時間および占有ノード)は以下の方法で確認することができます。
- 共用ノードの演算時間:
show_tokenコマンドにより、利用可能なグループ名と対応する演算時間が表示されます。 - 占有ノード:
qstat -Pコマンドにより、利用可能なリソースグループとその制限値が表示されます。(共用ノードのリソースグループも表示されます。)