「富岳」におけるOpen OnDemandの導入と運用
中尾昌広（理化学研究所 計算科学研究センター）

PCCC Open OnDemandワークショップ，2023年10月11日

論文など
スー ーコンュータ「富岳」における HPCクラスタ用Web ータルOpen OnDemandの導入

2022年9月，186回HPC研究発表会
https://mnakao.net/data/2022/HPC186.pdf（予稿集）
https://mnakao.net/data/2022/HPC186-slide.pdf（スライド）
スー ーコンュータ「富岳」における HPCクラスタ用Web ータルOpen OnDemandの運用

2023年9月，191回HPC研究発表会
https://mnakao.net/data/2023/HPC191.pdf（予稿集）
https://mnakao.net/data/2023/HPC191-slide.pdf（スライド）
Introducing Open OnDemand to Supercomputer Fugaku, 10th International Workshop on
HPC User Support Tools (HUST2023), Nov. 2023.
本スライドは、上の2つの発表を合わせたものです。一番下の論文も、上2つの予稿集を合わせたものです。

ポポピ

ピ

パパ

2

背景
理化学研究所 計算科学研究センターは「富岳」を開発・運用
利便性を向上させるため、可視化やデータ変換等を行うプリポスト環境も提供
GPUを搭載した計算ノード
大容量メモリを搭載した計算ノード 「富岳」

プリポスト環境

利用方法：共通のログインノードにSSHで入り、ジョブスケジューラを通してジョブを投入
ジョブスケジューラ「富岳」はFujitsu TCS (Fujitsu
Software Technical ComputingSuite)
プリポスト環境はSlurm
3目的：利便性向上のため、Open OnDemandを導入する
Open OnDemandをFujitsu TCSに対応させる
ダッシュボードのカスタマイズ
アプリケーションの追加（約50個）
スクリプトによるアプリごとの設定ファイルの管理コスト削減
HPCI共用ストレージとGakuNin RDMとのデータ共有機能の開発
運用状況について紹介
理研R-CCSでは2022年8月から「富岳」においてテスト運用、2023年5月から本番運用
設定ファイルなどはGitHubで公開しています
https://github.com/RIKEN-RCCS/ondemand̲fugaku
4Fujitsu TCSへの対応（1/2）
Open OnDemand-2.0.27（2022年6月リリース）が対応しているジョブスケジューラ
Slurm，PBS Pro，Torque，Sun Grid Engine，Univa Grid Engineなど
Fujitsu TCSに対応するためのコード変更 & Pull Request
1. https://github.com/OSC/ood̲core/pull/766
2. https://github.com/OSC/ondemand/pull/2194
Open OnDemand-2.0.28（2022年8月リリース）からFujitsu TCSもサポートリリースのタイミングの関係で、1. だけマージしてもらった
1. だけでも、Fujitsu TCSは動作する
2. はジョブの詳細表示に関するコードで、2.0.29で利用可能
Fujitsu TCSをジョブスケジューラに採用しているHPCクラスタ（東京大学のWisteria/BDEC-01，名古屋大学の不老，九州大学のITOなど）では，そのままOpen OnDemandを利用可能

5

Fujitsu TCSへの対応（2/2）
様々なジョブスケジューラに対応するためのアダプタインタフェースが定義
そのインタフェースで定義されている下記のメソッドをFujitsu TCS用に実装
実装言語はRubyで、コード量は約400行（詳細は前ページのPull Requestを参照ください）
submitdeletestatusholdreleaseinfo
info_allcluster_info
supports_job_arrays
directive_prefix

ジョブの投入ジョブの削除
ジョブの状態を取得
ジョブのホールド
ホールドされたジョブの開放
ジョブの情報を取得
全ジョブの情報を取得
HPCクラスタのシステム情報を取得
バルクジョブのサポートの可否
ジョブスケジューラで用いられる接頭辞を取得（#PJM）
6

ダッシュボードの変更（1/5）
現在

カスタマイズが可能(i) 既存のテンプレートを用いるロゴの追加、アプリを種類ごとに表示(ii) テンプレート自体を作る（eRubyで記述する）
ジョブを投入する際にユーザが欲しい情報を表示
デフォルト

2022年9月ごろ

(i)

(ii)

7

ダッシュボードの変更（2/5）
A. 外部リンク（富岳マニュアルなど）

現在

B. 障害情報やオペレーション情報など

A

C. 各キューの待ちジョブ数（Grafanaを利用）
D. 運用カレンダー（Googleカレンダーを利用）
E. ユーザのディスクとバジェットの利用率

B
C

D

F. 最近使った計算ノードで動作するアプリ（最大4個）
他のアプリはナビゲーションバーから選択可能
G. Open OnDemandサーバで動作するユーティリティ
ファイルのアップロードやジョブ監視など

E
F
G

8

