2023/3/30 PCCCワークショップ

h3-Open-SYS/WaitIO: 異種システム
間通信を実現する通信ライブラリの概要
住元 真司(東大), 荒川 隆(CliMTech Inc.), 坂口 吉生(富士通),
松葉 浩也(日立), 八代 尚(環境研), 塙 敏博(東大), 中島 研吾(東大/理研CCS)
2023/03/30

発表の概要• Wisteria/BDEC-01• 異種システム間連成計算• 意義• 構成要素: h3-Open-SYS/WaitIO, ジョブ実行環境• Wisteria/BDEC-01システムでの異種システム間連成計算実行環境• h3-Open-SYS/WaitIOによる通信性能評価・連成実行• h3-Open-UTIL/MPによるアプリケーション評価• おわりに

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo2

Wisteria/BDEC-01• 2021年5月14日運用開始• 東京大学柏Ⅱキャンパス

BDEC:「計算・データ・学習（S+D+L）」
融合のためのプラットフォーム（Big Data & Extreme Computing）• 33.1 PF, 8.38 PB/sec. ，富士通製

Platform for Integration of (S+D+L)
Big Data & Extreme Computing• ~4.5 MVA（空調込み）, ~360m2• Hierarchical, Hybrid, Heterogeneous (h3)• 2種類のノード群• シミュレーションノード群 (S, SIM) : Odyssey• 従来のスパコン• Fujitsu PRIMEHPC FX1000 (A64FX), 25.9 PF• 7,680ノード（368,640 コア），20ラック，Tofu-D• データ・学習ノード群（D/L, DL）： Aquarius• データ解析，機械学習• Intel Xeon Ice Lake + NVIDIA A100, 7.2 PF– 45ノード（Ice Lake：90基，A100：360基）, IB-HDR• 一部は外部リソース（ストレージ，サーバー，センサー
ネットワーク他）に直接接続• ファイルシステム：共有（大容量）＋高速

3

シミュレーションノード群

Odyssey
Fujitsu/Arm A64FX
25.9PF, 7.8PB/s

Shared File
System

2.0TB/s

Fast File
System

共有ファイル
システム（SFS）

データ・学習ノード群
Aquarius

高速ファイルシステム（FFS）

25.8 PB, 500GB/s

Intel Ice Lake + NVIDIA A100

7.20PF, 578.2TB/s

1PB, 1.0TB/s

800 Gbps

External
Resources
External Network
外部ネットワーク

外部リソース

異種システム間連成計算の意義• 並列計算機の性能向上：弱連成計算による解析広まる• CAEアプリケーションや気象分野のアプリケーション(例、NICAM)• 多くの場合単一システム内でファイルでのデータ連携で解析実施• アプリケーション高速化に限界：要求する計算機の特性が異なる

Simulation
Codes
Optimized Models &Parameters• 異種システム連携高速化：h3-Open-BDECの研究開発

Wisteria/BDEC-01

MachineLearning, DDA• アプリケーション毎に最適なシステムで解き、相互にデータ連携• 異種システム間で連成計算を実現には以下の2つが必要• 異種システム上でのアプリケーション実行環境• バッチ処理システム間ジョブ実行連携機構

2023/3/30 PCCCワークショップ

Simulation Nodes
Odyssey

Data/Learning
Nodes, Aquarius

Results
Observation
Data

Data Assimilation
Data Analysis
Server,Storage,DB,
Sensors,etc.

Copyright 2023, Shinji Sumimoto@The University of Tokyo

External
Resources
External Network4h3-Open-SYS/WaitIO
データ受け渡しライブラリ〔松葉，2020〕〔住元他，HPC-181(2021), HPC-185,187(2022)〕

計算科学コード

シミュレーション
最適化されたモデル， ノード群，Odyssey
パラメータ

計算結果

Wisteria/BDEC-01
機械学習，DDA• ヘテロジニアス環境下での異なるコンポーネン
ト間ファイル経由連携ライブラリとして考案• 機能

データ・学習ノード群
Aquarius
データ同化
データ解析

サーバー
ストレージ
DB
センサー群
他

外部ネットワーク✓ Odyssey～Aquarius間連携
 IB-EDR経由通信（WaitIO-Socket）
 ファイル経由（WaitIO-File）✓ 外部からのデータ取得（観測データ等）✓ 読み込み・書き出しの同期• API：C/C++，Fortranから呼び出し可能✓ MPIライクなインタフェースを提供

