並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc....

34
21 SofTek Systems, Inc. 並列化の基礎(言葉の意味) 共有メモリ型システム(SMP)での並列 プロセスを使用した並列化 スレッドとは?スレッドを使用した並列化 分散メモリ型システムでの並列 メッセージパッシングによる並列化 並列アーキテクチャ関連の言葉を押さえよう 並列実行には、複数のタスク実行主体が必要

Transcript of 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc....

Page 1: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

21SofTek Systems, Inc.

並列化の基礎(言葉の意味)

• 共有メモリ型システム(SMP)での並列

• プロセスを使用した並列化

• スレッドとは?スレッドを使用した並列化

• 分散メモリ型システムでの並列

• メッセージパッシングによる並列化

並列アーキテクチャ関連の言葉を押さえよう

並列実行には、複数のタスク実行主体が必要

Page 2: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

22SofTek Systems, Inc.

プロセスを使用した並列処理

ProgramText

DataAreaStackArea

ProcessTable

DataAreaStackArea

ProcessTable

コピー

コピー

共有

親プロセス 子プロセス

Process FORK

並列処理を行うためには複数のプロセスの生成必要プロセスとは、プログラム実行のための能動実態

しかし、プロセスレベルの並列処理はオーバヘッド多し

スレッドの活用

アドレス空間のコピーは時間がかかる

メモリ空間

Page 3: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

23SofTek Systems, Inc.

スレッドの生成と並列処理

ProgramText

DataAreaStackArea

ProcessTable

StackArea

共有

マスタ スレッド

Thread生成

共有

StackArea

プロセス

軽量プロセス = 生成時のコストが小さい               (オーバヘッド)

Stack areaは、並列時

独自に使用Dynamicなallocation

メモリ空間

複数のスレッドを生成し並列処理を行う

システムコール

Page 4: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

24SofTek Systems, Inc.

スレッドとは

プロセス=(メモリ空間+資源情報)+プログラム実行主体

人間  = 肉体(物理的な体)  +意志(思考形態)

プロセスから実行主体(スレッド)を抽出しテキスト、データ等は共有する

ピアノ 人左手

右手

スレッド1

スレッド2

Page 5: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

25SofTek Systems, Inc.

スレッドの実行形態と並列実行

Process Thread

PP PP PP PP

Hardware (SMP)

Operating System

ProcessorPP

ApplicationsSingle process Multi thread

物理CPU数以上のスレッドの存在OK

渡り歩く

並列実行ライブラリスレッド対応

Page 6: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

26SofTek Systems, Inc.

メッセージパッシングとは

ProcessProcessorPP

Single process

Hardware

OS

PP

Hardware

OS

PP

Hardware

OS

PP

メッセージの交換

通信路

同じ並列プログラム

独立のハードウェア

Applicationsデータの送受、同期処理はプログラム明示

MPI

Page 7: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

27SofTek Systems, Inc.

スレッド並列+MPI (Hybrid)

ProcessProcessorPP

Single processMulti thread

Hardware

OS

PP

Hardware

OS

PP

Hardware

OS

PP

メッセージの交換

通信路

同じ並列プログラム

ApplicationsMPI実装

PP PP PPSMPCluster

Thread

スレッド並列message Passing

Page 8: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

28SofTek Systems, Inc.

並列化についての話

• 並列プログラムはどのように動くのか?

• 並列プログラミングのモデル (SPMD)• どのように並列化するのか?

• 並列化のための言語と性能• OpenMP、HPF、MPI

• 並列の効果、Scalabilityの考え方

• どんなものが並列化可能なのか?

• 並列プログラミング環境

Page 9: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

29SofTek Systems, Inc.

並列動作の形態

PP PP PPPP PP PP PP

MemoryMemory Memory

Thread 生成

同期処理

逐次処理

逐次処理

並列可能冗長実行処理

時間

同期

割当てたデータ部のみ処理必要であればデータ交換

分散メモリ型共有メモリ型単体処理型

スレッド Message Passing

ProcessProcess Process ProcessProcess

