FX1000におけるインターコネクトの利用について
2023.9.6

富士通株式会社
ジャパン・グローバルゲートウェイ
Public & Social ITS Division
笠井良浩
1© 2023 Fujitsu Limited目次
1. はじめに

2. FX1000のインターコネクトの構成
3. 通信性能の確認
4. ノード形状の指定方法

5. MPIランクの割り当て
6. ランクマップファイル
7. ノード形状の確認方法

8. MPIランクの割り当て状況
9. 付録

2

© 2023 Fujitsu Limited

1. はじめに⚫ FX1000での並列ジョブ実行は、指定方法によって性能差が生じる

場合があります。特にMPI通信については、プロセスの配置が通信性能に大きく影響するため、通信性能の改善を図る場合は、プロセスの配置について把握することが重要になります。今回は通信性能に影響するノードの形状やプロセスの配置について説明をします。
⚫ノード形状によるプロセスの配置について⚫プロセスがどのように配置されたかを確認する方法

3© 2023 Fujitsu Limited2. FX1000のインターコネクトの構成（1/2）⚫ FX1000のインターコネクトの構成⚫ 不老システムTypeIサブシステム

TypeIサブシステムはFX1000を2,304ノード／6ラックで構成されている
全ノード数＝2,304（384ｘ6ラック）
384
ノード

Z軸=8

384
ノード

384
ノード
384
ノード

384
ノード
384
ノード

Y軸=4

X軸=6

⚫ TofuインターコネクトDの形状
全6ラックでのTofuインターコネクトD形状は（X,Y,Z,a,b,c）＝（6,4,8,2,3,2）となるそれぞれの次元だと以下の形状になる⚫ 3次元の場合=12x12x16⚫ 2次元の場合=36x64⚫ 1次元の場合=2304（ X*a, Y*b, Z*c ）（ X*a*b, Y*Z*c ）（ X*a*Y*b*Z*c ）4© 2023 Fujitsu Limited2. FX1000のインターコネクトの構成（2/2）⚫ FX1000のインターコネクトの構成⚫ 不老システムTypeIサブシステムのリソースグループの確認⚫ pjstatコマンドによる確認
用意されているリ
ソースグループ[username@flow-fx01 ~]$ pjstat --rsc
RSCUNITfx[ENABLE,START]
TofuのX軸、Y軸、Z軸
fx[ENABLE,START]のサイズを表す。
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START][username@flow-fx01 ~]$RSCUNIT_SIZE
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8

RSCGRPfx-large[ENABLE,START]
fx-xlarge[ENABLE,START]
fx-bmt[ENABLE,START]
fx-special[ENABLE,STOP]
fx-middle2[ENABLE,START]
fx-interactive[ENABLE,START]
fx-small[ENABLE,START]
fx-debug[ENABLE,START]
fx-middle[ENABLE,START]RSCGRP_SIZE
8x12x168x12x16
6x12x1612x12x16
8x12x16
4x12x16
4x12x16
4x12x168x12x16

各リソースグループのX軸、Y軸、Z軸のノード数を表す。
プログラムの実行で必要なノード数は、
このサイズ内で指定する。

⚫ pjstat2コマンドによる確認[username@flow-fx01 ~]$ pjstat2 --rsc
RSCGRPSTATUSfx-interactive[ENABLE,START]
fx-small[ENABLE,START]
fx-debug[ENABLE,START]
fx-middle[ENABLE,START]
fx-middle2 用意されているリ[ENABLE,START]
ソースグループ
fx-large[ENABLE,START]
fx-xlarge[ENABLE,START]
fx-special[ENABLE,STOP][username@flow-fx01 ~]$NODE
768:4x12x16
768:4x12x16
768:4x12x16
1536:8x12x16
1536:8x12x16
1536:8x12x16
1536:8x12x16
2304:12x12x16

5

各リソースグループのX軸、Y軸、Z軸のノード数を表す。
プログラムの実行で必要なノード数は、
このサイズ内で指定する。

© 2023 Fujitsu Limited

3. 通信性能の確認（1/6）⚫ 通信性能の確認⚫ 実行条件⚫ 使用プログラム：IMBのMPI_Bcast, MPI_Alltoall⚫ 96プロセス実行（96ノード使用）⚫ 1次元、2次元、3次元による性能の確認• 1次元

node=96 ← デフォルトは離散割り当て（noncont）• 2次元 node=32x3:torus• 3次元 node=4x3x8:torus

形状を指定した
方が通信性能がよい形状を指定した
方が通信性能がよい

MPI通信の性能を上げるには、ノードの形状指定が有効であることが分かる
6© 2023 Fujitsu Limited

3. 通信性能の確認（2/6）⚫ MPI通信のコストの調査方法⚫ 詳細プロファイラ(fapp)で確認する

詳細プロファイラの出力結果にMPIのプロファイル結果がある。プログラムで使用されているMPI関数の種別やコスト情報等が確認できる。
MPI profile*************************************************************************************
Application*************************************************************************************
Kind
Elapsed(s)Wait(s)
Byte
Call (
0-4K
4K-64K
64K-1024K
1024KByte-)----------------------------------------------------------------------------------------------------------------------------------------10231.7422
2462.3977---125513560
99447368
15782712
78289202454560
all 0----------------------------------------------------------------------------------------------------------------------------------------AVG
0.00930.000018969.4664
1675.0208
1213.4375
350.1667
105.1667
6.2500MPI_Send
MAX
0.20350.000019863.3741
38468
27390
8404
2524
150
MIN
0.00010.00004.00007777
000-------------------------------------------------------------------------------------------------------------------------------------AVG
1.09800.000019855.0201
179233.3958
127536.0625
39218.6680
11778.6670
700.0000
MPI_Recv
MAX
3.05370.000019863.3741
541093386001117656
35336
2100
MIN
0.42250.000019730.5484
76782
54626
16808
5048
300
-------------------------------------------------------------------------------------------------------------------------------------AVG
0.65740.000039726.7482
87979.3750
57777.5000
19259.1660
10211.6670
731.0417
MPI_Sendrecv＜省略＞*************************************************************************************
Process 0*************************************************************************************
Elapsed(s)Wait(s)
Byte
Call (
0-4K
4K-64K
64K-1024K
1024KByte-)----------------------------------------------------------------------------------------------------------------------------------------198.4422
6.4302---7013809
5428663890824548944145378all 0----------------------------------------------------------------------------------------------------------------------------------------0.2035
0.000019863.3741
38391
27313
8404
2524
150
MPI_Send
3.05370.000019730.5484
54109338600111765635336
2100
MPI_Recv
1.76420.000039726.7482
230346151272
50424
26736
1914
MPI_Sendrecv＜省略＞

詳細プロファイラのデータ採取方法、結果出力の方法は次頁を参照
7© 2023 Fujitsu Limited

3. 通信性能の確認（3/6）⚫ MPI通信のコストの調査方法⚫ 詳細プロファイラの確認方法

詳細プロファイラの結果を確認するには、プロファイルデータの採取と結果出力を行う必要がある。
• 詳細プロファイルデータの採取方法

