スーパーコンピュータワークショップ資

HPF言語と今後のプログラミング
インタフェース
2001年3月22日
NEC ソリューションズ
第一コンピュータソフトウェア事業部
妹尾義樹、村井均、末広謙二

内容_

HPF言語の概要_

JAHPFの活動について_

拡張言語仕様HPF/JA1.0__

NECのHPFに対する取り組みと現状
今後のプログラミングインタフェースについ
て

_

まとめ

2001年3月22日

HPF言語と今後のプログラミングインタフェース

HPCシステムアーキテクチャの動向と並列化インタフェース

ノード間結合網

単一プロセッサ
共有メモリ（スカラ、ベクトル） システム

並列性
自動抽出
ベクトル化
スーパースカラ化

2001年3月22日

マルチスレッド化
OpenMP
自動並列化

疎結合システム（LAN 、WAN 結合）

SMP クラスタ

MPI
HPF

分散処理技術
IMPI、PVM、CORBANetSolve,Ninf

HPF言語と今後のプログラミングインタフェー
スコンパイラ技術 VS
高

MPI

性能

理想領域
分散メモリ
並列システム

HPF

性
能

自動並列化

共有メモリ
並列システム自動ベクトル化

逐次ベクトル
スーパーコン

RISCコンパイラ

RISC
WS

OpenMP低困難
2001年3月22日

プログラミング容易さ
HPF言語と今後のプログラミングインタフェー
ス

容易共有メモリと分散メモリ
PE0 PE1

PEn

共有メモリ

PE0 PE1PEn

DM0 DM1

DMn

共有メモリシステム

分散メモリシステム−接続台数に限界−メモリが遠い−プログラミングが簡単−高並列システムの構築が容易−各プロセッサの自メモリへのアクセス
が高速−プログラミングが大変

不要
2001年3月22日

データアクセス
局所性の抽出必要

HPF言語と今後のプログラミングインタフェー
スHigh Performance Fortra_

分散メモリ用データパラレル言語_

Supercomputing
91で最初に提案_

HPFフォーラム（Rice
大学Ken Kennedy
主導）で仕
様決定作業
— HPF1.0 Spring 1993
— HPF1.1 Nov. 1994（バグ修正）— HPF2.0 Jan. 1997
（公認拡張仕様として機能拡張）_

Basic Concept:— データの分散メモリへの配置を明示指定— シングルストリーム— 通信と計算のマッピング（並列化）はコンパイラが自2001年3月22日
HPF言語と今後のプログラミングインタフェー
動処理ス

HPF言語の基本的な考え方_

配列の分散配置をユーザが指定
PE1

配列A （I,J）
分割
配置

データ転送の生成
ループ並列化

_

PE2

PE3

PE4

コンパイラが行う

Owner Computes Rule
— 更新データを保持するプロセッサが処理を行う

2001年3月22日

HPF言語と今後のプログラミングインタフェース

ＨＰＦプログラムの例（ＭＰＩとの比較）
Fortran（逐次）
MPI並列プログラム
HPFプログラム
program sample
parameter( n = 100 )real*4 x(n)call
mpi_init( ierr )!HPF$ PROCESSORS P(4)callmpi_comm_size(mpi_comm_world
,npe,
ierr
)
call
mpi_comm_rank( mpi_comm_world,np ierr,)!HPF$ DISTRIBUTE X(BLOCK) ONTO P

program sample
program sample
include’mpif.h’parameter( n = 100parameter(n)= 100)
real*4x(n)real*4 x(n)do i = 1 , n
if ( eq.
np .0 ) thenx(i) = 1.e0 / float(i)do i = 1 , n
end dox(i) = 1.e0 / float(i)enddodot = 0.e0