ProcessorPP

Page 10: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

30SofTek Systems, Inc.

SPMD =Single Program Multi Data

並列プログラミングモデル

I=3,4の計算

I=1,2の計算I=1,2

の計算

node0

I=3,4の計算

node1

I=5,6の計算

node2

if Node0 if Node1 if Node2

同一プログラムモジュール

Load LoadLoad

プログラムの条件文で扱うデータを制御

共有メモリ型&分散メモリ型

Page 11: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

31SofTek Systems, Inc.

SPMDによる並列モジュール構築

スレッド並列でもメッセージパッシングでも基本はSPMD

• 共有メモリ型システム• スレッドを使用した並列化モジュール• コンパイラシステムが自動的にSPMD型 並列モジュールを作成可能

• 分散メモリ型システム• MPI (Message Passing Interface)ライブラリ を用いたSPMD型プログラミング必要

Page 12: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

32SofTek Systems, Inc.

どのように並列化するの?

• DO Loopレベルを分割並列(細粒度並列性)

• コンパイラによる自動並列 on SMP– Directive/Pragmaによる並列指示

– OpenMP directiveによる並列指示

• HPF (High Performance Fortran)による並列化

• コンパイラによる自動並列可能

• 細かな並列指示=directive用意

• MPI (API)を用いた並列化

• 全て、人がプログラミング(同期処理等も自分で考える)

Page 13: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

33SofTek Systems, Inc.

プログラム言語とその対応システム

分散メモリ型システム

共有メモリ型システム

OpenMP

HPF

MPI粗粒度並列性(要並列計算量)(計算領域分割)

細粒度並列性(DO Loopレベル)

Page 14: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

34SofTek Systems, Inc.

OpenMP = SMP Parallel Fortran/C/C++

Fork/Join Model

!OMP$ PARALLEL [clauses]< redundant work >

!OMP$ DO [clauses]DO I = 1, N

< parallel work >!$OMP ATOMIC

X(IDX) = X(IDX)+1ENDDO

!$OMP END DO< redundant work >

!$OMP END PARALLEL

!OMP$ PARALLEL [clauses]< redundant work >

!OMP$ DO [clauses]DO I = 1, N

< parallel work >!$OMP ATOMIC

X(IDX) = X(IDX)+1ENDDO

!$OMP END DO< redundant work >

!$OMP END PARALLEL

Parallel Regions/Constructs

omp_get_num_threads()omp_set_num_threads()omp_get_thread_num()omp_in_parallel()omp_set_dynamic()

omp_get_num_threads()omp_set_num_threads()omp_get_thread_num()omp_in_parallel()omp_set_dynamic()

Query Functions

F77 F95

C++

F90

C

1) 自動並列2) directiveを使って細かな並列

Page 15: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

35SofTek Systems, Inc.

自動並列処理による性能向上-2CPU on SMP -

Pentium Pro : 2CPUs

出展: Kuck & Associates, Inc. http://www.KAI.com/のページより

アプリケーションの

計算特性に依存する

 ・メモリアクセス量

 ・多重演算の度合い

Memory access軽い

Page 16: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

36SofTek Systems, Inc.

自動並列処理による性能向上- 4CPU on SMP -

Pentium Pro : 4CPUs

出展: Kuck & Associates, Inc. http://www.KAI.com/のページより

分割処理量の均衡 ・Load balancing

バランス崩れると性能飽和

Page 17: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

37SofTek Systems, Inc.

LS-DYNA under OpenMP

0

0.5

1

1.5

2

1 2

Processors

Spee

dup

• LSDYNA = Over 750,000 lines of Fortran and C source code• 1.86X Speedup on 2 processors• Parallelized using PGI Fortran and OpenMP

5458 Elements25000 Degrees of Freedom1 CPU Time = 4446 Seconds2 CPU Time = 2393 SecondsDual 450Mhz PII Xeon

Page 18: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

38SofTek Systems, Inc.

HPF = Standard Parallel Fortran

Data Distribution