観測データ

外部
リソース

h3-Open-BDEC
シミュレーション＋データ＋学習（S+D+L）
数値アルゴリズム・ライブラリ
新しい計算原理

h3-Open-MATH

アプリ開発フレームワーク

制御 & ユーティリティ

h3-Open-APP:
Simulation

h3-Open-SYS

高性能・高信頼性・
混合/変動精度アルゴリズム

計算科学アプリケーション

h3-Open-VER

h3-Open-DATA: Data

h3-Open-AT

h3-Open-DDA:
Learning

精度保証

自動チューニング

統合＋通信＋
ユーティリティ

データ科学

データ駆動・機械学習

制御 ＆ 統合

h3-Open-UTIL

大規模計算向け
ユーティリティ群

WaitIOの動作イメージ• WaitIO Instance• WaitIOシステム全体を示す• Parallel Block: MPIアプリケーション• アプリケーション毎のプロセスグループ• PBID識別子：数値• 環境変数WAITIO_PBIDで指定• PB数は環境変数WAITIO_NPBで指定• PB MASTER：PBID=0• 全体のデータ同期を実行• 環境変数WAITIO_MASTER_HOSTとWAITIO_MASTER_PORTで指定

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

6

WaitIO API• APIは通信実現の最小限に限定• グループ作成、isend(), irecv(), wait()とmisc関数を提供• TAGサポート(64bit), ANY_SOURCE, ANY_TAGサポートなし
WatiIO API
waitio_isend
waitio_irecv
waitio_wait

概要
Non-Blocking送信
Non-Blocking受信
送受信完了待ち合わせ

waitio_init
waitio_get_nprocs
waitio_create_group
waitio_create_group_wranks
waitio_group_rank
waitio_group_size
waitio_pb_size
waitio_pb_rank

WaitIO初期化
PB毎の参加プロセス数獲得
PB間通信グループ生成 (メンバ配列指定、関数指定)
グループ内Rankの獲得
グループサイズの獲得
全PBのサイズ獲得
全PB内Rankの獲得

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo7

h3-Open-UTIL/MP・
h3-Open-SYS/WaitIO-Socket連携
2022年6月から試験運用中

h3open modules
Jcup modules

Jcup modules

jcup_mpi_lib.f90

jcup_mpi_lib.f90

Aquarius

Fortran APP(NICAM)

Python APP(PyTorch)

h3open modules

IB-EDR

h3opp.pyh3open_py.f90
h3open modules

Jcup

h3opp.pyh3open_py.f90

h3-Open-UTIL/MP

Python APP(PyTorch)

h3open modules

Jcuph3-Open-UTIL/MP

Fortran APP(NICAM)

OdysseyJcup modules

Jcup modules

jcup_mpi_lib.f90

jcup_mpi_lib.f90

MPI wrapper

MPI
MPI

WaitIOMPI

MPI+WaitIO

2021年4月：MPI通信可能な環境を前提

2022年6月：Coupler＋WaitIO
8

WaitIOの活用方法• 異種アプリケーション間のデータ通信手法:• WaitIO API or WaitIO-MPI Conversion Library• データ共有をWaitIO-Socketで実現• 複数の異種システム上で既存アプリケーション協調実行:• WaitIO-MPI Conversion Library• より密な協調計算の実現• 上位のカップラーライブラリ利用:• h3-Open-UTIL/MPを用いた高度な連成計算機能の利用(後述)2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

9

WaitIO:異種アプリケーション間のデータ通信手法• ファイル共有によるデータ連携をWaitIO通信によるデータ連携に変換• 有限要素法による三次元非定常熱伝導解析Toyプログラムによる実例• 3つのプログラムから構成される連成アプリケーション

Code-3: Code-2の出力を読み、Z=Zmaxの面に強制温度固定条件

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

10

WaitIO: Toyプログラムの書き換え• コード例： Code-1のWaitIO修正

Code-1: オリジナル
2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

11

WaitIO: Toyプログラムの書き換え:2• Open/Read-Writeを isend-irecv/waitに書き換え• MPI Non-blocking送受信関数と同様

2023/3/30 PCCCワークショップ

