GPU試用機材(muv03系 NVIDIA A100ノード)の利用について

お知らせ

  • muv03 系の運用は終了しました。今後はg00をご利用ください。環境が不足している場合はお問い合わせ下さい。
    g00 系で TensorFlowやPyTorch等複雑な環境構築が必要なソフトウェアを動作させたい場合は Singularity コンテナの利用を推奨しています.
    手元でコンテナを変換して持ち込む必要がありますが,/home に環境を構築するよりは動作までの困難は少ないと思われます。(2022/04/28,07/05)
  • ga1oo1 の搭載GPU数が4基になりました。(2021/09/06)
  • 近日中にmuv03を廃止してg00に統合します。CentOSとUbuntuで挙動に違いが出ているため保留中(2021/07/06)
  • ログインノードのメモリおよびコア数を半減しました。(2021/07/05)
  • 試験公開を開始しました。(2021/02/10)

Last Updated: 2021/07/06


1. NVIDIA A100 GPU試用機材の概要

2020年度末に納品されたGPUサーバを試用機材として提供しています.
計算ノードには4枚の PCI-E 版 NVIDIA A100 が搭載されていて,2枚ずつがNVLinkで接続されています.
公開を優先したため十分な試験は行われていません.そのため試用期間(無期)中は予告なくメンテナンスが行われる可能性があります.
メンテナンス予定またはメンテナンス中であることの通知はWebのトップまたはログインノードのメッセージで行います.
現在はノード占有利用のみ可能です.
GRAPEライブラリは現在使用できません.

2 システム情報

このシステムは1台のログインノード(muv03)と1台の計算ノード(ga1001)で構成されています.

2.1 構成

  • ログインノード : muv03.cfca.nao.ac.jp
    • 4コア仮想マシン(ホストのCPUは EPYC 7282)
    • 主記憶容量 : 64GB
  • 計算ノード : ga1001
    • 加速器 : NVIDIA A100 PCIe 4基
    • CPU : 24コア (48スレッド) EPYC 7402P
    • 主記憶容量 : 512GB

2.2 ファイルシステム

/home/<username > に加えて /gwork0/<username > が利用できます./gwork0 は現在は本システム以外に試験運用系と解析サーバから使用できます.
quota は以下のコマンドで確認することができます.

$ quota -s

2.3 アクセス方法

本機材はその他のシステム同様,CfCA-HPCネットワーク内に設置されています.
VPNを用いてHPCネットワークに接続し,muv03.cfca.ac.jp にログインしてください.

$ ssh -l アカウント名 muv03.cfca.nao.ac.jp

VPNによる接続方法の詳細はHPCネットワークへの接続方法を御覧下さい。
CfCA共同利用計算機のアカウント名(本Webシステムのアカウント名ではありません)は本Webシステムのアカウント情報から確認することができます。
また初期NISパスワードは利用申請受理後にメールで配信されます。

とすることでシェルを変更することができますが,動作確認はbashで行っており,その他のシェルでの動作確認は十分ではありません.
特に環境変数は /etc/profile.d/ 以下の nvidia_hpc_sdk.csh , nvidia_hpc_sdk.sh で設定しています.
GPUクラスタ以外の計算機システムでシェルを変更されている方は,シェル由来の不具合が発生する可能性があります.

3 利用方法

計算ノードへ直接ログインすることはできません.ログインノードでプログラムの開発を行なって下さい.
利用可能なキューは随時変更される可能性があります.

$ qstat -Qf

などで確認して下さい.

3.1 コンパイル

CUDA C/C++ で書かれたプログラムのコンパイルには NVIDIA HPC SDK に含まれる nvcc を使用します.
仕様の詳細は https://developer.nvidia.com/hpc-sdk の documentation を参照してください.
特に注意すべき点として,Volta以降はWarp内のスレッドスケジューリングが異なっているため,Pascalを意識して書いたコードをコンパイルする際には以下のように指定せよとの記載があります.
https://docs.nvidia.com/cuda/ampere-compatibility-guide/index.html#independent-thread-scheduling-compatibility

https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#options-for-steering-gpu-code-generation

$ nvcc -gencode=arch=compute_60,code=sm_80 -o sample sample.cu

CUDA Fortran で書かれたプログラムの場合は nvfortran コンパイラでコンパイルします.

GRAPE用プログラムをコンパイルするには別途GRAPE G5/G6 用のGRAPEライブラリをリンクする必要があります(未対応).

MPIプログラムのコンパイル

$ module load nvhpc
$ mpif90 -cuda -gpu=cc80 -tp=zen2 hello.f90

3.2 ジョブ管理システム

GPUクラスタではジョブ管理システムとしてPBS (version 18.1)を導入しています.
ログインノードからジョブ管理システムを用いてジョブを実行して下さい.
試験公開中のため,予告なくキューの設定を改定することがあります.
現状の制限値は

[muv03 ~]$ qstat -Qf

で確認できます.

利用可能なキュー

利用可能なキューは随時変更される可能性があります.

$ qstat -Qf

などで確認して下さい.

ジョブの投入方法

計算の投入に必要な最小のジョブスクリプトは以下の通りです.test.sh など適当な名前で保存してください.

#! /bin/bash
#PBS -q ga100-1-short
#PBS -l walltime=00:00:60
cd /home/YOUR_ACOUNT/DIR
./a.out > a.log

プログラムを実行するディレクトリの設定が必要です。
以下のようにプログラムを実行するディレクトリをcd コマンドで設定してください。

cd /home/YOUR_ACOUNT/DIR

ジョブスクリプトを投入したディレクトリは $PBS_O_WORKDIR という環境変数に格納されます.
したがって投入ディレクトリへの移動は以下のように記述することもできます.

cd $PBS_O_WORKDIR

ジョブスクリプトの最終行でプログラムを実行しています.
標準出力が多くなったときに不具合が生じることがあるため,リダイレクトは必ず書くようにしてください.

./a.out > a.log

スクリプトを作成後,qsubコマンドでジョブを投入します.

% qsub test.sh

MPIジョブのためのジョブスクリプト

MPIプロセスはmpiexec で起動する必要があります.最も単純なジョブスクリプトは以下のようなものです.
-np オプションでプロセス数を指定します.

#!/bin/bash
#PBS -q ga100-1-short
#PBS -m n
cd $PBS_O_WORKDIR
module load nvhpc
mpiexec -np 10 a.out

ジョブの確認

qstat -a

以下は表示例です。

bash-4.2$ qstat -a

muv02:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
135.muv02 <user_name> gk20-1-m hello.sh 18366 1 1 -- 00:00 R 00:00

状態(S の列、Status の意味) は以下の意味がある。

E (Exiting) 実行済みで終了中
H (Held) 保留状態
Q (Queued) キュー待機状態
R (Running) 実行中
S (Suspended) 中断中
ジョブの消去

以下のコマンドによってジョブをキャンセルできます。

qdel <JOB-ID>

JOB-ID は上記qstat コマンドで調べることができます。

3.3 GRAPEライブラリの利用方法

未対応です

4 その他の注意事項

GPUシステムは利用申請を行い、申請が受理された利用者が使用出来ます。
muv03系のGPUの試用のみを希望される場合もGPU利用申請フォームから利用申請を行ってください。
各利用者は利用方法を守り、他の利用者の利便を損なわないようにしてください。
利用方法が守られていないとこちらで判断した場合、警告無く利用者のプロセスを終了することをご了承下さい。