!HPF$ INDEPENDENTDO I = 1, N

A(IDX(I)) = B(I)ENDDO

!HPF$ INDEPENDENTDO I = 1, N

A(IDX(I)) = B(I)ENDDO

Parallel Constructs

HPF

SMP MPI RPM

1) 自動並列2) directiveを使って細かな並列

各種通信系

配列の陽的並列分割

自動生成

配列分割 処理分割

共有メモリ型分散メモリ型

両方対応

Page 19: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

39SofTek Systems, Inc.

MPI = Message Passing Fortran/C/C++

SPMD Model

call MPI_INIT(ierr)call MPI_COMM_RANK(…)call MPI_COMM_SIZE(…)if (myid .eq. 0) then

<get input>endifcall MPI_BCAST(…)...do I = myid+1, n, numprocs

x = h * (dble(I) -0.5d0)sum = sum +f(x)

enddomypi = h * sumcall MPI_REDUCE(…)…

call MPI_INIT(ierr)call MPI_COMM_RANK(…)call MPI_COMM_SIZE(…)if (myid .eq. 0) then

<get input>endifcall MPI_BCAST(…)...do I = myid+1, n, numprocs

x = h * (dble(I) -0.5d0)sum = sum +f(x)

enddomypi = h * sumcall MPI_REDUCE(…)…

Explicit messaging

mpi_send()mpi_recv()

mpi_allgather()mpi_barrier()

mpi_send()mpi_recv()

mpi_allgather()mpi_barrier()

Point-to-point and collectivecommunications

F77 F95

C++

F90

C

自分のノード番号に従った部分の計算を行う

Page 20: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

40SofTek Systems, Inc.

MPI-粗粒度計算の例

解析領域

CPU 1

CPU 2 CPU 3

CPU 0

逐次

処理

CPU 0CPU 1

CPU 2CPU 3

データの交換

並列処理

各CPUに割り当てる計算領域を分割

領域境界でのデータの交換必要

領域分割法

Page 21: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

41SofTek Systems, Inc.

並列の効果(どの位?)

100806040200(分)

並列 4CPU

並列 3CPU

並列 2CPU

並列 1CPU

単体実行(1CPU)

20 20 2

20 20 2

20 20 2

20 20 2

20 80

並列オーバヘッドもあるよ

並列による性能向上分

並列化可能並列化不可

並列化率

高々100/40=2.5倍

並列ジョブ

ロードバランス良好の時

Page 22: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

42SofTek Systems, Inc.

並列の効果 (Scalability)アムダールの法則=並列化率P%の時の効果は          = 100 / (100-P) : 理想値

並列化効率

並列化率 2 4 6 8 12 1660.0% 1.43 1.82 2.00 2.11 2.22 2.2970.0% 1.54 2.11 2.40 2.58 2.79 2.9180.0% 1.67 2.50 3.00 3.33 3.75 4.0085.0% 1.74 2.76 3.43 3.90 4.53 4.9290.0% 1.82 3.08 4.00 4.71 5.71 6.4091.0% 1.83 3.15 4.14 4.91 6.03 6.8192.0% 1.85 3.23 4.29 5.13 6.38 7.2793.0% 1.87 3.31 4.44 5.37 6.78 7.8094.0% 1.89 3.39 4.62 5.63 7.23 8.4295.0% 1.90 3.48 4.80 5.93 7.74 9.1496.0% 1.92 3.57 5.00 6.25 8.33 10.0097.0% 1.94 3.67 5.22 6.61 9.02 11.0398.0% 1.96 3.77 5.45 7.02 9.84 12.3199.0% 1.98 3.88 5.71 7.48 10.81 13.9199.5% 1.99 3.94 5.85 7.73 11.37 14.88

Number of CPU

Page 23: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

43SofTek Systems, Inc.

並列手法による並列効果の違い並列手法(共有メモリ/分散メモリ)による

並列効果の違い

0

5

10

15

20

25

0 4 8 12 16 20 24 28 32

並列CPU数

並列

効果