Code-1: WaitIO修正

Copyright 2023, Shinji Sumimoto@The University of Tokyo

12

WaitIO:既存アプリケーションの協調実行• 適したシステムで適した処理を協調実行• 複数システムを融合、より大きな問題を解く• システム毎の欠点を補完したアプリケーション実行• 特性の異なる場合(例：線形問題と非線形問題)が混在するコードを適したシステムで分散実行• 応用例• GeoFEM〔18,19〕/CubeのToyプログラム• 領域分割して、GPUとCPUで協調処理• メモリ量の違い、CPUコア数の違いで負荷分散

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo13

高機能カップラー:h3-Open-UTIL/MP• 基本機能：連成計算機能提供• 時空間スケールが異なる複数モデル間で時間・空間差違の補整後
データ交換• 複数の並列アプリケーション間でプロセス群間のデータ交換• 拡張機能：• アンサンブル連成機能：複数連成計算を並列同時実行、かつ、連成計算同士の統計処理を行いながら実行• Python API 機能：Pythonアプリケーションを連成実行(PyTorch)• 異システム間での連成計算実行機能：h3-Open-SYS/WaitIO協調

HPC App(Fortran)Analysis/ML
App(Python)

低解像度イメージを用いた多耐１アンサンブル連成

Surrogate
Model
Visualiztion

F<->P adapter

A huge amount ofsimulation data
outputh3o-U/MP

h3o-U/MP

Statistics

Coupling
2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

14

異種バッチ処理システム間ジョブ実行連携機構• OdysseyとAquarius上での連成ジョブ実行

Platform for Integration of (S+D+L)
Big Data & Extreme Computing• 通常実行ジョブと連成実行ジョブの区別• 複数システムのリソース空き時に同時実行• WaitIO-Socket実行環境設定

Simulation Nodes:
Odyssey
Fujitsu/Arm A64FX
25.9PF, 7.8 PB/s

Shared File
System
（SFS）
25.8 PB, 500 GB/s

• 現実行環境TCSでは要件未達：• WaitIO Hostname Server• 連成ジョブ実行サービス

2.0 TB/s

Data/Learning
Nodes: AquariusIntel Ice Lake + NVIDIA A100

7.20 PF, 578.2 TB/s

Fast File
System（FFS）
1 PB, 1.0 TB/s

TCS-a

800 Gbps

External
Resources

External
Resources
External Network

WaitIO HostnameServer2023/3/30 PCCCワークショップ

TCS-oCopyright 2023, Shinji Sumimoto@The University of Tokyo連成ジョブ実行サービス

15

WaitIO Hostname Server• バッチ実行は実行時にホスト名決定

WaitIO HostnameServer• 複数ジョブ間で実行ホスト情報交換要• ジョブ実行ホスト名の設定• 設定されたホスト名の獲得• ホスト名リセットを実施

GIO
InfiniBand
EDR

GIO

Job1
Odyssy• USER名＋ジョブ名でカップラージョブ群管理
同時に複数ジョブ群を起動可能• カップラージョブ毎COUPER_JOB_ID割当
2023/3/30 PCCCワークショップ

GIO: Gateway IO Node

TofuD

GIO

• フロントエンドサーバなど固定ホスト上実行を想定

Retrieve Hostname• 固定ホスト上で実行、特定のSocket
Portに接続して各種設定

GIO
GIO

C
N

GIO
GIO

20 x Racks

Rack GIO

Odyssey: 7680 nodes
TofuD Interconnect

Copyright 2023, Shinji Sumimoto@The University of TokyoGPU GPUHCAGPU GPUHCAGPUGPUHCAHCACPU GPUGPU
InfiniBand
GPUGPUHCAHCACPU GPUGPUHDRGPUGPUHCAHCA
CPUCPUGPUGPUGPU GPUHCAGPU GPUHCAHCACPUGPUGPU
GPU
CPU
GPU
HCA
GPU
GPUGPU GPUHCAHCA CPUGPUGPU
GPU
HCA
CPU
GPU
HCA
GPUGPUGPUGPUHCAHCAWisteria
CPU
GPU
GPU
HCA
CPU
GPUGPUGPUGPUHCAHCA CPU
GPU GPU
HCA
CPU
GPU
GPU
HCAHCA CPU GPU GPUGPUGPUGPUGPUHCAHCA CPU
GPU GPUHCAGPU GPU
HCA
Aquarius: 45 nodes

