GPUクラスタ(Tesla K40系)利用の手引き

お知らせ

  • 節電のため運用を停止しています(2022/10/27)
  • gk40-1-long キューの walltime が無制限になりました。(2022/06/24)

Last Updated: 2022/06/24


1. GPUクラスタ(NVIDIA K40系)の概要

muv02.cfca.nao.ac.jp 系のGPUクラスタでは加速器として1ノードあたり1基のTesla K40c を搭載しています.(K20c搭載ノードは2022年4月に運用を終了しました.)
GRAPEライブラリを用いることでGRAPE用のコードをほぼそのまま利用することができます.
Tesla K40 は非常に古い機材ですが,長時間実行や講習会用機材として運用を継続しています.
特に理由が無ければ,現在の最新機種である NVIDIA A100 系のクラスタ(g00.cfca.nao.ac.jp)をご利用下さい.

2 システム情報

2.1 ハードウェア構成

  • muv02.cfca.nao.ac.jp : ログインノード
    • 1ノード
    • CPU : Intel Xeon E5-2620 v4 2.10GHz
    • 主記憶容量 : 32GB
  • gk[401-420] : 計算ノード・Tesla K40c
    • 20ノード
    • 加速器 : nvidia Tesla K40c
    • CPU : Intel Xeon E5-1650 v3 3.50GHz
    • 主記憶容量 : 16GB

2.2 加速器の理論性能

加速器 単精度演算性能 倍精度演算性能
Tesla K40c 4.29TFlops 1.43TFlops

2.3 ファイルシステム

/home または /gwork0 をご利用下さい.
A100系で使用可能な /cfca-work は利用できません.

2.4 アクセス方法

GPUクラスタはGRAPEシステム同様,CfCA-HPCネットワーク内に設置されています.
VPNを用いてHPCネットワークに接続し,muv02.cfca.ac.jp にログインしてください.

% ssh -l アカウント名 muv02.cfca.nao.ac.jp

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

2.5 パスワードやログインシェルの変更方法

ユーザーのパスワードの変更はログインノードで,

% yppasswd

とすれば行えます.

% ypcsh

とすることでシェルを変更することができますが,動作確認はbashで行っており,その他のシェルでの動作確認は十分ではありません.
GPUクラスタ以外の計算機システムでシェルを変更されている方は,シェル由来の不具合が発生する可能性があります.
あらかじめご承知おきください.今後段階的に対応していく予定です.

2.6 シェルの環境設定ファイル

解析サーバ・計算サーバ・GPUなどではホームディレクトリを共有しておりますが、各システムごとに読み込むべき設定が異なるので、処理を切り分ける必要があります。その切り分けに対応した初期設定ファイルの例を提供しております。詳しくは 解析サーバ 利用の手引き 2.3.1 シェルの環境設定ファイルをご参照ください。

3 利用方法

計算ノードへ直接ログインすることはできません.ログインノードでプログラムの開発を行なって下さい.
開発したプログラムはジョブ管理システムを通して計算ノードで実行されます.ジョブの投入についてもログインノードで行います.
ログインノードでは計算の実行など重い処理を行なわないようご注意願います.

3.1 コンパイル

CUDA C/C++ で書かれたプログラムのコンパイルには nvidia CUDA Toolkit に含まれる nvcc を使用します.

bash-4.2$ nvcc -gencode=arch=compute_35,code=sm_35 -o sample sample.c

CUDA Fortran で書かれたプログラムの場合は pgi コンパイラでコンパイルします.
解析サーバと共通のpgiコンパイラを利用できます.

[muv02 ~]$ module avail

------------------------ /usr/share/Modules/modulefiles ------------------------
dot module-info null use.own
module-git modules pgi/18.5
[muv02 ~]$ module load pgi
[muv02 ~]$ pgf90 -Mcuda=cc35 -o sample sample.f90

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

3.2 ジョブ管理システム

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

[muv02 ~]$ qstat -Qf

で確認できます.

利用可能なキュー

Tesla K40c 搭載ノードはgk[401-420]の20ノードで gk401,402がdebug 専用ノードです.
どのキューもCPU 1 ソケットと GPU 1枚を 1ジョブが占有し,複数のキューで資源を共有することはありません.

キューの詳細
キュー 計算ノード Wall time制限 同時実行数
gk40-1-debug gk401, gk402 15 min 1
gk40-1-middle gk403-420 48 hour 8
gk40-1-long gk403-420 unlimited 1

ジョブの投入方法

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

#! /bin/bash
#PBS -q gk40-1-debug
#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

ジョブの確認

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> gk40-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ライブラリの利用方法

GPUクラスタではCUDA用ライブラリをリンクすることでGRAPEライブラリを用いた(GRAPEシステム用の)プログラムコードをコンパイル,実行することができます.
GRAPE-5モード,GRAPE-6モードの両方が使用できます.
ただしGRAPEライブラリそのもののバージョンがGRAPEシステムよりも新しく一部の古い命令が廃止されています.
廃止された命令を使用している場合にはその部分の書き換えが必要になります.

コンパイル方法

コンパイルは以下のようにします.

$ gcc -pthread sample.c -o sample -O2 -lm -lcuda5 -lcudart -lstdc++

または

$ gcc -pthread sample.c -o sample -O2 -lm -lcuda6 -lcudart -lstdc++

ただし g5nbutil.h を使用しているプログラムは以下のように書き換える必要があります.

//#include "g5nbutil.h"
#include "g5util.h"

GRAPE CUDAライブラリドキュメント

GRAPE-G5/G6ライブラリのより詳しい情報は

muv02:/usr/local/grape/grapepkg1.7/doc/00readme
muv02:/usr/local/grape/grapepkg1.7/doc/00readme-j

を参照してください.

4 その他の注意事項

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