do i=1,npe-1
call
mpi_send( x , mpi_realn ,, i , 0&mpi_comm_world
,
ierr
,
)
do i = 1 , n
end dodot = dot + x(i)else* x(i)call
mpi_recv( x ,mpi_realn , , 0 , 0
end do&mpi_comm_world,ist,,ierr )end if( n npe- 1+ )1 /)np
* + 1
write(6,*) ’dot = is
’ =,( dot
ie = min( n , ( (npen +- 11 )) */ ( np + 1 ) )stop
dot = 0.e0
end
do i = isie ,dot = dot + x(i) * x(i)end docall
mpi_allreduce( dot ,mpi_real
dot , ,1
mpi_sum,&
mpi_comm_worldierr
,, )
if np
( e
.q. 0 ) write(6,*) ’dot = ’ , dot
call
mpi_finalize( ierr)stop
end

2001年3月22日

do i = 1 , nx(i) = 1.e0 / float(i)end dodot = 0.e0
do i = 1 , n
dot = dot + x(i) * x(i)end dowrite(6,*) ’dot = ’ , dot
stop
end

HPF言語と今後のプログラミングインタフェースプログラミングインタフェースの比較
_

SPMDプログラミング(MPIの例)

PE0

別々の
データ

PE1

— 一つのプログラムを全員にコピーして実行
REAL A(100)— プロセッサごとにそれぞれ制御の流れを持つ

REAL A(100)(...
If mype.eq.0)(...
— データ空間はそれぞれのプロセッサで別々 If mype.eq.0)— 並列処理制御、通信はexplicit_

真

HPFプログラミング— 通常の逐次プログラミングと同一— 制御の流れはただ一つ— データ空間は全プロセッサで共有— 並列処理制御、通信はimplicit
2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

REAL A(100)

偽HPF言語の基本機能_

プロセッサ配列の宣言：ＰＲＯＣＥＳＳＯＲＳ指示_

配列の分散配置：ＤＩＳＴＲＩＢＵＴＥ指示_

ループ並列化可能性指示：ＩＮＤＥＰＥＮＤＥＮＴ指示— REDUCTION 演算の指定、テンポラリ変数指定（NEW）を 含む_

利用可能プロセッサ数獲得関数
NUMBER_OF_PROCESSORS()

定型問題なら、大半のプログラムがこれだけで並列化可能

2001年3月22日

HPF言語と今後のプログラミングインタフェース

2-Level Data Mapping in HPF
Array
A(6,6)

Array
B(4,6)

Align

Template
T(8,8)

Distribute
Processor
PE(2,2)

2001年3月22日

HPF言語と今後のプログラミングインタフェース

HPF2.0公認拡張機能_

GEN_BLOCK 分散：— （ブロック幅がプロセッサ毎に指定可能）_

REDISTRIBUTE：— 動的分散配置の変更

_

ON 節：
— 計算マッピングを特定の配列のマッピングに合わせる_

SHADOW ：— SHIFT転送のためにあらかじめ袖領域を確保

_

TASK

REGION ：—年3月22日
タスク並列（e.g.
連続する２つのループを別プロセッサで）2001
HPF言語と今後のプログラミングインタフェースOwner Computes Rule（更新）データを保持するプロセッサが計算を実行
ij!HPF$ A(BLOCK,*),B(BLOCK,*)
do i=1,nif(A(i,*)を保持) then
実行ガード
do j=1,n
配列A
A(i,j)=B(i+1,j+1)*2
end doend if
PE0
PE1
PE2
PE3
end do
ループ回転

ループ回転

ループ回転

ループ回転

T F F FF T F FF F T FF F F T

配列A

配列A

配列A

配列A

配列A の
割当て領域

2001年3月22日

HPF言語と今後のプログラミングインタフェース計算マッピングの決定
データ転送コストが最小になるように計算空間をプロセッサに割り当て
SHIFT転送

A

C
転置型転送

i=1,n

REAL*8 A(n,n),b(n,n),c(n,n)!HPF$ DISTRIBUTE (*,block) :: A,C!HPF$ DISTRIBUTE (block,*) :: B
do j=2,ndo i=1,nA(i,j) = B(i,j) + C(i,j-1)
enddo
j=2,n
A に合わせてend do
分割
enddo

計算空間
（iteration space)
2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