Job2

InfiniBand HDR x 4

16

連成ジョブ実行サービスの動作シーケンス• 連成ジョブ判断：• 同一ジョブ名、ユーザ名、グループ名、連成ジョブ用リソースグループ• 同時実行方法：• ジョブ投入時にHOLD状態遷移• 同時リソース空き検出時にHOLD
処理を解除• 現状、WaitIO HostnameServer制限のため3分に1度連成
ジョブ起動

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

17

Wisteria/BDEC-01システムでのWaitIO実行• 通信性能• 異種システム上でのアプリケーション性能：• h3-Open-SYS/WaitIO+h3-Open-UTIL/MP• WaitIO-Socketを用いたアプリケーション実行イメージ

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

18

評価環境
Wisteria/Odyssey

Wisteria/Aquarius

メモリ量/ノード
メモリバンド幅/ノード
GPU/ノード
コンパイラ、MPI

25.9 PFLOPS
7,680
Tofu-D(6次元メッシュ/トーラス)
A64FX(Armv8.1+SVE), 2.2GHz,
1 socket (48 Core+2 or 4アシスタントコア)
32 GB
1024GB/s
富士通コンパイラ、富士通MPI

7.2 PFLOPS
45
InfiniBand HDR (200Gbps) x 4HCA
(Full Fat Tree)Intel Xeon Platinum 8360Y, 2.4GHz
2 sockets(36+36)
512GiB
409.6GB/s
NVIDIA A100 x8
Intelコンパイラ、インテルMPI、(Open MPI)

オペレーティングシステム

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8

Oakbridge-CX (OBCX)

Oakforest-PACS (OFP)

総理論演算性能
総ノード数
インターコネクト

6.61 PFLOPS
1368
Omni-Path (100Gbps)

25 PFLOPS
8208
Omni-Path (100Gbps)

プロセッサ/ノード

メモリ量/ノード
メモリバンド幅/ノードIntel Xeon Platinum 8280 2.7GHz,
2 socket (28+28)
192 GB
281.6GB/sIntel Xeon Phi 7250 1.4GHz
1 socket (68)
96(DDR4)+16(MCDRAM) GB
115(DDR4)+490(MCDRAM) GB/s

コンパイラ、MPI

Intelコンパイラ、インテルMPI、(Open MPI)Intelコンパイラ、インテルMPI、(Open MPI)

オペレーティングシステム

Red Hat Enterprise Linux 7, CentOS 7

Red Hat Enterprise Linux 7, CentOS 7

総理論演算性能
総ノード数
インターコネクト
プロセッサ/ノード

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

19

PingPong １/2 RTT評価
可変 proc- 16 Node固定

usec(8B)

1/2 RTT(ノード内)

1/2 RTT(ノード間)

Odyssey

26.8

37.1 (Tofu-D)

Aquarius

6.57

21.1 (IB)

OBCX
OFP

6.85
49.7

14.5 (OPA)
83.7 (OPA)

good

bad

• ノード内、ノード間ともに CPU性能が大きく性能に影響• Xeon搭載(Aquarius, OBCX) は6usec台• A64FX、Xeon Phi搭載システムはCPU性能に比例

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

20

PingPong バンド幅評価
可変 proc- 16 Node固定

PingPong BW GB/s

BW ノード内

BW ノード間Odyssey

21.3

0.35 (Tofu-D)

Aquarius

259.7

27.1 (IB)

OBCX

45.7

9.3 (OPA)

OFP

8.2

1.12 (OPA)

good

bad

• CPU性能とインタコネクト性能のバランス• Odyssey: ノード内に比べTofu-D性能が大幅に劣化• Aquarius: ノード内、InfiniBand性能ともに他システムに比べ高速• OFP: CPU性能が通信性能律速の主因
2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

21

WaitIO-Socket性能: バンド幅(Odyssey) 16node
MB/s

WaitIO-Socket Bandwidth
Intranode 16node

MB/s

WaitIO-Socket Bandwidth InternodeTofu-D 16node

3.0E+03

1.8E+05

計算コア処理スケーラブル

1.6E+05

アシスタントコア
処理律速

2.5E+03

1.4E+05
2.0E+03