プログラムの実行時にfappコマンドを付けると、プロファイルデータが採取される。
実行ジョブスクリプト例#!/bin/bash#------ pjsub option --------##PJM -L rscunit=fx#PJM -L rscgrp=fx-xlarge#PJM -L elapse=1:00:00#PJM -L node=256#PJM --mpi proc=256#PJM –s詳細プロファイラの詳細については「プロファイラ使用手引書」を参照のこと
プロファイラ使用手引書はHPC Portalより入手することが可能
HPC Portal(https://portal.cc.nagoya-u.ac.jp/cgi-bin/hpcportal.ja/index.cgi)の「言語製品」→ 「FX1000 言語製品」→ 「開発支援ツール」→ 「プロファイラ使用手引書」

このジョブスクリプトを実行するとprofile_dataというディレクトリに詳
細プロファイルのデータが採取される#------- Program execution -------#
fapp –C –d ./profile_data mpiexec ./a.out• 詳細プロファイラの結果出力方法

fapppxコマンドを使用して結果を出力する

profile_dataディレクトリの詳細プロファ
イルデータからprofile_result.txtというテ
キストファイルに結果が出力される[username@flow-fx01 ~]$ fapppx –A –d ./profile_data –o ./prof_result.txt[username@flow-fx01 ~]$8© 2023 Fujitsu Limited

3. 通信性能の確認（4/6）⚫ MPI通信の通信内容の確認方法⚫ MPI統計情報を取得する

実行時のmcaオプションでMPIの統計情報を取ることが可能。MPIに関する統計情報が確認できる。
===================================================================/****************** MPI Statistical Information ******************/===================================================================

Unexpected_Message

1------------------- Barrier Communication Count ------------------Tofu
192625
Soft
38583------------------------- MPI Information ------------------------Dimension
1
Shape
48

----------- Tofu Barrier Collective Communication Count ----------Bcast
122
Reduce0
Allreduce504---------------------- MPI Memory Usage (MiB) --------------------Estimated_Memory_Size
110.46------------------- Per-peer Communication Count -----------------In_Node0
Neighbor0
Not_Neighbor0
Total_Count
0
Connection
47
Max_Hop
6
Average_Hop
3.23--------- 6D-Tofu-specific Collective Communication Count --------Alltoall0----------- Tofu-specific Collective Communication Count ---------Bcast
0
Reduce0Gather0Gatherv
0
Allreduce0
Alltoall116457
Alltoallv
0
Allgather0
Allgatherv
0----------------- Per-peer Transmission Size (MiB) ---------------In_Node
0.00
Neighbor
0.00
Not_Neighbor
0.00
Total_Size
0.00--------- Non-Tofu-specific Collective Communication Count -------Bcast
25
Reduce0Gather144----------------- Per-protocol Communication Count ---------------Eager
0
Rendezvous
0
Persistent_Extended_IF
0＜省略＞

MPI統計情報の出力方法は次頁を参照
9© 2023 Fujitsu Limited

3. 通信性能の確認（5/6）⚫ MPI通信の通信内容の確認方法⚫ MPI統計情報を取得する• 実行時のmcaオプションでMPIの統計情報を取ることが可能• 実行プログラムの再コンパイルの必要はない• 標準エラーに出力。ジョブ実行の場合は .errファイルに出力される。
実行ジョブスクリプト例#!/bin/bash#------ pjsub option --------##PJM -L rscunit=fx#PJM -L rscgrp=fx-xlarge#PJM -L elapse=1:00:00#PJM -L node=256#PJM --mpi proc=256#PJM –s

MPI統計情報については「MPI使用手引書」6.15 MPI統計情報 を参照のこと
MPI使用手引書はHPC Portalより入手することが可能
HPC Portal(https://portal.cc.nagoya-u.ac.jp/cgi-bin/hpcportal.ja/index.cgi)の「言語製品」→ 「FX1000 言語製品」→ 「MPI」→ 「MPI使用手引書」#------- Program execution -------#
mpiexec -mca mpi_print_stats 2 ./a.out

10© 2023 Fujitsu Limited

3. 通信性能の確認（6/6）⚫ ノードの形状に関係する部分（本日の説明の範囲）
TypeIのバッチジョブスクリプト例#!/bin/bash
ノード形状の指定#------ pjsub option --------##PJM -L rscunit=fx#PJM -L rscgrp=fx-xlarge#PJM -L elapse=1:00:00#PJM -L node=4x4x4:torus#PJM --mpi proc=256#PJM --mpi rank-map-hostfile=rankmap.txt#PJM --mpi rank-map-bynode#PJM -j#PJM -s#------- Program execution -------#
mpiexec ./a.out

11

ノード形状を指定するとプロセスがどのように配置されるのか
ランクマップの指定
ランクマップを使用したプロセス
配置（上級者向き）
プロセスの配置方法の指定
1ノードに複数プロセスの場合プロセスの配置がどうなるか
ジョブの統計情報出力
ジョブの統計情報を使ったノード
座標、Tofu座標の確認方法© 2023 Fujitsu Limited

4. ノード形状の指定方法（1/2）⚫ ノードの配置方法
ノードの配置方法

説明

メッシュモード(mesh)

最少割り当て単位は1ノード
Tofu座標上で隣接するノードが選択

トーラスモード(torus)

最少割り当て単位はTofu単位(12ノード)
Tofu座標上で隣接するノードが選択

離散割り当て(noncont)
デフォルト

最少割り当て単位は1ノードできるだけTofu座標上で隣接するように選択
以下の場合は隣接するノードが選択されない
・隣接する空きノードが無い場合
・隣接しないノードを選択することでジョブの実行開始が早められる場合

12© 2023 Fujitsu Limited

4. ノード形状の指定方法（2/2）⚫ rank-map-bynode⚫ 計算ノードに1プロセスを生成すると、次の計算ノードに移動して、1プロセスを生成する⚫ rank-map-bychip(デフォルト)⚫ 計算ノードにnプロセスを生成すると、次の計算ノードに移動して、nプロセス

を生成する⚫ rank-map-hostfile⚫ ホストファイルに指定された座標を元に、ランクを割り当てる13© 2023 Fujitsu Limited

5. MPIランクの割り当て（1/6）⚫ ランクの割り当て方法（１次元）⚫ 座標の原点をランク0とし、ノード割り当てはランク0のノードから隣接するノードに移動する。
⚫ 1ノードに1つのランク(プロセス)を生成する場合は、 rank-map-bychip, rankmap-bynodeどちらを指定してもノードの割り当て方は同じ。
⚫ どちらも指定しない場合は、デフォルトのrank-map-bychipとなる--mpi rank-map-bynode--mpi rank-map-bychip⚫例#PJM -L node=2#PJM --mpi proc=2#PJM --mpi rank-map-bynode14© 2023 Fujitsu Limited

5. MPIランクの割り当て（2/6）⚫ ランクの割り当て方法（１次元）
割り当てノードの順番割り当てるランク
rank-map-bynodeの場合

0番

ランク0と2

ランク0と1

1番

ランク1と3

ランク2と3#PJM -L node=2#PJM --mpi proc=4#PJM --mpi rank-map-bynode0,2

rank-map-bychipの場合

1,3#PJM -L node=2#PJM --mpi proc=4#PJM --mpi rank-map-bychip

N ノードとランク番号

0,1

X

2,3

N ノードとランク番号

X

15© 2023 Fujitsu Limited

5. MPIランクの割り当て（3/6）⚫ ランクの割り当て方法（２次元）⚫ 形状が2次元の場合は、ランクの割り当て方法を2種類(XY|YX)から選択できる。
⚫ (XY|YX)の指定がない場合はXYとなる。

--mpi rank-map-bynode[={XY|YX}]--mpi rank-map-bychip[={XY|YX}]⚫例#PJM -L node=2x2:torus#PJM --mpi proc=4#PJM --mpi rank-map-bynode=XY

16© 2023 Fujitsu Limited

5. MPIランクの割り当て（4/6）⚫ ランクの割り当て方法（２次元）
割り当てノードの順番割り当てるランク
rank-map-bynodeの場合

0番

ランク0と4

ランク0と1

1番

ランク1と5

ランク2と3

2番

ランク2と6

ランク4と5

3番

ランク3と7

ランク6と7#PJM -L node=2x2:torus#PJM --mpi proc=8#PJM --mpi rank-map-bynodeYrank-map-bychipの場合

2,6

3,7

0,4

1,5

#PJM -L node=2x2:torus#PJM --mpi proc=8#PJM --mpi rank-map-bychip

N ノードと
ランク番号

Y

X

4,5

6,7

0,1

2,3

N ノードと
ランク番号

X

17

© 2023 Fujitsu Limited

5. MPIランクの割り当て（5/6）⚫ ランクの割り当て方法（３次元）⚫ 形状が3次元の場合は、ランクの割り当て方法を6種類から選択できる。
⚫ (XYZ|XZY|YXZ|YZX|ZXY|ZYX)の指定がない場合はXYZとなる。

--mpi rank-map-bynode[={XYZ|XZY|YXZ|YZX|ZXY|ZYX}]--mpi rank-map-bychip[={XYZ|XZY|YXZ|YZX|ZXY|ZYX}]⚫例#PJM -L node=2x2x2:torus#PJM --mpi proc=8#PJM --mpi rank-map-bynode=XYZ

18© 2023 Fujitsu Limited

5. MPIランクの割り当て（6/6）⚫ ランクの割り当て方法（３次元）
割り当てるランク

割り当てノードの順番

rank-map-bynodeの場合

0番
1番
2番
3番
4番
5番
6番
7番

ランク0と8
ランク1と9
ランク2と10
ランク3と11
ランク4と12
ランク5と13
ランク6と14
ランク7と15#PJM -L node=2x2x2:torus#PJM --mpi proc=16#PJM --mpi rank-map-bychip#PJM -L node=2x2x2:torus#PJM --mpi proc=16#PJM --mpi rank-map-bynode
N N ノードと
ランク番号

6,14

2,10

Y
X

0,8

N N ノードと
ランク番号

7,15
3,11

4,12

Z

rank-map-bychipの場合ランク0と1
ランク2と3
ランク4と5
ランク6と7
ランク8と9
ランク10と11
ランク12と13
ランク14と15

12,13

4,5

Y

5,13

X

19

6,7
8,9

Z

1,9

14,15

0,1

10,11

2,3

© 2023 Fujitsu Limited

6. ランクマップファイル（1/3）⚫ ランクマップファイル（１次元）⚫ 形状が１次元の場合のランクマップファイルの例[username@flow-fx01 ~]$ cat rankmapfile-1(0)<---- ランク0
(1)<---- ランク1
(2)<---- ランク2
(3)<---- ランク3
(7)<---- ランク4
(6)<---- ランク5(5)<---- ランク6
(4)<---- ランク7

#PJM -L node=8:torus#PJM --mpi proc=8#PJM --mpi rank-map-hostfile=rankmapfile-1

20© 2023 Fujitsu Limited

6. ランクマップファイル（2/3）⚫ ランクマップファイル（２次元）⚫ 形状が２次元の場合のランクマップファイルの例[username@flow-fx01 ~]$ cat rankmapfile-2(0,0)<----- ランク0
(1,0)<----- ランク1
(2,0)<----- ランク2
(3,0)<----- ランク3
(3,1)<----- ランク4
(2,1)<----- ランク5
(1,1)<----- ランク6
(0,1)<----- ランク7

#PJM -L node=4x2:torus#PJM --mpi proc=8#PJM --mpi rank-map-hostfile=rankmapfile-2

21© 2023 Fujitsu Limited

6. ランクマップファイル（3/3）⚫ ランクマップファイル（３次元）⚫ 形状が３次元の場合のランクマップファイルの例[username@flow-fx01 ~]$ cat rankmapfile-3(0,0,0)<----- ランク0
(1,0,0)<----- ランク1
(0,1,0)<----- ランク2
(1,1,0)<----- ランク3
(0,0,1)<----- ランク4
(1,0,1)<----- ランク5
(0,1,1)<----- ランク6
(1,1,1)<----- ランク7

#PJM -L node=2x2x2:torus#PJM --mpi proc=8#PJM --mpi rank-map-hostfile=rankmapfile-3
N

N ノードと(0,1,1)

ランク番号Y(0,1,0)Z

2(0,0,1)

X(0,0,0)

6

7
3

4

0

22

(1,1,0)5
1(1,1,1)(1,0,1)(1,0,0)© 2023 Fujitsu Limited

7. ノード形状の確認方法（1/4）⚫ ジョブの統計情報を取得する⚫ ジョブの統計情報の取得方法（ジョブスクリプト例）#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-small#PJM -L elapse=0:10:00#PJM -L node=2x3x2:torus#PJM --mpi proc=12#PJM -s
ジョブ統計情報を出力するオプション

mpiexec ./a.out⚫ pjsub コマンドの -s または -S オプションで、ジョブの実行結果としてジョブ統

計情報を出力。-S オプションは -s オプションで出力される統計情報に加えてノード毎の統計情報も出力する。
⚫ ジョブ実行後にファイル拡張子statsのテキストファイルが生成される23© 2023 Fujitsu Limited

7. ノード形状の確認方法（2/4）⚫ ジョブの統計情報の出力内容を取得する⚫ ジョブの統計情報の出力例
Job Statistical Information
JOB IDSUB JOB NUM
START BULKNOEND BULKNOHOST NAMEJOB NAMEJOB TYPEJOB MODEL
USER
GROUP
RESOURCE UNITRESOURCE GROUP<略>NODE NUM (REQUIRE)NODE NUM (ALLOC)
NODE NUM (USE)NODE NUM (UNUSED)NODE ID (USE)TOFU COORDINATE (USE)NODE ID (RANK): 1005143: : : : flow-fx01: go_4x3x4.sh: BATCH: NM: fj-se: fj: fx: fx-middle

要求ノードと形状

割り当てノードと形状: 48:4x3x4: 48:4x3x4: 32
使用ノード数: 0: 0xFF2B0001 0xFF2E0005 0xFF2E0001 0xFF2B0007 0xFF2D0001
0xFF300005 0xFF300001 0xFF2D0007
使用されたノードの0xFF2C0001 0xFF2F0005 0xFF2F0001 0xFF2C0007 0xFF2B0005 0xFF2E0006 0xFF2E0008 0xFF2B0008
ノードIDリスト
0xFF2D0005 0xFF300006 0xFF300008 0xFF2D0008 0xFF2C0005
0xFF2F0006 0xFF2F0008 0xFF2C0008
0xFF2B000D 0xFF2E000E 0xFF2E0010 0xFF2B0010 0xFF2D000D 0xFF30000E 0xFF300010 0xFF2D0010: (2,1,6) (3,1,6) (3,1,6) (2,1,6) (2,1,6) (3,1,6) 使用されたノードの(3,1,6) (2,1,6) (2,1,6) (3,1,6) (3,1,6)(2,1,6) (2,1,7) (3,1,7) (3,1,7) (2,1,7) (2,1,7) (3,1,7) (3,1,7) (2,1,7) (2,1,7) (3,1,7)(3,1,7) (2,1,7) (2,1,7) (3,1,7) (3,1,7) (2,1,7) Tofu座標リスト(2,1,7) (3,1,7) (3,1,7) (2,1,7): 0xFF2B0001(0) 0xFF2B0001(1) 0xFF2E0005(2) 0xFF2E0005(3) 0xFF2E0001(4) 0xFF2E0001(5)0xFF2B0007(6) 0xFF2B0007(7) 0xFF2D0001(8) 0xFF2D0001(9) 0xFF300005(10) 0xFF300005(11)0xFF300001(12) 0xFF300001(13) 0xFF2D0007(14) 0xFF2D0007(15) 0xFF2C0001(16) 0xFF2C0001(17)0xFF2F0005(18) 0xFF2F0005(19) 0xFF2F0001(20)0xFF2F0001(21) 0xFF2C0007(22) 0xFF2C0007(23)割り当てられたノードのノードIDと0xFF2B0005(24) 0xFF2B0005(25) 0xFF2E0006(26) 0xFF2E0006(27) 0xFF2E0008(28) 0xFF2E0008(29)カッコ内はそれに対応するランク番号
0xFF2B0008(30) 0xFF2B0008(31) 0xFF2D0005(32)0xFF2D0005(33) 0xFF300006(34) 0xFF300006(35)0xFF300008(36) 0xFF300008(37) 0xFF2D0008(38) 0xFF2D0008(39) 0xFF2C0005(40) 0xFF2C0005(41)0xFF2F0006(42) 0xFF2F0006(43) 0xFF2F0008(44) 0xFF2F0008(45) 0xFF2C0008(46) 0xFF2C0008(47)0xFF2B000D(48) 0xFF2B000D(49) 0xFF2E000E(50) 0xFF2E000E(51) 0xFF2E0010(52) 0xFF2E0010(53)0xFF2B0010(54) 0xFF2B0010(55) 0xFF2D000D(56) 0xFF2D000D(57) 0xFF30000E(58) 0xFF30000E(59)0xFF300010(60) 0xFF300010(61) 0xFF2D0010(62) 0xFF2D0010(63)24© 2023 Fujitsu Limited

7. ノード形状の確認方法（3/4）⚫ ノード形状指定⚫ リソースグループの情報の表示[username@flow-fx01 ~]$ pjstat --rsc
RSCUNITfx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]
fx[ENABLE,START]$RSCUNIT_SIZE
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8
6x4x8

RSCGRPfx-large[ENABLE,START]
fx-xlarge[ENABLE,START]
fx-bmt[ENABLE,START]
fx-special[ENABLE,STOP]
fx-middle2[ENABLE,START]
fx-interactive[ENABLE,START]
fx-small[ENABLE,START]
fx-debug[ENABLE,START]
fx-middle[ENABLE,START]RSCGRP_SIZE
8x12x168x12x16
6x12x1612x12x16
8x12x16
4x12x16
4x12x16
4x12x168x12x16

指定できる
サイズ⚫ ノードの利用状況により、指定した形状が割り当てられない場合は、形状を回転してノードを割り当てる。
ジョブの統計情報
Job Statistical Information<略>
NODE NUM (REQUIRE)NODE NUM (ALLOC)
NODE NUM (USE)NODE NUM (UNUSED)NODE ID (USE): 96:8x3x4: 96:4x3x8
形状を回転してノードを割り当てる: 96: 0: 0xFF1F0004 0xFF1F0003

25© 2023 Fujitsu Limited

7. ノード形状の確認方法（4/4）⚫ strictについて⚫ 形状を回転させない方法#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-large#PJM -L elapse=00:01:00#PJM -L node=8x3x4:torus:strict#PJM --mpi proc=96#PJM -s

回転させたくない場合はstrictを付ける

mpiexec ./a.out⚫ リソースグループの設定値より大きい形状を指定するとエラーメッセージが出力される。（例：12x3x4の形状指定でstrictを指定した場合）[username@flow-fx01 ~]$ cat go12x3x4_torus_strict.sh#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-large#PJM -L elapse=00:01:00
strictを付けているため回転しない#PJM -L node=12x3x4:torus:strict#PJM --mpi proc=144#PJM -s
mpiexec ./a.out[username@flow-fx01 ~]$[username@flow-fx01 ~]$ pjsub go12x3x4_torus_strict.sh[ERR.] PJM 0057 pjsub node=12x3x4 is greater than the upper limit (8x12x16).
$

26

エラーメッセージが出力される© 2023 Fujitsu Limited

8. MPIランクの割り当て状況（1/4）⚫ ランクマップファイルを使った実行（３次元：トーラス）⚫ 形状が4x3x4(torus)の場合の状況
NODE
TOFU
TOFU 6次元
COORDINATE COORDINATE (x,y,z,a,b,c)

ノード座標

ランク問合せインター
フェースで取れる座標
※後述

RANK
NO

rankmap

0(0,0,0)(0,0,0)(2,1,6)(2,1,6,0,0,0)

1(1,0,0)(1,0,0)(3,1,6)(3,1,6,0,0,0)2(2,0,0)(2,0,0)(3,1,6)(3,1,6,1,0,0)

3(3,0,0)(3,0,0)(2,1,6)(2,1,6,1,0,0)

4(0,1,0)(0,1,0)(2,1,6)(2,1,6,0,2,0)
取れる情報

5

(1,1,0)(1,1,0)(3,1,6)(3,1,6,0,2,0)

6(2,1,0)(2,1,0)(3,1,6)(3,1,6,1,2,0)

7(3,1,0)(3,1,0)(2,1,6)(2,1,6,1,2,0)

8(0,2,0)(0,2,0)(2,1,6)

9(1,2,0)(1,2,0)(3,1,6)

ランクマップ(2,1,6,0,1,0)
ファイルで指定
した座標(3,1,6,0,1,0)

10(2,2,0)(2,2,0)(3,1,6)(3,1,6,1,1,0)

11(3,2,0)(3,2,0)(2,1,6)(2,1,6,1,1,0)

12(0,0,1)(0,0,1)(2,1,7)(2,1,7,0,0,0)

13(1,0,1)(1,0,1)(3,1,7)(3,1,7,0,0,0)

14(2,0,1)(2,0,1)(3,1,7)(3,1,7,1,0,0)

15(3,0,1)(3,0,1)(2,1,7)(2,1,7,1,0,0)

16(0,1,1)(0,1,1)(2,1,7)(2,1,7,0,2,0)

17(1,1,1)(1,1,1)(3,1,7)(3,1,7,0,2,0)

：

：

：

：

44

(0,2,3)(0,2,3)(2,1,6)(2,1,6,0,1,1)

45(1,2,3)(1,2,3)(3,1,6)(3,1,6,0,1,1)

46(2,2,3)(2,2,3)(3,1,6)(3,1,6,1,1,1)

47(3,2,3)(3,2,3)(2,1,6)(2,1,6,1,1,1)(1,2,3)(0,2,3)

44
32
20

45
33
21

(0,2,2)(0,2,1)(0,2,0)8

ジョブ統計情報から

9
40
28
16

(0,1,0)

Y

4

Z

36
24
12

X
ノードと
N ランク番号46
47 (3,2,3)
34
35
22
23
10
11

41
29
17
5

(2,2,3)

42
30
18
6

37
25
13

43 (3,1,3)
31
19
7

38
26
14

39
(3,0,3)27(3,0,2)
15

0

1

2

3

(0,0,0)(1,0,0)(2,0,0)(3,0,0)(3,0,1)

Tofu座標同一TOFU単位で色分け(2,1,7)：(2,1,6)27(3,1,7)(3,1,6)

1つのTofu座標に12ノード含まれている© 2023 Fujitsu Limited

8. MPIランクの割り当て状況（2/4）⚫ ランクマップファイルを使った実行（３次元：トーラス）⚫ 形状が4x3x4(torus)の場合の状況
RANK
NO

rankmap

0(0,0,0)(0,0,0)(2,1,6)(2,1,6,0,0,0)

1(1,0,0)(1,0,0)(3,1,6)(3,1,6,0,0,0)2(2,0,0)(2,0,0)(3,1,6)(3,1,6,1,0,0)

3(3,0,0)(3,0,0)(2,1,6)(2,1,6,1,0,0)

4(0,1,0)(0,1,0)(2,1,6)(2,1,6,0,2,0)

5(1,1,0)(1,1,0)(3,1,6)(3,1,6,0,2,0)

6(2,1,0)(2,1,0)(3,1,6)(3,1,6,1,2,0)

7(3,1,0)(3,1,0)(2,1,6)(2,1,6,1,2,0)

8(0,2,0)(0,2,0)(2,1,6)(2,1,6,0,1,0)

9(1,2,0)(1,2,0)(3,1,6)(3,1,6,0,1,0)

10(2,2,0)(2,2,0)(3,1,6)(3,1,6,1,1,0)

11(3,2,0)(3,2,0)(2,1,6)(2,1,6,1,1,0)

12(0,0,1)(0,0,1)(2,1,7)(2,1,7,0,0,0)

13(1,0,1)(1,0,1)(3,1,7)(3,1,7,0,0,0)

14(2,0,1)(2,0,1)(3,1,7)(3,1,7,1,0,0)

15(3,0,1)(3,0,1)(2,1,7)(2,1,7,1,0,0)

16(0,1,1)(0,1,1)(2,1,7)(2,1,7,0,2,0)

17(1,1,1)(1,1,1)(3,1,7)(3,1,7,0,2,0)

：

：

：

：

44

(0,2,3)(0,2,3)(2,1,6)(2,1,6,0,1,1)

45(1,2,3)(1,2,3)(3,1,6)(3,1,6,0,1,1)

46(2,2,3)(2,2,3)(3,1,6)(3,1,6,1,1,1)

47(3,2,3)(3,2,3)(2,1,6)(2,1,6,1,1,1)

ノード座標（６次元：x,y,z,a,b,c）

NODE
TOFU
TOFU 6次元
COORDINATE COORDINATE (x,y,z,a,b,c)(3,1,6,0,1,1)(2,1,6,0,1,1)

44
32
20

45
33
21

(2,1,7,0,1,1)(2,1,7,0,1,0)(2,1,6,0,1,0)

8

9
40
28
16

(2,1,6,0,2,0)

4

46
47
34
35
22
23
10
11

41
29
17
5

(3,1,6,1,1,1)

42
30
18
6

43
31
19

(2,1,6,1,1,1)(2,1,6,1,2,1)

7

Y
Z

36
24
12

X
ノードと
N ランク番号

0(2,1,6,0,0,0)

37
25
13

38
26
14

39
(2,1,6,1,0,1)
27(2,1,7,1,0,1)
15

1

2

3

(3,1,6,0.0,0)(3,1,6,1,0,0)(2,1,6,1,0,0)(2,1,7,1,0,0)

Tofu座標(2,1,7)：(2,1,6)28(3,1,7)(3,1,6)

1つのTofu座標に12ノード含まれている© 2023 Fujitsu Limited

8. MPIランクの割り当て状況（3/4）⚫ ランクマップファイルを使った実行（３次元：トーラス）⚫ 形状が4x3x4(torus)の場合の状況
Tofu座標Tofu座標(a,b,c)(0,2,0)(0,1,1)(1,1,0)(3,1,6)(3,1,6,0,1,1)(2,1,6,0,1,1)(0,0,1)(2,1,7,0,1,0)(2,1,6,0,1,0)

b+1

44
32
20

45
33
21

(2,1,7,0,1,1)(1,0,0)a(a, b, c)

1つのTofu座標に12ノード含まれている

6次元 (x,y,z,a,b,c)

各ノードは隣接している(1,0,1)(0,0,0)c(2,1,6)(3,1,7)(1,1,1)(0,1,0)b(2,1,7)(0,2,1)(1,2,0) (1,2,1)

8

9
40
28
16

y+1
z+1 c+1(2,1,6,0,2,0)

4

46
47
34
35
22
23
10
11

41
29
17
5

(3,1,6,1,1,1)

42
30
18
6

43
31
19

(2,1,6,1,1,1)(2,1,6,1,2,1)

7

x+1

x-1

36
24
12

a+1

z-1

y-1

0

b-1

(2,1,6,0,0,0)

29

37
25
13

38
26
14

39
(2,1,6,1,0,1)
27(2,1,7,1,0,1)
15

1

2

3

(3,1,6,0.0,0)(3,1,6,1,0,0)(2,1,6,1,0,0)(2,1,7,1,0,0)

Y
Z
X
ノードと
N ランク番号© 2023 Fujitsu Limited

8. MPIランクの割り当て状況（4/4）⚫ ランクマップファイルを使った実行（３次元：メッシュ）⚫ 形状が4x3x4(mesh)の場合の状況
RANK
NO

rankmap

0(0,0,0)(0,0,0)(2,0,6)(2,0,6,0,2,1)

1(1,0,0)(1,0,0)(2,0,6)(2,0,6,1,2,1)

2(2,0,0)(2,0,0)(3,0,6)(3,0,6,1,2,1)

3(3,0,0)(3,0,0)(3,0,6)(3,0,6,0,2,1)

4(0,1,0)(0,1,0)(2,0,7)(2,0,7,0,2,1)

5(1,1,0)(1,1,0)(2,0,7)(2,0,7,1,2,1)

6(2,1,0)(2,1,0)(3,0,7)(3,0,7,1,2,1)

7(3,1,0)(3,1,0)(3,0,7)(3,0,7,0,2,1)

8(0,2,0)(0,2,0)(2,0,7)(2,0,7,0,2,0)

9(1,2,0)(1,2,0)(2,0,7)(2,0,7,1,2,0)

10(2,2,0)(2,2,0)(3,0,7)(3,0,7,1,2,0)

11(3,2,0)(3,2,0)(3,0,7)(3,0,7,0,2,0)

12(0,0,1)(0,0,1)(2,1,6)(2,1,6,0,2,1)

13(1,0,1)(1,0,1)(2,1,6)(2,1,6,1,2,1)

14(2,0,1)(2,0,1)(3,1,6)(3,1,6,1,2,1)

15(3,0,1)(3,0,1)(3,1,6)(3,1,6,0,2,1)

16(0,1,1)(0,1,1)(2,1,7)(2,1,7,0,2,1)

17(1,1,1)(1,1,1)(2,1,7)(2,1,7,1,2,1)

：

：

：

：

：

44

(0,2,3)(0,2,3)(2,1,7)(2,1,7,0,0,0)45(1,2,3)(1,2,3)(2,1,7)(2,1,7,1,0,0)

46(2,2,3)(2,2,3)(3,1,7)(3,1,7,1,0,0)

47(3,2,3)(3,2,3)(3,1,7)(3,1,7,0,0,0)

ノード座標

NODE
TOFU
TOFU 6次元
COORDINATE COORDINATE (x,y,z,a,b,c)(1,2,3)(0,2,3)

44
32
20

45
33
21

(0,2,2)(0,2,1)(0,2,0)

8

9
40
28
16

(0,1,0)4647 (3,2,3)
34
35
22
23
10
11

41
29
17

4

5

(2,2,3)

42
30
18
6

43 (3,1,3)
31
19
7

Y
36
24
12

Z
X
ノードと
N ランク番号

37
25
13

38
26
14

39
(3,0,3)27(3,0,2)
15

0

1

2

3

(0,0,0)(1,0,0)(2,0,0)(3,0,0)(3,0,1)

Tofu座標(2,1,7)(2,0,7)(2,1,6)(2,0,6)30(3,1,7)(3,0,7)

1つのTofu座標に12ノード含まれている(3,1,6)(3,0,6)© 2023 Fujitsu Limited

9. 付録⚫ ランク問合せインターフェース⚫ 12x3x4の形状指定例⚫ 12x12の形状指定例⚫ 6x6x4の形状指定例

31© 2023 Fujitsu Limited

ランク問合せインターフェース（1/2）⚫ 座標の問合せ関数⚫ 指定されたコミュニケータとそのコミュニケータにおけるプロセスのランクに対応する論理座標またはTofu座標の取得が可能⚫ Fortran書式

USE MPI_EXT
FJMPI_TOPOLOGY_GET_COORDS(COMM, RANK, VIEW, MAXDIMS, COORDS, IERROR)INTEGER COMM, RANK, VIEW, MAXDIMS, COORDS(*), IERROR⚫ Ｃ言語書式#include <mpi-ext.h>
int FJMPI_Topology_get_coords(MPI_Comm comm, int rank, int view, int maxdims, int coords[])⚫ 引数説明型

変数

MPI_Comm

comm

コミュニケータを指定

IN

int

rank

コミュニケータ内のランクを指定

IN

view

論理座標かTofu座標かを表すマクロを指定
FJMPI_LOGICAL: 論理座標
FJMPI_TOFU_SYS: Tofu座標(実際に割り当てられた座標)
FJMPI_TOFU_REL: Tofu座標(引数commのランク0を基準とした相対座標)

IN

int

maxdim

取得する座標の次元数を指定
viewがFJMPI_LOGICALの場合: 1～3を指定
viewがFJMPI_LOGICAL以外の場合: 1～6を指定

IN

int[]

coords

コミュニケータとランクに対応する座標の配列

OUT

int

説明

32

IN/OUT© 2023 Fujitsu Limited

ランク問合せインターフェース（2/2）⚫ 座標の問合せ関数の使用例⚫ サンプルプログラムの実行条件① 4ノード4プロセス実行（1ノードあたり1プロセス）② 以下のTofu座標（6次元座標）を取得- 実際に割り当てられた座標- ランク０を基準とした相対座標
実行結果

サンプルプログラム
program mainuse MPI_EXT
integer myrank,ierrinteger coords(6)integer coords2(6)

rank=
rank=
rank=
rank=

0
1
2
3

coords= 4 0 3 0 0 1
coords= 4 0 3 0 1 1
coords= 4 0 3 1 0 1
coords= 4 0 3 1 1 1

実際に割り当てられたTofu座標
6次元 (x,y,z,a,b,c)call MPI_INIT(ierr)call MPI_COMM_RANK(MPI_COMM_WORLD,myrank,ierr)coords2= 0 0 0 0 0 0
coords2= 0 0 0 0 1 0
coords2= 0 0 0 1 0 0
coords2= 0 0 0 1 1 0

ランク０を基準とした相対座標
6次元 (x,y,z,a,b,c)call FJMPI_TOPOLOGY_GET_COORDS(MPI_COMM_WORLD, myrank, &FJMPI_TOFU_SYS, 6, coords, ierr)call FJMPI_TOPOLOGY_GET_COORDS(MPI_COMM_WORLD, myrank, &FJMPI_TOFU_REL, 6, coords2, ierr)write(*,'(a,i4,a,6i2,a,6i2)') &"rank=",myrank," coords=",coords," coords2=",coords2
call MPI_FINALIZE(ierr)end
33© 2023 Fujitsu Limited

付録 : 12x3x4の形状指定例 （1/3)
実行スクリプト⚫ 12x3x4:torusの形状指定例#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-large#PJM -L elapse=00:01:00#PJM -L node=12x3x4:torus#PJM --mpi proc=144#PJM --mpi rank-map-hostfile=rankmap_12x3x4#PJM -s⚫ 実行条件⚫ 形状は12x3x4:torus⚫ strict指定は無し⚫ プロセス数は144（1ノード1プロセス）⚫ ランクマップファイルを使用