(Scala

bili

ty) Coarse Grained Parallel

(分散メモリ対応)

Fine Grained Parallel(共有メモリ対応)

現POMベース

現MOM/Seismicベース

MOM-3,PIPESeismicベース

MPI

SMP

Page 24: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

44SofTek Systems, Inc.

どんなものが並列化可能か(1)

• 細粒度並列(SMP:自動並列化含む)

• 基本的にDO Loopが対象

• 多重DO Loopも対象

• ループ反復間に変数の依存関係がない

• I/O処理、配列の動的割付等を行っていない

• ループの反復中にループを抜け出さない

• 依存関係のあるサブルーチンコールを含んでいないこと

• 間接メモリ参照がない、曖昧なポインタがない

Page 25: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

45SofTek Systems, Inc.

どんなものが並列化可能か(2)

• 並列効果の高いアプリケーションソルバー• 差分法 : レッド・ブラックSOR法、パイプライン法

: ICCG法はパイプライン法へ

• モンテカルロ法、分子動力学等の粒子を扱うもの

• ニューロンの計算: 行列・ベクトル計算が主体

• 境界要素法: 密行列の連立一次方程式に帰着

• 並列効果が低いソルバー

• 有限要素法(陰解法):粗行列、計算量少ない

   : 領域分割法へ変換

Page 26: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

46SofTek Systems, Inc.

並列最適化における注意点

• 並列化を行う前に単体性能の向上重要

• 並列化率が高くなければ、並列化効果、scalabilityは期待できない。

• 単体性能の最適化では、それだけで数倍の性能向上も期待できる

• アプリケーションの特性で並列化手法が変わる。適切な手法をまず考える。

Page 27: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

47SofTek Systems, Inc.

並列プログラム開発環境での問題

• 見たいものが見えない

• 並列デバッグ時の問題箇所の特定が難しい

• MPI開発では、演算・通信の状況が見えない

並列プログラミング環境必須

SunPrism

業界標準のデバッガ&ツール

マルチプロセスデバッガ

: TotalViewMPI プログラムの性能解析

: VAMPIR

Page 28: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

48SofTek Systems, Inc.

並列デバッガ TotalView

• 業界標準並列デバッガ

• 操作性に優れたGUIにより効率よく使用できる

• マウスのボタン操作で主要なコマンドを実行可能

• 多様な分散、並列プログラミングモデルをサポート

• 巨大で、複雑なプログラムもデバッグ可能

• 様々な言語、プラットフォーム、アーキテクチャで利用

可能  (MPIのデバッキング可能)

Page 29: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

49SofTek Systems, Inc.

TotalView の実行状況

Processウィンドウ

Rootウィンドウ

Data ウィンドウ

右クリック

ダイブによりプロセスのダイブによりプロセスの内部を表示可能内部を表示可能

Page 30: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

50SofTek Systems, Inc.

TotalView データの可視化

• 分散配列の可視化 Visualize array distribution

Page 31: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

51SofTek Systems, Inc.

VAMPIRの特徴

• MPI (及びアプリケーションイベント)のオフライ

ントレース解析• VAMPIRtrace ツールによるトレース生成

• 扱いやすいユーザインタフェース

• スケーラブル(時間とプロセッサ空間)

• 秀逸なズーミング、フィルタリング機能

• 高性能グラフィックス

• MPIとアプリケーションイベントの表示、解析:• MPI ルーチン

• 1対1 、集団通信

Page 32: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

52SofTek Systems, Inc.

VAMPIR GUI (1)MPIの動作挙動が見える

Page 33: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

53SofTek Systems, Inc.

VAMPIR GUI (2)MPICH(p4)による通信状況のスナップショット

Page 34: 並列化の基礎(言葉の意味) - 株式会社ソフテック … SofTek Systems, Inc. スレッドの生成と並列処理 Program Text Data Area Stack Area Process Table

54SofTek Systems, Inc.

VAMPIR GUI (3)

MPICH

MPI/GAMMA

通信のサマリチャート(二つの結果の同定例)