1.2E+05
1.0E+05

1.5E+03

8.0E+04
1.0E+03

6.0E+04

4.0E+04

5.0E+02

2.0E+04
0.0E+00
1.0E+00
16160

1.0E+03

1.0E+06

1.0E+09

32
256

64
320

128
384

Bytes

0.0E+00
1.0E+00 1.0E+02 1.0E+04 1.0E+06 1.0E+08
16
160

32
256

• ノード内: 170.4 GB/s (21.3 GB/s /node)• ノード間: 2.80 GB/s (0.35 GB/s /node)2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

64
320

128 Bytes
384

可変 proc-Node数固定
22

WaitIO-Socket性能: バンド幅(Aquarius) 16node
MB/s

MB/s

WaitIO-Socket Bandwidth Internode-InfiniBand
Aquarius 16node

WaitIO-Socket Bandwidth Intranode
Aquarius 16node
2.5E+06
キャッシュによる性能向上

2.5E+05

2.0E+06

2.0E+05

1.5E+06

1.5E+05

1.0E+06

1.0E+05

5.0E+05

5.0E+04

0.0E+00
1.0E+00

0.0E+00
1.0E+00

1.0E+03

1.0E+06

1.0E+09

16

32

64

128

256

320

512

720

960

1152

OS処理も
並列処理

16
320

1.0E+0332
512

1.0E+06
64
720

128
960

1.0E+09
2561152• ノード内: 2,077.6 GB/s (259.7 GB/s /node)
可変 proc-Node数固定• ノード間: 216.6 GB/s (27.1 GB/s /node)2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo23

h3-Open-UTIL/MPを用いたアプリケーション実行評価• 性能評価用のToyプログラムでの通信性能評価• NICAM-AI 連成アプリケーション実行評価• 大気密度、内部エネルギー、水蒸気量の3変数で評価• DLライブラリ：PyTorch、学習アルゴリズム：3層MLP(多層パーセプトロン)
HPC App(Fortran)Analysis/ML
App(Python)Surrogate
Model
Visualiztion

F<->P adapter

A huge amount ofsimulation data
outputh3o-U/MP

h3o-U/MP

Statistics

Coupling

気候計算の学習・適用フェーズ時の処理モデル
NICAM＋ADA実行イメージ

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

24

NICAM-AI連成：大気密度の時間変化量比較• 大気密度の時間変化量についてモデルによる計算値とAIによる再現値• 機械学習ライブラリ：PyTorch、学習アルゴリズム：３層MLP• 単純アルゴリズムにも関わらず全体的な場の再現性は良好

モデル計算による結果

2023/3/30 PCCCワークショップ

AI学習による再現値

Copyright 2023, Shinji Sumimoto@The University of Tokyo

25

NICAM+ADA: 性能評価
• 異種分散(CPU+GPU)は同種分散(CPU+CPU)より 35%高速Real Application Performance: NICAM+ADA
CPU+CPU vs. CPU+GPU

Sec.

Odyssey+Odyssey

500
450
400

Odyssey+Odyssey

350

Odyssey+Aquarius
35% FasterOdyssey+Aquarius

300
250

200
150
100
50
0
NICAM-Socket
N:CPU(160)+A:CPU(1node)2023/3/30 PCCCワークショップ

ADA-Socket
N:CPU(160)+A:CPU(20node)

N:CPU(160)+A:GPU(1node,Conda)

Copyright 2023, Shinji Sumimoto@The University of Tokyo

26

WaitIO-Socketを用いたアプリケーション実行• 連成ジョブ実行サービス利用せず• ジョブ１,2実行確認後、ジョブ3投入• 手動のため端末離席不能• ジョブHOLD発生でキャンセル必要：
CPU時間節約のため

連成Toyプログラム
手動による連成ジョブ実行の様子

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

27

WaitIO: Toyプログラム向けバッチスクリプト#!/bin/sh# = s1-a64fx.sh===#PJM -N "SYStest-waitio"#PJM -L rscgrp=coupler-lec-o#PJM -L node=1#PJM --mpi proc=1#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err#!/bin/sh# = s2-a64fx.sh===#PJM -N "SYStest-waitio"#PJM -L rscgrp=coupler-lec-o#PJM -L node=1#PJM --mpi proc=32#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err#!/bin/sh# = s3-a64fx.sh===#PJM -N "SYStest-waitio“#PJM -L rscgrp=coupler-lec-o#PJM -L node=1#PJM --mpi proc=32#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err