B

HPFコンパイラによる通信生成!HPF$ A(BLOCK,*),B(BLOCK,*)
do i=1,nif(A(i,*)を保持) thendo j=1,nijif(B(i+1,j+1)
を持ってな
い)

1要素ずつの通信

B（i+1,j+1)を転送
A(i,j)=B(i+1,j+1)*2

end doend ifend do

配列A

割当て範囲

Bに対する一括通信生成
do i =ieis,← 実行ガードの効率化
do j=1,nA(i,j)=B(i+1,j+1)*2 配列B
end doend do
2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

アクセス
範囲

' 1999JAHPF

HPF言語の問題点_

コンパイラが未成熟— この数年で格段に進歩— まだ十分とは言えない_

適用範囲に制限— 非定型処理の扱い、非同期処理の扱い_

プログラマの最適化についての細部の制御が不能— 処理系の実装に依存する部分が多い— 処理系の実装を知らないと使えない_

プログラミング技法が確立されていない— 例
2001年3月22日

分散配列を手続き間で共有する方法
手続き呼び出しを含むループの並列化
HPF言語と今後のプログラミングインタフェース

' 1999JAHPF

JAHPFの活動について_

HPF言語の普及促進活動— HPC ユーザへの宣伝、機能説明など— 日本語マニュアルの整備_

独自拡張仕様HPF/JAの策定— ベンダによる処理系開発、ユーザによる評価

1999年6月、Springer-Verlag
より
日本語訳＋JA拡張仕様を出版_

HPF プログラミング経験の蓄積— 実コードの並列化作業（15本程度）

2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

コンパイラ
開発者と
ユーザの
密な連携

' 1999JAHPF

HPF/JA 1.0言語仕様
HPF/JA
Approved Extensions ¥リダクション種別指定¥非同期通信¥SHIFT通信明示最適化
HPF 2.0¥通信スケジュール再利用(Core)¥¥ Mapped Pointer¥ Mapped Derived Type Compo.
¥ Indirect Distribution
2001年3月22日

HPF言語と今後のプログラミングインタフェース

' 1999JAHPF

非同期通信指定_

計算とデータ転送のオーバーラップ— 代入文で示されたデータ転送 (Array assignments,
WHERE constructs, FORALL constructs)と計算がオー
バラップ可能— 非同期通信 +WAIT

_

例
!HPFJ

ASYNCHRONOUS (ID=X) BEGIN
S(1：N) = T(1：N)
COMMA!HPFJ END ASYNCHRONOUS
Computation independent of the above COMPB
communication!HPFJ ASYNCWAIT (ID=X)
COMMA
COMPB

WAIT
TIME

2001年3月22日

HPF言語と今後のプログラミングインタフェース

' 1999JAHPF

SHIFT型通信の明示的最適化__

REFLECT: Set values into the SHADOW area from its original.
LOCAL: Assert no communication required— RESIDENT : Communication among active processors may

REAL A(N),B(N)!HPF$ DISTRIBUTE (BLOCK)::A,B!HPF$ SHADOW(1)::A
DO I=1,N
A(I) = ...
ENDDO!HPF$ REFLECT <object-list>
DO I=2,N-1!HPF$ ON HOME(B(I)),LOCAL(A)
B(I)=A(I-1)+A(I)+A(I+1)
ENDDO

2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

REFLECTLOCAL

' 1999JAHPF

通信スケジュール再利用_目的¥ 非定型通信において、通信パターンを再利用することで高速通信を実現（非線形添え字からの通信パターン計算を再利用）¥ スイスCSCSやVienna
大学で有用性実証_

ExampleOuter Loop

!HPF$ DISTRIBUTE A(BLOCK) ONTO PROC
1st
2nd
3rd
DO ...
Generate Reuse Reuse
...
comm.
!HPF$ INDEX_REUSE (.true.) A
Pattern
DO I=1,N... = A(IDX(I))
ENDDO
Indirect Access
...
ENDDO