ダッシュボードの変更（3/5）<%require 'utils.rb’
info = dashboard_info("/system/ood/motd/info.txt")-%>:<h4>Information</h4><table><%- info.each do |i| -%><tr><%- c = i.split(":") -%><td><%= c[0] %></td><td><%= c[1] %></td><td><%= c[2] %></td></tr><%- end -%></table>B

Bのinfo.txtの内容は、cronを使って1日1回の頻度で、富岳ポータルサイトから取得している。

Eのディスク使用率とバジェット情報も基本的に同じ。

E9ダッシュボードの変更（4/5）<%require 'time'# URL of Dashboard
dashboard_url = "https://status.fugaku.r-ccs.riken.jp/d-solo/cf06d886e672-41d8-a587-85ccb32fce7e/5a6f6KGM5b6F44Gh44K444On44OW5pWw?
orgId=1&theme=light&panelId=2"

C# Get the current time as epoch milliseconds.
now = (Time.now.to_f * 1000).to_i# Get time one month ago as epoch milliseconds
one_month_ago = now - (30 * 24 * 60 * 60 * 1000)-%>:<h4>Pending Jobs</h4><iframe src="<%= dashboard_url %>&to=<%= now %>&from=<%=one_month_ago %>" frameborder="0" width="100%" height=“225px"></iframe>D

CとDはGrafanaとGoogleカレンダーが、元々グラフを外部のHTMLにポーティングする機能を提供している10ダッシュボードの変更（5/5）
F. 最近使った計算ノードで動作するアプリ（最大4個）

現在既存のテンプレートの機能を利用
A

既存のテンプレートでは、アイコンをクリックすると前回実行したパラメータで再実行されてしまうため、テンプレートを変更し、異なるパラメータを設定できるようにした

BC

D

G. Open OnDemandサーバで動作するユーテリティ
デフォルト + HPCI共用ストレージ接続アプリ +E

GakuNin RDM接続アプリ
FG

11

アプリケーションの追加（1/2）
計算ノード上で動作するアプリケーションの管理方法「富岳」にインストール済のアプリケーション• spack or moduleで管理されている• Open OnDemandからspack loadコマンドやmodule loadコマンドで環境設定 + 実行する「富岳」に未インストールのアプリケーション（Remote Desktopや可視化ソフトウェアなど）• Singularityを使ってコンテナイメージを作成• Open OnDemandからsingularity run <コンテナイメージ> <スクリプト>で実行

12

アプリケーションの追加（2/2）
GUI
Category
Development

Application
Remote Desktop, JupyterLab, MATLAB*, RStudio, VSCodeProfiler

NVIDIA Visual Profiler*, NVIDIA Nsight Compute*, NVIDIA Nsight Systems*, Vampir*

ViewerAVS/Express*, C-Tools, GaussView*, ImageJ, OVITO, Paraview, PyMOL, SALMON view, Smokeview, VESTA,VMD, VisIt, XCrySDen

Workflow

WHEEL

Singularityで管理されたアプリケーション

バッチジョブ
Category
Climate※ 商用アプリケーション

Application
SCALE

Computer Aided Engineering

FDS, FrontFlow (blue/X), FrontISTR, OpenFOAM (Foundation/OpenCFD)

Condensed Matter Physics

ALAMODE, AkaiKKR, HΦ, mVMC, OpenMX, PHASE/0, Quantum Espresso, SALMON

Molecular Dynamics

GENESIS, GROMACS, LAMMPS, MODYLAS

Quantum Chemistry

ABINIT-MP, Gaussian*, NTChem, SMASHQuantum Simulation

braket13

Webフォーム管理（1/3）
理研R-CCSは「富岳」だけでなくプリポスト環境も提供
プリポスト環境は可視化や「富岳」

プリポスト環境ータ変換等を行うため、GPUや大容量メモリを搭載している
Open OnDemandサーバは共通「富岳」のCPUはARMアーキテクチャなのに対し、https

プリポスト環境のCPUはx86̲64アーキテクチャ
そのため、アプリケーションのSingularityコンテナはアーキテクチャ毎に用意している「富岳」とプリポスト環境の各リソースグループと設定項目の最大値は右表の通り
プリポスト環境ではoversubscribeが可能であるため、CPUコア数などを指定可能（ただし1ノードのみ）
デ

14

Webフォーム管理（2/3）
fugaku-smallキュー

prepost-gpu1キュー表示される項目が動的に変化する

15

Webフォーム管理（3/3）
アプリケーション毎にWebフォームを設定する必要があり、管理が面倒/var/www/ood/apps/sys/[アプリケーション]/form.yml.erb
各アプリケーションでform.yml.erbはほぼ同じなので、スクリプトから出力させる
form.yml.erb（変更前）

form.yml.erb（変更後）

utils.rb