mpiexec ./a.out

ランクマップファイル(rankmap_12x3x4)
ランクマップファイルによるノード形状とプロセス配置

72

73

74

75

76

77

78

79

60
61
62
63
64
65
66
67
48
49
50
51
52
53
54
55
36
37
38
39
40
41
42
43

0

24
12

1

25
13

2

26
14

3

27
15

28
16
4

5

29
17

6

30
18

7

31
19

80

81

82

83

68
69
70
71
56
57
58
59
44
45
46
47

8

32
20

9

33
21

34

22
10

Z

35

23
11

X
Y
N

34

ノードと
ランク番号

( 0,
( 1,
( 2,
( 3,
( 4,
( 5,
( 6,
( 7,
( 8,
( 9,
( 10,
( 11,
( 0,
( 1,
( 2,

0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
:
:
( 8, 2,( 9, 2,( 10, 2,
( 11, 2,

0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)

← ランク0← ランク1← ランク2← ランク3← ランク4

3)
3)
3)
3)

← ランク140← ランク141← ランク142← ランク143© 2023 Fujitsu Limited

付録 : 12x3x4の形状指定例 （2/3)⚫ 12x3x4:torusの形状指定例

78

79

60
61
62
63
64
65
66
67
48
49
50
51
52
53
54
55
36
37
38
39
40
41
42
43

0

24
12

1

25
13

2

26
14

3

27
15

28
16
4

5

29
17

6

30
18

7

31
19

80

81

82

83

Z

68
69
70
71
56
57
58
59
44
45
46
47

8

32
20

9

33
21

34

22
10

X

35

23
11

35

Y

ノードと
N ランク番号

35

23
11

34

22
10
9

33
21
8

32
20
7

31
19
6

30
18
5

29
17
4

28
16
3

27
15
2

77

1

76

0

75

74

74

73

73

72

72

26
14

形状を回転して割り当てられた

75

76

<略>

25
13

77

78

: 144:12x3x4: 144:4x3x12
: 144
: 0

24
12

83

ノード形状は4x3x12で割り当てられた。
これは要求した12x3x4は回転させないと割り当てられない大きさのため。

80

81

82

: 1000889: : : : flow-fx01: go12x3x4.sh: BATCH79

JOB IDSUB JOB NUM
START BULKNOEND BULKNOHOST NAMEJOB NAMEJOB TYPE<略>NODE NUM (REQUIRE)NODE NUM (ALLOC)
NODE NUM (USE)NODE NUM (UNUSED)

60
61
62
63
64
65
66
67
48
49
50
51
52
53
54
55
36
37
38
39
40
41
42
43

Job Statistical Information

68
69
70
71
56
57
58
59
44
45
46
47

⚫ ジョブの統計情報を確認© 2023 Fujitsu Limited

付録 : 12x3x4の形状指定例 （3/3)

ノードとN ランク番号
36

32
20
31
19

23
11

34

22
10

(2,1,7)(3,1,7)(2,1,6)(3,1,6)(2,1,5)(3,1,5)(2,1,4)(3,1,4)(2,1,3)(3,1,3)(2,1,2)(3,1,2)

28
16
27
15

Z

26
14

3

4

5

64
52
40
61
62
63
49
50
51
37
38
39

29
17

6

30
18

7

8

9

33
21

TOFU座標

X

1

25
13

2

Y

24
12

Y

60
48
36

Z
X

35

69
70
71
57
58
59
45
46
47
68
56
44
65
66
67
53
54
55
41
42
43

82

83
81
79
78
77
76

(2,1,2,0,0,0)(2,1,3,0,0,0)(2,1,4,0,0,0)(2,1,5,0,0,0)(2,1,6,0,0,0)(2,1,7,0,0,0)(2,1,7,0,0,1)(2,1,6,0,0,1)(2,1,5,0,0,1)(2,1,4,0,0,1)(2,1,3,0,0,1)(2,1,2,0,0,1)(2,1,2,0,2,0)(2,1,3,0,2,0):(3,1,2,0,0,0)(3,1,3,0,0,0)(3,1,4,0,0,0)(3,1,5,0,0,0)(3,1,6,0,0,0)(3,1,7,0,0,0)(3,1,7,0,0,1)(3,1,6,0,0,1)(3,1,5,0,0,1)(3,1,4,0,0,1)(3,1,3,0,0,1)(3,1,2,0,0,1)(3,1,2,0,2,0):(2,1,7,1,1,1)(2,1,6,1,1,1)(2,1,5,1,1,1)(2,1,4,1,1,1)(2,1,3,1,1,1)(2,1,2,1,1,1)

TOFU座標を
色分け

80

6次元座標

75

TOFU
COORDINATE(2,1,2)(2,1,3)(2,1,4)(2,1,5)(2,1,6)(2,1,7)(2,1,7)(2,1,6)(2,1,5)(2,1,4)(2,1,3)(2,1,2)(2,1,2)(2,1,3):(3,1,2)(3,1,3)(3,1,4)(3,1,5)(3,1,6)(3,1,7)(3,1,7)(3,1,6)(3,1,5)(3,1,4)(3,1,3)(3,1,2)(3,1,2):(2,1,7)(2,1,6)(2,1,5)(2,1,4)(2,1,3)(2,1,2)74(0,0,0)(1,0,0)(2,0,0)(3,0,0)(4,0,0)(5,0,0)(6,0,0)(7,0,0)(8,0,0)(9,0,0)(10,0,0)(11,0,0)(0,1,0)(1,1,0):(0,0,1)(1,0,1)(2,0,1)(3,0,1)(4,0,1)(5,0,1)(6,0,1)(7,0,1)(8,0,1)(9,0,1)(10,0,1)(11,0,1)(0,1,1):(6,2,3)(7,2,3)(8,2,3)(9,2,3)(10,2,3)(11,2,3)NODE
COORDINATE(0,0,0)(1,0,0)(2,0,0)(3,0,0)(4,0,0)(5,0,0)(6,0,0)(7,0,0)(8,0,0)(9,0,0)(10,0,0)(11,0,0)(0,1,0)(1,1,0):(0,0,1)(1,0,1)(2,0,1)(3,0,1)(4,0,1)(5,0,1)(6,0,1)(7,0,1)(8,0,1)(9,0,1)(10,0,1)(11,0,1)(0,1,1):(6,2,3)(7,2,3)(8,2,3)(9,2,3)(10,2,3)(11,2,3)73

rankmap

72

RANK
NO
0
1
2
3
4
5
6
7
8
9
10
11
12
13
:
36
37
38
39
40
41
42
43
44
45
46
47
48
:
138
139
140
141
142
143

ランク配置

1つのTofu座標に12ノード含まれている0⚫ 12x3x4:torusの形状指定例© 2023 Fujitsu Limited

付録 : 12x12の形状指定例 （1/2)⚫ 12x12:torusの形状指定例⚫ 実行条件⚫ 形状は12x12:torus⚫ プロセス数は144（1ノード1プロセス）⚫ ランクマップファイルを使用
実行スクリプト#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-large#PJM -L elapse=00:01:00#PJM -L node=12x12:torus#PJM --mpi proc=144#PJM --mpi rank-map-hostfile=rankmap_12x12#PJM -s

mpiexec ./a.out

ランクマップファイルによるプロセス配置
139

140

141

142

143

ランクマップファイル(rankmap_12x12)
( 0,
( 1,
( 2,
( 3,
( 4,
( 5,
( 6,
( 7,
( 8,
( 9,
( 10,
( 11,
( 0,
( 1,
( 2,

0) ← ランク00) ← ランク1
0) ← ランク20) ← ランク30) ← ランク4
0)
0)
0)
0)
0)
0)
0)
1)
1)
1)
:
:
( 8, 11) ← ランク140( 9, 11) ← ランク141( 10, 11) ← ランク142( 11, 11) ← ランク143
37

Y

36

37

38

39

24

25

26

27

28

29

30

31

32

33

34

35

12

13

14

15

16

17

18

19

20

21

22

23

0

1

2

3

4

5

6

7

8

9

10

11

X
N

ノードと
ランク番号
© 2023 Fujitsu Limited

付録 : 12x12の形状指定例 （2/2)⚫ 12x12:torusの形状指定例
RANK
NO
0
1
2
3
4
5
6
7
8
9
10
11
12
13
:
36
37
38
39
40
41
42
43
44
45
46
47
48
:
138
139
140
141
142
143

rankmap
(0,0)
(1,0)
(2,0)
(3,0)
(4,0)
(5,0)
(6,0)
(7,0)
(8,0)
(9,0)
(10,0)(11,0)
(0,1)
(1,1)
:
(0,3)
(1,3)
(2,3)
(3,3)
(4,3)
(5,3)
(6,3)
(7,3)
(8,3)
(9,3)
(10,3)(11,3)(0,4):(6,11)(7,11)(8,11)(9,11)(10,11)(11,11)NODECOORDINATE(0,0,0)(1,0,0)(2,0,0)(3,0,0)(4,0,0)(5,0,0)(6,0,0)(7,0,0)(8,0,0)(9,0,0)(10,0,0)(11,0,0)(0,1,0)(1,1,0):(0,3,0)(1,3,0)(2,3,0)(3,3,0)(4,3,0)(5,3,0)(6,3,0)(7,3,0)(8,3,0)(9,3,0)(10,3,0)(11,3,0)(0,4,0):(6,11,0)(7,11,0)(8,11,0)(9,11,0)(10,11,0)(11,11,0)TOFU
COORDINATE(2,0,4)(3,0,4)(3,0,4)(3,0,4)(2,0,4)(2,0,4)(2,0,4)(2,0,4)(3,0,4)(3,0,4)(3,0,4)(2,0,4)(2,1,4)(3,1,4)(2,0,4,0,0,0)(3,0,4,0,0,0)(3,0,4,0,1,0)(3,0,4,0,2,0)(2,0,4,0,2,0)(2,0,4,0,1,0)(2,0,4,1,1,0)(2,0,4,1,2,0)(3,0,4,1,2,0)(3,0,4,1,1,0)(3,0,4,1,0,0)(2,0,4,1,0,0)(2,1,4,0,0,0)(3,1,4,0,0,0)(2,0,5)(3,0,5)(3,0,5)(3,0,5)(2,0,5)(2,0,5)(2,0,5)(2,0,5)(3,0,5)(3,0,5)(3,0,5)(2,0,5)(2,0,6)(2,0,5,0,0,0)(3,0,5,0,0,0)(3,0,5,0,1,0)(3,0,5,0,2,0)(2,0,5,0,2,0)(2,0,5,0,1,0)(2,0,5,1,1,0)(2,0,5,1,2,0)(3,0,5,1,2,0)(3,0,5,1,1,0)(3,0,5,1,0,0)(2,0,5,1,0,0)(2,0,6,0,0,0)(2,0,4)(2,0,4)(3,0,4)(3,0,4)(3,0,4)(2,0,4)(2,0,4,1,1,1)(2,0,4,1,2,1)(3,0,4,1,2,1)(3,0,4,1,1,1)(3,0,4,1,0,1)(2,0,4,1,0,1)

TOFU座標を色分け

ランク配置
139

140

141

142

143

6次元座標

36

37

38

39

24

25

26

27

28

29

30

31

32

33

34

35

12

13

14

15

16

17

18

19

20

21

22

23

0

1

2

3

4

5

6

7

8

9

10

11

(2,1,6)

TOFU座標(2,0,6)(3,1,6)(2,0,5)(2,0,4)(3,1,5)(3,1,4)Z(3,0,5)(2,1,4)X
N ノードと
ランク番号1つのTofu座標に12ノード含まれている(3,0,6)(2,1,5)YX(3,0,4)

Y38© 2023 Fujitsu Limited

付録 : 6x6x4の形状指定例 （1/2)⚫ 6x6x4:torusの形状指定例⚫ 実行条件⚫ 形状は6x6x4:torus⚫ プロセス数は144（1ノード1プロセス）⚫ ランクマップファイルを使用
実行スクリプト#!/bin/bash#PJM -L rscunit=fx#PJM -L rscgrp=fx-large#PJM -L elapse=00:01:00#PJM -L node=6x6x4:torus:strict#PJM --mpi proc=144#PJM --mpi rank-map-hostfile=rankmap_6x6x4#PJM -s
mpiexec ./a.out

ランクマップファイル(rankmap_6x6x4)( 0, 0, 0) ← ランク0
( 1, 0, 0) ← ランク1
( 2, 0, 0) ← ランク2
( 3, 0, 0) ← ランク3
( 4, 0, 0) ← ランク4
( 5, 0, 0)( 0, 1, 0)( 1, 1, 0)( 2, 1, 0)( 3, 1, 0)( 4, 1, 0)( 5, 1, 0)( 0, 2, 0)( 1, 2, 0)( 2, 2, 0)::( 2, 5, 3) ← ランク140( 3, 5, 3) ← ランク141( 4, 5, 3) ← ランク142( 5, 5, 3) ← ランク143
39

ランクマップファイルによるプロセス配置
142

108

109

110

111

112

113

72

73

74

75

76

77

36

37

38

39

40

41

0

6

12

24
18

30

1

7

13

25
19

31

2

8

14

26
20

32

3

9

15

27
21

33

143

34

35

28
10

4

16

29

22

Z

11

17

23

5

X
Y

ノードと
N ランク番号© 2023 Fujitsu Limited

付録 : 6x6x4の形状指定例 （2/2)⚫ 6x6x4:torusの形状指定例
RANK
NO
0
1
2
3
4
5
6
7
8
9
10
11
12
13
:
36
37
38
39
40
41
42
43
44
45
46
47
48
:
138
139
140
141
142
143

rankmap(0,0,0)(1,0,0)(2,0,0)(3,0,0)(4,0,0)(5,0,0)(0,1,0)(1,1,0)(2,1,0)(3,1,0)(4,1,0)(5,1,0)(0,2,0)(1,2,0):(0,0,1)(1,0,1)(2,0,1)(3,0,1)(4,0,1)(5,0,1)(0,1,1)(1,1,1)(2,1,1)(3,1,1)(4,1,1)(5,1,1)(0,2,1):(0,5,3)(1,5,3)(2,5,3)(3,5,3)(4,5,3)(5,5,3)NODE
COORDINATE(0,0,0)(1,0,0)(2,0,0)(3,0,0)(4,0,0)(5,0,0)(0,1,0)(1,1,0)(2,1,0)(3,1,0)(4,1,0)(5,1,0)(0,2,0)(1,2,0):(0,0,1)(1,0,1)(2,0,1)(3,0,1)(4,0,1)(5,0,1)(0,1,1)(1,1,1)(2,1,1)(3,1,1)(4,1,1)(5,1,1)(0,2,1):(0,5,3)(1,5,3)(2,5,3)(3,5,3)(4,5,3)(5,5,3)TOFU
COORDINATE(1,0,6)(2,0,6)(3,0,6)(3,0,6)(2,0,6)(1,0,6)(1,1,6)(2,1,6)(3,1,6)(3,1,6)(2,1,6)(1,1,6)(1,1,6)(2,1,6)

TOFU座標を色分け

ランク配置

142

6次元座標
(1,0,6,0,0,0)(2,0,6,0,0,0)(3,0,6,0,0,0)(3,0,6,1,0,0)(2,0,6,1,0,0)(1,0,6,1,0,0)(1,1,6,0,0,0)(2,1,6,0,0,0)(3,1,6,0,0,0)(3,1,6,1,0,0)(2,1,6,1,0,0)(1,1,6,1,0,0)(1,1,6,0,1,0)(2,1,6,0,1,0)(1,0,7)(2,0,7)(3,0,7)(3,0,7)(2,0,7)(1,0,7)(1,1,7)(2,1,7)(3,1,7)(3,1,7)(2,1,7)(1,1,7)(1,1,7)(1,0,7,0,0,0)(2,0,7,0,0,0)(3,0,7,0,0,0)(3,0,7,1,0,0)(2,0,7,1,0,0)(1,0,7,1,0,0)(1,1,7,0,0,0)(2,1,7,0,0,0)(3,1,7,0,0,0)(3,1,7,1,0,0)(2,1,7,1,0,0)(1,1,7,1,0,0)(1,1,7,0,1,0)(1,0,6)(2,0,6)(3,0,6)(3,0,6)(2,0,6)(1,0,6)(1,0,6,0,1,1)(2,0,6,0,1,1)(3,0,6,0,1,1)(3,0,6,1,1,1)(2,0,6,1,1,1)(1,0,6,1,1,1)

143

108

109

110

111

112

113

72

73

74

75

76

77

36

37

38

39

40

41

0

6

12

24
18

30

1

7

13

25
19

31

2

8

14

26
20

32

3

9

15

27
21

33

34

35

28
10

16

29

22
11

4

17

23

5

Z
X

Y

ノードと
N ランク番号TOFU座標(1,1,7)(1,0,7)(1,1,6)(1,0,6)(2,1,7)(2,0,7)(2,1,6)(2,0,6)

1つのTofu座標に12ノード含まれている(3,1,7)(3,0,7)(3,1,6)

Z(3,0,6)

XY

40© 2023 Fujitsu Limited

Thank you© 2023 Fujitsu Limited