2001年3月22日

HPF言語と今後のプログラミングインタフェース

非定型処理の例' courtesy of ECMWF

計算量が同等になるように、また転送量が少なく済む
ように計算領域を分割。
2001年3月22日
HPF言語と今後のプログラミングインタフェー
非定型の隣接通信の高速化が鍵ス

' 1999JAHPF

ベンチマーク活動_

昨年までに並列化されたコード(1) Molecular Code— Car-Parrinello
Method(2) Particle in Cell
— Electro-Static Plasma Simulation(3) IMPACT3D— 3-Dimensional CFD code with TVD Scheme(4) MICCG— 3-Dimensional Poisson Solver— Incomplete
Cholesky
Factorization(5) CIPCubic( nterpolated
I
Pseudo-particle Code)— 2-Dimensional CFD with upwind scheme(6) NJR(SAGCM)— Atmospheric Global Circulation Model using Spectral metho

2001年3月22日

HPF言語と今後のプログラミングインタフェース

' 1999JAHPF

Benchmarking Effort (Con_

今年並列化されたコード(1) FEM kernel (Yokohama National Univ., RIST)— Sparse matrix solver(2) NAL-LES (National Aerospace Lab.)— CFD with Large-Eddy simulation method(3) Shallow water equation model (Univ. of Tokyo)— FDM(4) Plasma MHD Code (National Inst. for Fusion Science)— Particle code with open boundary condition(5)ヘリコプタ周り流体計算（MHI）— Cartesian CFD(6) Astrophysical Rotating Plasma Simulator(千葉大)(7) CFD
コード〜3次元FFT〜(ESRDC)_

上記は、HUG2000にて発表— 京大、原研、NEC 並列処理センターなどのマシン利用環境の提供— ベンダとの密な協調作業
2001年3月22日
HPF言語と今後のプログラミングインタフェース

' 1999JAHPF

JAHPF今後の計画_

活動5年を契機に組織形態をリニューアル「HPF推進協議会」新規発足へ— 技術論と同時に普及促進活動により注力— オープン化：一般参加が可能な組織に転換— ユーザに評価環境を積極的に提供___

ベンチマーク活動の活性化→ benchmark suiteの開発
HPF/JA 2.0拡張仕様の検討 → HPF
標準仕様へ
標準プログラミング手引書の作成— 典型的並列化手法を網羅— 処理系ごとの実装依存部分をできるだけ見えない形に— 共通ツールインタフェース（どこまでできるか）

2001年3月22日

HPF言語と今後のプログラミングインタフェース

HUG2000（HPF User Group Meeting_

第一回（Santa Fe, New Mexico, USA,） 、
1998
第二回（Porto,
Portugal, 1998、第三回（Redondo Beach, California,）につづUSA
く第四回のHPFに関する国際会議_

日時： 2000
年10月19-20
日_

場所：ホテルインターコンチネンタル東京ベイ_

Keynote：Prof. Ken Kennedy大学)
(Rice

_

招待講演：Barbara Chapman (Houston
大学）_

パネル：HPF, MPI,
OpenMPのインプリメンター、ユーザの第一人者が集まり、将来の並列プログラミングインタフェースについて討論

http://tokyo.
rist
.or.
jp/jahpf/hug2000/
ja/index.html
2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

HPFの現状（HUG2000から）_ 欧米：— 一部の研究者で使われるのみ— OpenMP（共有メモリ並列化I/F）の
CCNUMA マシン用拡張としてHPF機能を取り込
む動き
_ 日本：

— まだまだHPFに対する期待は大きい¥ VPPユーザ、潜在的地球ユーザにHPFへの期待大— HPFを用いた並列化成功例の蓄積が少しずつではあるが進行2001年3月22日

HPF言語と今後のプログラミングインタフェース¥ 名大荻野先生：プラズマMHD コードで！

HPF/SX V2 の開発状況_ 2000
年3月より製品化_ 2000
年6月に機能/性能強化— アドレス変換高速化— 重要ベクトル化指示行認識— 自動並列化機能拡充— 通信最適化強化— 配列の動的再配置性能強化_ Almost

ready to use forAPsregular!!!

2001年3月22日

HPF言語と今後のプログラミングインタフェースCurrent Status of HPF/SXApproved Extensions
Current and
Next Versions¥ Mapped Pointer¥ Mapped Derived Type Component Features of HPF/SX V2¥HALO¥Vectorization Direct¥Automatic Paralleliz¥INDIRECTHPF2.0(core)¥ON節¥GEN_BLOCK¥SHADOW¥Remapping¥LOCAL & REFLECT¥Reduction Kind

¥ Task Parallelism¥ RANGE¥ etc.

2001年3月22日¥ Comm. Schedule Reuse¥ Asynchronous Comm.
¥ etc.
HPF言語と今後のプログラミングインタフェー
ス

HPF/JAON節の指定による効果
Target:tomcatv (4097x4097) ofs benchmarks
APR!HPF$ independent
DO 250 i = i1p , i2m!HPF$ on home( aa(:,i) ) begin
ip = i + 1
im = i - 1
m = 0
DO 310 j = j1p , j2m...
xx = x(j,i+1) - x(j,i-1)...
aa(m,i) = -b
dd(m,i) = b + b + a * rel
pxx = x(j,i+1) - 2. * x(j,i) + x(j,i-1)
qxx = y(j,i+1) - 2. * y(j,i) + y(j,i-1)...
rx(m,i) = a * pxx + b * pyy - c * pxy + xx * qi + xy * qjry(m,i) = a * qxx + b * qyy - c * qxy + yx * qi + yy * qj
310
CONTINUE!HPF$ end on
250 CONTINUE
2001年3月22日
HPF言語と今後のプログラミングインタフェースSpeedup (ORIGINAL/1=1)

ON 節の指定による効果 (2)12The ON directives im
the performance at a30%.

24.8GFLOPS
24.8

ORIGINAL
ON

10
8

14.8

Evaluation environment6¥ NEC SX-5

8.4

4
2

¥ HPF/SX V2 Rev.1.1.1

4.3

0
0

2

4

6

8

10

12

Number of Processors
2001年3月22日

14

16¥ default compiler
options

HPF言語と今後のプログラミングインタフェー
スLOCAL/REFLECT指定の効果
Target: a benchmark program of the Red-Black S
iterating 100 times four five po
computations for a 4097x4097 arra
DO K=1, 100!HPFJ reflect a!HPF$ independent
DO J=1, (N-1)/2!HPF$ on home( a(:,2*J+1) ), local
DO I=1, (N-1)/2
A(2*I+1, 2*J+1) = (W/4)*(A(2*I, 2*J+1)+A(2*I+2, 2*J+1) +1
A(2*I+1, 2*J) +A(2*I+1, 2*J+2)) + A(2*I+1, 2*J+1)*(1-W)
END DOENDDO...
END DO2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス

指定の効果 (2)LOCAL/REFLECT指Speedup (ORIGINAL/1=1)

16
ORIGINAL
LOCAL+REFLECT

14

5.3GFLOPS

12
4.3

10
3.0

8
6

1.9

4
2

¥LOCAL andREFLECT
reduce the number
comms. by half.
¥LOCAL+REFLECT is
1.5-2 times faster
ORIGNAL.

1.0

0
0

2

2001年3月22日

4

6
8
10
12
Number of Processors

14

16

HPF言語と今後のプログラミングインタフェース

Vectorization
指示行認識
V2は下記の指示行を認識し、変形後の対応するループに指示を挿入_ HPF/SX— shortloop:
asserts that loop length does not exceed the vector r— vector:
instructs the loop is to be vectorized.

— novector:
instructs the loop is not to be vectorized.

— select(vector|concur):
instructs whether the loop is to be vectorized or SMP— nodep:
asserts no data dependence.
2001年3月22日

HPF言語と今後のプログラミングインタフェー
スベクトル化指示行挿入の効果
Target:gmo of HPFBench...
!hpf$ independent
do iv=1,nvus!CDIR NODEP
do j=1,lvec
trout(ksamp(j,iv),iv) = trout(ksamp(j,iv),iv)& + wt(j + jbeg,iv)*(trin(isamp(j,iv),iv)&+ del(j,iv)*(trin(isamp(j,iv) + 1,iv) - trin(isamp(j,iv),iv)))
enddo
enddo
...

2001年3月22日

HPF言語と今後のプログラミングインタフェース

Evaluation ofvectorization directive
vector op. ratio

93%

Speedup (ORIGINAL/1=1)25680MFLOPSORIGINAL
NODEP

20vector op. ratio

15

78%

370

10

The vectorization
directives improve
the performance at
about 40%.

200
100

5
50

0
0

2

4

6

8

10

12

14

16

Number of Processors
2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス自動並列化の効果
Target: shallow (4097x4097)
s benchmarksof APR
22.9GFLOPS

16
14

With only mapping
directives and noothers, good scalais achieved.

12
10

16.0

8
6

10.4

4

Lines: 658
Directive Lines: 16 (

6.2

2

2.9

0
0

2

2001年3月22日

4

6
8
10
12
Number of Processors

14

16

HPF言語と今後のプログラミングインタフェース

Acceleration Ratio

APR Benchmark Results
APR Benchmark

baro
grid
jacx̲90
ora
pde1
scalgamshallowswm256
tomcatv
trans1
x42

10
8
6
4
2
0
Original

1

2

4

8

Number of Processors
2001年3月22日

HPF言語と今後のプログラミングインタフェース

HPF Benchmark Result #1
HPF Bench #1

Speed Up

12

conj-grad
gauss-jordan
gmomatrix-vectormdn-body (cshift-sym)
qcd-kernel
qr

10
8
6
4
2
0
Original 12
48
Number of Processors

2001年3月22日

HPF言語と今後のプログラミングインタフェース

HPF Benchmark Result #2

Speed up

HPF Benchmark #2
boson
ellip-2dfft (1D)
fft (2D)
fft (3D)
ks-spectra
qmc
wave-1d

7.000
6.000
5.000
4.000
3.000
2.000
1.000
0.000
1.000

2.000

4.000

8.000

Number of Processors
2001年3月22日

HPF言語と今後のプログラミングインタフェース

User Applications

Speed upUser Applications
CFD(9.00)(8.00)(7.00)(6.00)(5.00)(4.00)(3.00)(2.00)(1.00)(0.00)

NJR(AGCM)
FEM kernel
気象
プラズマPIC
impact3D(m-node)1

2001年3月22日

2
4
Number of Processors

8

HPF言語と今後のプログラミングインタフェースHPF/SX V2強化予定_

現在の機能拡張 (今年度末実現予定)— 非定型通信の高速化¥ Indirect data distribution¥ Communication schedule reuse¥ HALO (Irregular shadow)— 共有メモリ自動並列化指示行の認識_

来年度の機能拡張予定— 並列 I/O— タスク並列化 (e.g.
大気モデルと海洋モデルの結合)— 非同期通信— 自動負荷分散機能（ブロックサイズ自動調整）

2001年3月22日

HPF言語と今後のプログラミングインタフェース今後の並列化インタフェース
SMP クラスタ：ピーク性能

大
計
算
処
理
の
並
列
性
指
定

OpenMP
CC-NUMA マシン

共有メモリ
自動並列化

小

HPF

SMP クラスタ：手軽に利用

小SMP
2001年3月22日

MPI

データ並列性の指定
分散メモリ

HPF言語と今後のプログラミングインタフェース

大SMPクラスタの利用_

プログラミングモデル— ノード間→HPF/MPI ノード内→ 共有メモリ自動並列化— ノード間→HPF/MPI ノード内→（ 共有メモリOpenMP）— ノード間＋ノード内 →HPF/MPI

MS

MS

ﾍﾞｸﾄﾙ ﾍﾞｸﾄﾙ...ﾍﾞｸﾄﾙ

ﾍﾞｸﾄﾙ ﾍﾞｸﾄﾙ ...
ﾍﾞｸﾄﾙ

ノード内共有メモリ... ノード内共有メモリ

ノード間分散メモリ_

階層モデル：— 2段階の並列化制御オーバヘッド— ノード内ローカリティー抽出可能

_

×
○

単一モデル
— 1段階並列化制御オーバヘッド、並列化楽○HPF言語と今後のプログラミングインタフェー
ス— 多重ループの並列化、ローカリティー抽出×2001年3月22日

階層モデルの成功には、
ノード内自動並列化の有効性が鍵DSM用 OpenMPによる並列化_

Houston大学Barbara ChapmanのHUG2000発表— http://www.
tokyo.rist.or.
jp/jahpf/hug2000/presen/Chapman.
pdf_

分散共有メモリ（DSM）用の 並列化には、主要配列のデータへのマッピング指定が重要— SGI/Origin、Compaq並列システム— First Touch
によるデータマッピング指定— 明示的データマッピング指定（HPFライク）_

SPMDスタイルのコーディングをしないと性能が出ないケースがある

2001年3月22日

HPF言語と今後のプログラミングインタフェース

CC‐NUMA マシン向け並列化I/F_

CC-NUMA(Cache-Coherent Non-Uniform
Memory Access)
マシン
PE0

PE1

低速

高速
DM0

u

u

PEn

DM1

DMn

データアクセスローカリティーを抽出しないと性能が劣化
ただし、データのマッピングはページ単位

1次元目でのブロック分割はメモリの連続性を放棄し2001ないと無理
年3月22日HPF言語と今後のプログラミングインタフェー
uスOpenMP on CC-NUMAs
OpenMPには、CC‐ NUMA 対応機能はない。
_ ベンダ（特にSGI,Compaq）はデータ配置をユー
ザがコントロールするための独自拡張を個別にサポート_— first touch allocation policy— automatic page migration— page-based mappings— HPF-style element mappings— association of work with location of data_!$OMP DO!$OMP DODO I=1,N
DO I=1,N
A(I)=0.0D0
A(I)を用いた計算処理
ENDDO
ENDDO

REAL A(N)touch policy:
First

宣言部：データ未配置
2001年3月22日

初期化部：データ配置

計算処理とデータ配置の整合性

HPF言語と今後のプログラミングインタフェース

CC-NUMA マシン用I/Fの課題___

現状では、Jacobiのようなシンプルなコードでも、SPMD コーディングスタイルへの書き換えがないと、スケーラブルな性能向上がむずかしい。
HPF技術とOpenMP技術の融合による、データ
アクセスローカリティーのコンパイラによる自動抽出が必要
先日のSC2000にて、HPFFメンバが集まり、OpenMPにHPF技術（部分仕様）を提案することに

2001年3月22日— BarbaraHPF言語と今後のプログラミングインタフェー
Chapman
とりまとめ（Scalable Cluster）Foス

まとめ_ HPFを日本発の並列化言語として発展・普及させたい— このためのインフラは着々と整いつつある！
_ 鍵は、実用コードの並列化でどこまで成果を蓄積できるか_ HPFを用いた並列プログラミングノウ

ハウの蓄積も重要
2001年3月22日

HPF言語と今後のプログラミングインタフェース

今後の課題_ HPFの適用範囲の拡大— 非定型処理での実用性の実証— メモリへのデータ配置の連続性を仮定したプログラムの扱い_ OpenMPへのHPFデータマッピングの取り込み— CC-NUMAマシンへのデータ配置制御_ HPF普及促進活動— HPF推進委員会(仮称)2001年3月22日

HPF言語と今後のプログラミングインタフェー
ス