gpu1_memory:label: Memory (10 - 186 GB)
widget: number_fieldvalue: 10
min: 10
max: 186
step: 1required: true:<%require 'utils.rb'-%><%= gpu1_memory(10) %>:def gpu1_memory(min = 5, max = 186)
$attr <<<<"EOF"
gpu1_memory:label: Memory (#{min} - #{max} GB)
widget: number_fieldvalue: #{min}min: #{min}max: #{max}step: 1required: true
EOFend

変更前は300行程度 x 50個だったが、変更後は30行程度 x 50個に短縮できた

アプリケーションによって異なる数値は引数で設定

16

HPCI共用ストレージとGakuNin RDM（1/5）
外部ストレージであるHPCI共用ストレージとGakuNin RDMとのデータ共有機能の開発
これまではコマンドラインなどで行ってきた「富岳」と上の2つの外部ストレージとの間のデータ転送をOpen OnDemandを通して行うことが可能になった
注：Open OnDemand 3.0からrcloneを利用した外部ストレージ（Amazon S3など）とのデータ転送が可能になっているが、rcloneは上の2つの外部ストレージには対応していない

HPC共用ストレージ

Open OnDemand on Fugaku

GakuNin RDM

17

HPCI共用ストレージとGakuNin RDM（2/5）
HPCI（High Performance Computing Infrastructure）とは、「富岳」と全国の大学や研究機関が保有する様々なHPCクラスタなどを高速ネットワークSINETで結んだシステム
HPCI共用ストレージとは、HPCIの各組織
大規模ータ共有基盤

研究ータを高速に共有するためのあり、理研R-CCS（兵庫県神戸市）と東京大学情報基盤センター（千葉県柏市）
ファイルシステムにはGfarm

共同運用

採用されている

利用方法
1. HPCI証明書発行システム（https://portal.hpci.nii.ac.jp）
代理証明書を発行
2. Gfarmクライアント

インストールされた環境で

myproxy-logonコマン
3. mount.hpciコマン

代理証明書をウンロー

を実行すると、HPCI共用ストレージにfusermountが行えるで

ドで

デ

がで

ダ

がで

ドで

が

ド

デ

18

HPCI共用ストレージとGakuNin RDM（3/5）
GakuNin RDMは研究ータ管理サー

Open OnDemandと同様にWeb ラウ
ア

リケーション（JupyterLabなスあり、NIIを介した開発と運営を行っているータ転送やータ分析を行うための）を提供している

GakuNin RDMもSINETと接続している
NII 公開しているスクリト（https://github.com/RCOSDP/CS-rdmfs) を用いると、コマンドラインでGakuNin RDMにfusermountが可能

デがデで

ザ

ビど

ブ

プ

デ

がプ

19

HPCI共用ストレージとGakuNin RDM（4/5）
Open OnDemandが提供するフレームワークを用いて開発
https://osc.github.io/ood-documentation/latest/tutorials/tutorials-passenger-apps.html

必要事項を入力した後、前ページで説明したコマンドが実行される
マウント先へのリンクをクリック
すると、ファイルのアップロードなどを行う既存のアプリが起動する
20転送速度を評価
Open OnDemandのオーバヘッドを調べるため、Open OnDemandを用いる場合と用いない場合におけるデータ転送速度を比較
Open OnDemandサーバからHPCI共用ストレージにデータ転送
Open OnDemandサーバとHPCI共用ストレージは同じ建物内
Open OnDemandサーバのCPUはIntel Xeon Gold 6338 x2
メモリは256GB、ネットワークは100Gbps
better

結果
Open OnDemandを用いない方
ータサイ

最大28%早い、大きくなるにつれ性能差は小さくなる

64MiB以上では性能差はなくなるため、実用上は問題ないと考えられる
が

が

が

21ズ

デ

HPCI共用ストレージとGakuNin RDM（5/5）

運用状況
「富岳」

プリポスト環境

新規ユーザ数

11

449

524

バッチアプリ
対話アプリ

231
580
496

可視化ソフト
開発ソフト
ワークフロー
プロファイラバッチアプリ
2023年8月

2023年6月

2023年4月

2023年2月

2022年12月

2022年10月

2022年8月

29

6359
373

量子化学
物性物理学
CAE
その他

新しいサーバ（今年5月から）の累積数

2023年5月ごろに新しいサーバに切り替えたため、新規ユーザ数を数え直している
メモ：現在の富岳のアカウント数は2500くらい。
上のグラフは、累積数なので、削除済のユーザも含まれている

対話アプリ

45
5472278

デスクトップJupyter
VSCodeその他

22まとめと今後の課題
まとめ
HPCクラスタが持つ計算資源を簡易に利用可能にするOpen OnDemandを「富岳」で運用
Fujitsu TCSへの対応、ダッシュボードの変更、アプリケーションの追加、Webフォーム管理コスト低減、HPCI共用ストレージとGakuNin RDMとのデータ共有機能の開発
HPCI共用ストレージについて転送速度を比較し、Open OnDemandのオーバヘッドは十分に小さいことがわかった
今後の課題
Open OnDemandの導入の効果を定量的・定性的に示す
HPCI共用ストレーに対して、gfpcopyなを用いた並列転送をサポートするどジ23