module purge
module load fj
module load fjmpi
module load waitio

module purge
module load fj
module load fjmpi
module load waitio

module purge
module load fj
module load fjmpi
module load waitio

hostname
export WAITIO_MASTER_HOST=`hostname`export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=0
export WAITIO_NPB=3
waitio-serv-a64fx -d -m $WAITIO_MASTER_HOST

hostname
export WAITIO_MASTER_HOST=`waitio-serv-a64fx -c`
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=1
export WAITIO_NPB=3

hostname
export WAITIO_MASTER_HOST=`waitio-serv-a64fx -c`
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=2
export WAITIO_NPB=3

mpiexec -n ${PJM_MPI_PROC} ./sol2-a64fx

mpiexec -n ${PJM_MPI_PROC} ./sol3-a64fx
rm wk.*

mpiexec -n ${PJM_MPI_PROC} ./sol1-a64fx

Code-1 for a64fx

2023/3/30 PCCCワークショップ

Code-2 for a64fx

Copyright 2023, Shinji Sumimoto@The University of Tokyo

Code-3 for a64fx

28

WaitIO: Toyプログラム向けバッチスクリプト２#!/bin/sh# = s1-intel.sh===#PJM -N "SYStest-waitio"#PJM -L rscgrp=coupler-lec-a#PJM -L node=1#PJM --mpi proc=1#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err#!/bin/sh# = s2-intel.sh===#PJM -N "SYStest-waitio"#PJM -L rscgrp=coupler-lec-a#PJM -L node=1#PJM --mpi proc=16#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err#!/bin/sh# = s3-intel.sh===#PJM -N "SYStest-waitio"#PJM -L rscgrp=coupler-lec-a#PJM -L node=1#PJM --mpi proc=16#PJM -L elapse=00:30:00#PJM -g gr00
#PJM -j#PJM -e err

module purge
module load intel
module load impi
module load waitio

module purge
module load intel
module load impi
module load waitio

module purge
module load intel
module load impi
module load waitio

export WAITIO_MASTER_HOST=`hostname`-ib0
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=0
export WAITIO_NPB=3

export WAITIO_MASTER_HOST=`waitio-serv -c`
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=1
export WAITIO_NPB=3

export WAITIO_MASTER_HOST=`waitio-serv -c`
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=2
export WAITIO_NPB=3

hostname
waitio-serv -d -m ${WAITIO_MASTER_HOST}
mpiexec -n ${PJM_MPI_PROC} ./sol1-intel

hostname
mpiexec -n ${PJM_MPI_PROC} ./sol2-intel

hostname
mpiexec -n ${PJM_MPI_PROC} ./sol3-intel
rm wk.*

Code-1 for intel
2023/3/30 PCCCワークショップ

Code-2 for intel
Copyright 2023, Shinji Sumimoto@The University of Tokyo

Code-3 for intel
29

WaitIO-Socketを用いたアプリケーション実行• 投入後は連成ジョブ間で同期してアプリ
ケーション実行開始

手動による連成ジョブ実行の様子

連成Toyプログラム：Code-3の出力

連成Toyプログラム：waitio-servの出力
2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

30

終わりに
• Wisteria/BDEC-01システム上でh3-Open-SYS/WaitIO+h3-OpenUTIL/MPと異種システム間連成計算のためのジョブ実行環境• ジョブ実行環境の整備：手作業からジョブスケジューラ上で通常バッチ処理可能• Wisteria/BDEC-01上で6月より試験運用開始: アカウントがあれば利用可能• ご興味を持たれた方へ• 詳しい利用方法を説明したチュートリアルを
年1回ペースで開催予定• 昨年度開催資料・ビデオ：東京大学
情報基盤センターの講習会ページ(2022/10/14)• 第191回お試しアカウント付き並列プログラミング講習会「異種システム間連成アプリケーション開発を学ぶ:
WaitIO/MP講習会」• https://www.cc.u-tokyo.ac.jp/events/lectures/191/
2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

31

Questions?

2023/3/30 PCCCワークショップ

Copyright 2023, Shinji Sumimoto@The University of Tokyo

32