• 検索結果がありません。

ソフトウエア自動チューニング

N/A
N/A
Protected

Academic year: 2021

シェア "ソフトウエア自動チューニング"

Copied!
65
0
0

読み込み中.... (全文を見る)

全文

(1)

発展的話題:

ソフトウエア自動チューニング

全学ゼミ:スパコンプログラミング研究ゼミ 1

東京大学情報基盤センター 准教授 片桐孝洋

2015年9月29日(火)16:50-18:35

(2)

講義日程(全学ゼミ)

9月15日: ガイダンス

1.

9月22日 ※休日の講義日

並列数値処理の基本演算(座学)

2.

9月29日

非同期通信、ソフトウェア自動チューニ ング

3.

10月6日:スパコン利用開始

ログイン作業、テストプログラム実行

4.

10月13日

高性能演算技法1

(ループアンローリング)

5.

10月20日

高性能演算技法2

(キャッシュブロック化)

全学ゼミ:スパコンプログラミング研究ゼミ 2

5. 10月27日

行列

-

ベクトル積の並列化

6. 11月3日 ※休日の講義日

 べき乗法の並列化

7.

11 月 10 日

行列-行列積の並列化(1)

8.

12月1日 ※日程指定日

行列-行列積の並列化(2)

9.

12月8日

LU分解法(1)

10.

12月15日

LU分解法(2)

レポートおよびコンテスト課題

(締切:

2016112 日(火) 24 時)厳守

(3)

講義の流れ

1. 背景

2. ソフトウエア自動チューニングとは

3. FIBER 方式

4. 自動チューニング記述言語 ABCLibScript

5. ppOpen-HPC プロジェクトと ppOpen-AT

6. レポート課題

全学ゼミ:スパコンプログラミング研究ゼミ 3

(4)

背景

4 全学ゼミ:スパコンプログラミング研究ゼミ

(5)

「性能可搬性」の実現

5

A

社製 計算機 コンパイラ

A

アプリケーション

I

B

社製 計算機 コンパイラ

B

アプリケーション

I

C

社製 計算機 コンパイラ

C

アプリケーション

I

自動チューニング (AT) 機構

 オリジナルのレガシーコード

 アルゴリズム選択

エクサスケールに向けての 多様な計算機環境

NVIDIA Kepler Xeon Phi

60 物理コア

240 論理スレッド!

 複数計算機で有効な最適化が提供できるようにする 最適化に関するパラダイム ( HPCI 技術ロードマップ白書、

数値計算ライブラリのための自動チューニング、 2012 年 3 月)

同一プログラムで計算機が変わっても高性能を維持

AT 機構の機能

 コード生成機能

 探索や学習による パラメタサーチ

 性能モニタ

 性能データベース

全学ゼミ:スパコンプログラミング研究ゼミ

(6)

計算機環境の変化

 マルチコア・アーキテクチャの浸透

 非均質メモリアクセス(cc NUMA )

 多階層化されたキャッシュ構造

 チップ内のコア数の増大

 並列実行モデルの変化

 ピュア MPI VS. ハイブリッド MPI

 コンパイラ最適化では手に負えない

 手動チューニングはコスト高

 コスト削減のため、実用的観点から、

性能自動チューニング技術へ期待

全学ゼミ:スパコンプログラミング研究ゼミ 6

(7)

数値アプリケーション開発における コスト高の問題

7

 なぜ、コストが高いか

1.

探索空間爆発の問題

ソフトウエア開発コストが爆発的増加

2.

チューニングは科学でなく、職人芸

職人の賃金は高い&引き継ぎが難しい 1. 探索空間爆発の問題

 多数のアルゴリズムパラメタ

前処理方式、やり直し間隔、ブロック幅、 …

 複雑化された計算機アーキテクチャ

マルチコア、非対称メモリアクセス、 … 2. 賃金コスト増加の問題

複雑な高性能を達成するための実装

職人のみができる

コンパイラがうまく働けば良いが、複雑化した計算機アーキテクチャ上

ではより困難に ….

全学ゼミ:スパコンプログラミング研究ゼミ

(8)

自動チューニング技術要求

 どのようなAT機能が必要か?

コンパイラでできそうなこと

アンローリング

キャッシュサイズ調整

コンパイラでできないこと

数値計算アルゴリズム選択

数値計算精度を保証した上でのアルゴリズム選択

実行時ユーザ知識情報を活用した最適化

ミドルウエアレベルの最適化

MPI 実装方式選択

...など多数の要求

 自動チューニングのタイミング

インストール時から<実行時>へ

ユーザプログラムにおいて、実行時の 知識抽出と利用

全学ゼミ:スパコンプログラミング研究ゼミ 8

(9)

実例:実行時アルゴリズム選択

(HITACHI SR8000/MPP)

0 5000 10000 15000 20000 25000 30000 35000 40000

CG-S(1) CG-S(2) MG-S HG-S IRCG-S NotOrt.

8 16 32 64 128

フランク行列 から三重対角化 した行列:

逆反復法中の 再直交化時間

実行時間 [ 秒 ]

プロセッサ数

1.00E-13 1.00E-11 1.00E-09 1.00E-07 1.00E-05 1.00E-03 1.00E-01 1.00E+01

8 16 32 64 128

精度 [Frobenius]

プロセッサ数

CG-S(1) CG-S(2) MG-S HG-S IR-CGS NotOrt.

ユーザからの要求精度

7 倍~ 20 倍 の高速化

MG-S( 修正 G-S) : 多くの場合の

デフォルト設定

9 全学ゼミ:スパコンプログラミング研

究ゼミ

(10)

実例 : 先進アーキテクチャによる不安定性

10

 コンパイラ任せは遅い

 常時<特定の実装>が 速くない

10 倍ぐらい実行時間がぶれる

(実行時間の<不安定性>)

 場合により 100 倍も遅い!

T ime in Seconds

アンローリングなし ( コンパイラ任せ )

HITACHI SR11000 / J2

T ime in Seconds HITACHI HA8000(T2K Open

Super)

アンローリングなし ( コンパイラ任せ )

• 密行列の行列-行列積

BLAS を用いていない単純コード

•3重ループ (i,j,k) ,アンローリング1段~4段

次元

Nに関し

4*4*4=64 種類 の実装

•1

から

2048

次元まで

1

刻みのデータ

.

•コンパイラ HITACHI Optimized Fortran90.

オプション

: -Oss

• 自動並列化(ノード内)

•計算機構成:

•HITACHI SR11000/J2

•HA8000 (T2K Open Supercomputer (Todai Combined Cluster))

•Installed in Information Technology Center, The University of Tokyo.

•16コア/ノード.

全学ゼミ:スパコンプログラミング研究ゼミ

(11)

実例:超並列アルゴリズムの構築と適応的選択

( 日立 SR2201 、 Householder 三重対角化)

0.01 0.1 1 10 100 1000 10000

100 200 400 800 1000 2000 4000 8000

ScaLAPACK Our

行列サイズ

実行時間 [ 秒 ] 4PE の場合

0.1 1 10 100 1000

100 200 400 800 1000 2000 4000 8000

ScaLAPACK Our

行列サイズ

実行時間 [ 秒 ] 64PE の場合

0.1 1 10 100 1000

200 400 800 1000 2000 4000 8000 10000

ScaLAPACK Our

行列サイズ

実行時間 [ 秒 ] 128PE の場合

1 10 100 1000

1000 2000 4000 8000 10000 20000

ScaLAPACK Our

行列サイズ

実行時間 [ 秒 ] 512PE の場合

5.7 倍 4.6 倍

5.4 倍 3.6 倍

81 秒 325 秒

従来アルゴリズム(ライブラリ)は 超並列環境( 10 万並列)を指向した

アルゴリズムになっていない

全学ゼミ:スパコンプログラミング研 11 究ゼミ

(12)

ソフトウェア

自動チューニングとは

12 全学ゼミ:スパコンプログラミング研究ゼミ

(13)

自動チューニング機構とは

13

• 計算機アーキテクチャ

• 計算機システム

• プログラム

• アルゴリズム

性能調整つまみ

(性能パラメタ)

自動チューニング機構

調整機構

• 最適化

• パラメタ探索

• 学習/自己適応 性能モニタ

機構 つまみ

自動生成 機構

•プログラム

•アルゴリズム

性能データベース

全学ゼミ:スパコンプログラミング研究ゼミ

(14)

自動チューニング技術の鳥瞰図

計算科学・

数理科学

コンピュータ サイエンス

• 前処理・リオーダリング

•実行時最適化 ( オンライン

アルゴリズム )

• 管理ポリシ設定

(オートノミック)

• 低電力化

• 組み込み系

•GRID

•データベース

•低電力数値計算

•自動チューニング 記述言語

( ABCLibScript )

• 並列・演算 実装方式選択

• 数値

アルゴリズム 選択

• 精度保障・安定化

• 実験計画法

• 統計手法

• モニタ

•コンパイラ最適化

 自動並列化

•GPU

•超並列アルゴリズム

• 算法 自動 導出

• MPI・スレッド

• キャッシュ

• データ分散

• 行列格納形式

14 全学ゼミ:スパコンプログラミング研究ゼミ

(15)

自動チューニング研究の分類( ~2004 )

性能パラメタ 定式化 静的チューニング

1997 PHiPAC(UCB) BLASの自動チューニング

1998

ATLAS(U.TennesseeBLASの自動チューニング

1999 FFTW(MIT)

FFTの自動チューニング

実行起動前時

(ユーザ知識 によるパラメタの

指定後)

インストール時

動的(実行時)チューニング 数値計算

ライブラリ

計算機システム ミドルウェア

1999

Active Harmony

(U. Maryland)

コンピュータ資源 パラメタの動的設定

1998

Autopilot(U Illinois) コンピュータ資源 パラメタの動的設定 1998(東大)

疎行列 反復解法 ライブラリ の自動 チューニング 1999

直野ら(日立)

による性能 パラメタ分類

2001 SIMPLE(日立)

単一メモリインタフェース による数値計算ライブラリ

1999 ILIBU. Tokyo

自動チューニング機能付き数値計算ライブラリ

2004 ABCLibScript

:自動チューニング記述用言語

2004 ABCLib(電通大)

FIBERに基づく自動チューニング機能付き数値計算ライブラリ

2003

SANS(U. Tennessee)

ライブラリパラメタの 自己設定

融合

2002

FIBER3 つのタイミングによる自動チューニングフレームワーク

全学ゼミ:スパコンプログラミング研究ゼミ 15

(16)

自動チューニングソフトウエア工学 達成のために(1/2)

 チューニング方法論の確立

チューニングする対象

ソフトウエア単位、関数単位、ループ単位、中間言語・機械語単位

チューニングするタイミング

インストール時、実行時、その他

チューニング作業の工程定義

1.

計算機アーキテクチャ性能の検討

2.

システムソフトウエア性能の検討

3.

コーディング手法の検討

4.

コーディング作業

5.

実測

6.

実測性能の解析・検証

7.

1 などに戻る

全学ゼミ:スパコンプログラミング研究ゼミ 16

(17)

自動チューニングソフトウエア工学 達成のために(2/2)

1. ソフトウエア・アーキテクチャの確立

自動チューニング機構が考慮されていること

2. チューニングのための計算機言語と言語処理系 があること

3. 「実行→測定→解析→ソース変更→実行」という チューニング作業のサイクルが、できるだけ自動化 されていること

自動チューニングツールの提供

自動解析手法(知識探索手法)の確立

データベース化のための方式の確立

全学ゼミ:スパコンプログラミング研究ゼミ 17

(18)

ソフトウェア自動チューニング のソフトウェア工学的観点

1. 仕様策定フェーズ

2. プログラミング フェーズ

!ABCLib$ install unroll (i,k) region start

!ABCLib$ name MyMatMul

!ABCLib$ varied (i,k) from 1 to 8 do i=1, n

do j=1, n do k=1, n

C( i, j ) = C( i, j ) + A( i, k ) * B( k, j ) enddo

enddo enddo

!ABCLib$ install unroll (i,k) region end

コンパイルと実行

do i=1, n do j=1, n

do k=1, n

C( i, j ) = C( i, j ) + A( i, k ) * B( k, j ) enddo

enddo enddo

do i=1, n, 2 do j=1, n

do k=1, n

C( i, j ) = C( i, j ) + A( i, k ) * B( k, j ) C( i+1, j ) = C( i+1, j ) + A( i+1, k ) * B( k, j ) enddo

enddo enddo

do i=1, n, 2 do j=1, n

Ctmp1 = C( i, j ) Ctmp2 = C( i+1, j ) do k=1, n

Btmp = B( k, j )

Ctmp1 = Ctmp1 + A( i, k ) * Btmp Ctmp2 = Ctmp2 + A( i+1, k ) * Btmp enddo

C( i, j ) = Ctmp1 C( i+1, j ) = Ctmp2 enddo

enddo

do i=1, n, 2 do j=1, n

Ctmp1 = C( i, j ) Ctmp2 = C( i+1, j ) do k=1, n, 2

Btmp1 = B( k, j ) Btmp2 = B( k+1, j )

Ctmp1 = Ctmp1 + A( i, k ) * Btmp1 + A( i, k+1) * Btmp2 Ctmp2 = Ctmp2 + A( i+1, k ) * Btmp1

+ A( i+1, k+1) * Btmp2 enddo

C( i, j )=Ctmp1 C( i+1, j )=Ctmp2 enddo

enddo

3. 最適化フェーズ

コード生成

チューニング知識 データベース

4. データベース化 とチューニング

知識探索 フェーズ

対象計算機 実行結果の解析

全学ゼミ:スパコンプログラミング研究ゼミ 18

(19)

19

構想

ミドルウエアとしての自動チューニング機構の確立

OS

通信ライブラリ( MPI )

連立一次 反復解法

固有値 計算

連立一次 直接解法

ライブラリ・インタフェース

(アルゴリズム選択機構)

HITACHI SR16000 Fujitsu FX-1 NEC SX-9 PC クラスタ

自動チューニング機構

自動モデル化機能 コード生成機能 パラメタ最適化機能 BLAS

性能パラメタ 選択情報

最適化情報 最適化コード 実装選択情報

ジョブスケジューリング

コンパイラ

全学ゼミ:スパコンプログラミング研究ゼミ

(20)

エンドユーザ

計算機 ソフトウエア

開発者

公開サーバ

自動チューニング 機能付きソフトウエア

チューニング記述用

計算機言語 ABCLibScript

可視化ツール VizABCLib でコード開発

FIBER フレームワークの概要

ダウンロード

全学ゼミ:スパコンプログラミング研究ゼミ 20

(21)

エンドユーザ 計算機

自動チューニング 機能付きソフトウエア

自動チューニングのタイミング

1.

インストール時

2.

実行起動前時

3.

実行時

1.

計算機システム性能

2.

ユーザが知る情報

3.

実行時情報

を取得し、実行しながら 自動チューニング

FIBER フレームワークにおける自動チューニング

全学ゼミ:スパコンプログラミング研究ゼミ 21

(22)

自動チューニング記述言語 ABCLIBSCRIPT

22 全学ゼミ:スパコンプログラミング研究ゼミ

(23)

ソフトウエア開発者における

FIBER方式利用のシナリオ

ソフトウエア開発者

プリプロセッサの起動 ( ABCLibCodeGen ) ABCLibScript を利用

したコード記述

ソフトウエア開発者が記述

自動チューニング処理指示

計算機環境に依存しない

ソフトウエアのリリース

自動チューニング 機構を含むソース

コードの生成

ループアンロールコード

アルゴリズム ( サブルーチン ) 選択コード

パラメタ最適化機能

パラメタ探索機能

全学ゼミ:スパコンプログラミング研究ゼミ 23

(24)

インストール時自動チューニング

エンドユーザにおける

FIBER方式利用のシナリオ (Part 1)

エンドユーザ

最適アンローリング段数の推定

最適ブロック幅の推定

オブジェクト生成

最適化されたパラメタ指定

エンドユーザの計算機環境に公開ソフトウエアをインストール

( FIBER インストール時自動チューニングが自動実行)

デバック・開発 の終了

準最適化 ソフトウエア

の利用

小さい問題サイズでの

アプリケーションデバックおよび開発

全学ゼミ:スパコンプログラミング研究ゼミ 24

(25)

実行起動前時自動チューニング

エンドユーザによる

FIBER方式利用のシナリオ (Part 2)

実行起動前自動 チューニングの実行

エンドユーザの知識を用いた パラメタの指定

(e.g., 実行する問題サイズ )

エンドユーザの知識を 利用したパラメタ指定

大規模計算 ソフトウエアの利用 十分に最適化した

実行時自動チューニング ソフトウエアの実行

ライブラリの実行

call CalcEigen(A,x,lamba,n)

実行時情報を用いた

パラメタの固定

全学ゼミ:スパコンプログラミング研究ゼミ 25

(26)

ABCLibScript 設計方針

1. 容易に自動チューニング指定できる

 数値計算処理に機能限定 :

 アンローリング指定子 ( unroll )

 変動パラメタ指定子 ( variable )

 アルゴリズム選択指定子 ( select )

2.もとのプログラムの実行を阻害しない

 ディレクティブ形式でプログラム中に記述

3.高い可読性コードを自動生成

 Fortran90 + MPI-1 のコードを自動生成

4.自動チューニングの見通しがよい

 2種の内部パラメタ( BP, PP )概念の導入

26 全学ゼミ:スパコンプログラミング研究ゼミ

(27)

プリプロセッサの処理

27

!ABCLib$ install unroll (i) region start

!ABCLib$ name MyMatMul

!ABCLib$ varied (i) from 1 to 8 do i=1, N

do j=1, N

da1 = A(i, j) do k=1, N

dc = C(k, j)

da1 = da1 + B(i, k) * dc enddo

A(i, j) = da1 enddo enddo

!ABCLib$ install unroll (i) region end

パラメタ最適化 コンポーネント

AT 領域選択 コンポーネント

AT 領域ライブラリ コンポーネント

自動 生成

パラメタの最適化

実測とそれに基づくモデル化

 ランタイム

 最適化済みパラメタ指定

 チューニング対象領域の サブルーチン・ライブラリ化

全学ゼミ:スパコンプログラミング研究ゼミ

(28)

!ABCLib$ install unroll (i) region start

!ABCLib$ name MyMatMul

!ABCLib$ varied (i) from 1 to 8

!ABCLib$ debug (pp) do i=1, N

do j=1, N

da1 = A(i, j) do k=1, N

dc = C(k, j)

da1 = da1 + B(i, k) * dc enddo

A(i, j) = da1 enddo

enddo

!ABCLib$ install unroll (i) region end

ソフトウエア開発者用ディレクティブ:

ループアンローリング指定子

 アンローリング段数:ディレクティブを用いた指定

例: 行列 - 行列積コード

28

インストール時指定 ; アンローリング指定 ;

アンローリング段数

対象領域

( チューニング 領域 )

全学ゼミ:スパコンプログラミング研究ゼミ

(29)

if (i_unroll .eq. 1) then Original Code

endif

if (i_unroll .eq. 2) then /* i is dividable by 2 */

im = N/2 i = 1 do ii=1, im

do j=1, N

da1 = A(i, j); da2 = A(i+1,j) do k=1, N

dc = C(k, j)

da1 = da1 + B(i, k) * dc; da2 = da2 + B(i+1, k) * dc; enddo A(i, j) = da1; A(i+1,j) = da2

enddo i = i + 2;

enddo

endif

ソフトウエア開発者用ディレクティブ:

ループアンローリング指定子(つづき)

プリプロセッサ起動後、以下のコードが自動生成

29

コード生成終了後 、アンローリング段数が

自動的に性能パラメタとしてシステムに

登録される

全学ゼミ:スパコンプログラミング研究ゼミ

(30)

!ABCLib$ static select region start

!ABCLib$ parameter (in CacheS, in NB, in NPrc)

!ABCLib$ select sub region start

!ABCLib$ according estimated

!ABCLib$ (2.0d0*CacheS*NB)/(3.0d0*NPrc) 対象1(アルゴリズム 1

!ABC-LIB$ select sub region end

!ABC-Lib$ select sub region start

!ABC-Lib$ according estimated

!ABC-Lib$ (4.0d0*ChcheS*dlog(NB))/(2.0d0*NPrc) 対象 2 (アルゴリズム 2

!ABC-LIB$ select sub region end

!ABC-LIB$ static select region end

ソフトウエア開発者用ディレクティブ:

アルゴリズム選択指定子

 アルゴリズム選択処理

30

実行起動前時;

選択指定子 ;

コスト定義関数内 で使われる変数

コスト定義関数:

この値をもとに 選択がなされる 対象領域 1

(チューニング領域 1 )

対象領域 2

(チューニング領域2)

領域1と2の選択が、性能パラメタとして システムに自動登録される

全学ゼミ:スパコンプログラミング研究ゼミ

(31)

ソフトウエア開発者用ディレクティブ:

ブロック幅調整

!ABCLib$ install variable (MB) region start

!ABCLib$ name BlkMatMal

!ABCLib$ varied (MB) from 1 to 64 do i=1, n, MB

call MyBlkMatVec(A,B,C,n,i) enddo

!ABCLib$ install variable (MB) region end

31

ブロック幅調整指定

(1から64まで)

変動パラメタの

自動チューニング指定

対象領域 ( AT領域 )

( ソフトウエア開発者 が知っている )

全学ゼミ:スパコンプログラミング研究ゼミ

(32)

ソフトウエア開発者用ディレクティブ:

実行時の反復解法の前処理方式選択

!ABCLib$ dynamic select (eps,iter)

!ABCLib$ & region start

!ABCLib$ name PreCondSelect

!ABCLib$ parameter (in eps, in iter)

!ABCLib$ according min (eps) .and.

!ABCLib$ & condition (iter<5)

!ABCLib$ select sub region start AT

領域

1

(前処理

1

...

eps = ...

!ABCLib$ select sub region end

!ABCLib$ select sub region start AT

領域

2

(前処理

2

...

eps = ...

!ABCLib$ select sub region end

!ABCLib$ dynamic select (eps,iter)

!ABCLib$ & region end

実行時自動チューニング、

アルゴリズム選択処理の指定 コスト定義関数で利用する 入力変数の指定

コスト定義関数

( eps が最小となる AT 領域を iter<5 以下の条件で決定)

対象領域1、2

(チューニング領域)

全学ゼミ:スパコンプログラミング研究ゼミ 32

(33)

ABCLibScript の効果検証

 対象アプリケーション

行列 - 行列積

 ABCLibScript ディレクティブ

アンローリング指定子

 計算機環境

Intel Pentium4 (2.0GHz), PGI compiler

 被験者

被験者 A :ノン・エキスパート

被験者 B :セミ・エキスパート

( ブロック化アルゴリズムを知っている )

 実験期間

手によるチューニング:2週間

ABCLibScript プログラミング:2時間

33 全学ゼミ:スパコンプログラミング研究ゼミ

(34)

34

実験結果 (1/2)

4 倍の速度向上

高性能

 被験者 A

全学ゼミ:スパコンプログラミング研究ゼミ

(35)

35

実験結果 (2/2)

最大 2.5 倍の 速度向上

高性能 被験者 B

全学ゼミ:スパコンプログラミング研究ゼミ

(36)

ABCLibScript の効果(まとめ)

 ノン・エキスパート、セミ・エキスパート共に、

手によるチューニングよりも高速なコードが 自動作成できた

 開発期間を 2週間から2時間 程度に、

より良い性能を保ったまま、短縮できる 可能性がある

36 全学ゼミ:スパコンプログラミング研究ゼミ

(37)

37

開発ソフトウエアデモ

1. ABCLibScript のプリプロセッサ ABCLibCodeGen

 対象処理:行列積コードに対する i, j, k- ループ アンローリング

 元のプログラム( ABCLibScript + Fortran90 + MPI )

 自動チューニング機能が付加された、自動生成 プログラム (Fortran90 + MPI)

2. VizABCLib による、上記自動生成プログラムの

実行ログに対するビジュアル表示

全学ゼミ:スパコンプログラミング研究ゼミ

(38)

ABCLibScript 画面

全学ゼミ:スパコンプログラミング研究ゼミ 38

(39)

ソースコード自動生成画面

全学ゼミ:スパコンプログラミング研究ゼミ 39

(40)

VizABCLib 起動画面

全学ゼミ:スパコンプログラミング研究ゼミ 40

(41)

VizABCLib ログ表示画面

全学ゼミ:スパコンプログラミング研究ゼミ 41

(42)

VizABCLib ログ詳細表示画面

全学ゼミ:スパコンプログラミング研究ゼミ 42

(43)

43

詳細な情報を得るには

 ソースコード等の公開場所

www.abc-lib.org

 解説書

「ソフトウエア自動チューニング

ー数値計算ソフトウエアへの適用と その可能性」

慧文社

ISBN4-905849-18-7

全学ゼミ:スパコンプログラミング研究ゼミ

(44)

PPOPEN-HPC プロジェクトと PPOPEN-AT

44 全学ゼミ:スパコンプログラミング研究ゼミ

(45)

ppOpen-HPC プロジェクト

 <HPC 用ミドルウェア > と < 自動チューニング (AT)>

◦ 研究領域「ポストペタスケール高性能計算に資する システムソフトウェア技術の創出」

(統括:米澤明憲教授)

◦ H23 年度 JST CREST 採択課題( 2011 ~ 2015 )

「自動チューニング機構を有する

アプリケーション開発・実行環境」

 代表:中島研吾教授(東京大学)

ppOpen-HPC : ポストペタ( post-peta, pp )

スケールの並列計算機上でのシミュレーション コードについて、開発と最適化実行を支援する オープンソース基盤(ミドルウェア)

ppOpen-HPC は、科学技術計算に使われる

多種の数値解法のライブラリから構成

ppOpen-AT : ppOpen-HPC のプログラム のための自動チューニング専用言語

◦ 先行研究 ABCLibScript の成果を用いて開発

45 全学ゼミ:スパコンプログラミング研究ゼミ

(46)

46

FVM DEM

FEM FDM

Many-core CPUs GPU Low Power

CPUs Vector CPUs

MG

COMM

自動チューニング機構

 最適化候補のコード生成

 最適化候補の探索

 最適化のための自動実行

資源わりあて機構

ppOpen-APPL

ppOpen-MATH

BEM

ppOpen-AT

ユーザプログラム

GRAPH VIS MP STATIC DYNAMIC

ppOpen-SYS FT

最適リソース 指定

データアクセス 最適化

全学ゼミ:スパコンプログラミング研究ゼミ

(47)

科学技術計算のための AT 技術に求められること

1. 計算科学分野のアプリで「実用」となること

 計算科学分野で使われているアプリケーションにおいて、

AT の効果を出す(コ・デザインの推進)

 ベンチマークではなく、アプリの実コードを用いて性能評価する

2. 運用中のスパコンでも適用できること

 スパコン運用環境で AT 機能付きソフトウェアが動作

 多数ユーザを有するスパコンセンターでも使える

 AT のための計算機資源利用が極力少ない(低オーバヘッド)

 他ユーザの利用を阻害しない

3. ソフトウェア・スタックの要求が少ないこと

 特に、動的な「コードジェネレータ」において

 デーモンが不要

 OS カーネル修正不可(ベンダ保守契約の問題)

 スクリプト言語が不要

 バッチジョブシステムに依存しない、 … など実際は問題山積

 「全てがユーザレベルで動作」する枠組みであること

全学ゼミ:スパコンプログラミング研究ゼミ 47

(48)

一つの方向 (FIBER フレームワーク [Katagiri et.al., 2003 ] )

オリジナルコード ディレクティブ

による記載

ユーザ ライブラリ 知識

開発者

① ライブラリ

公開前

Candidate 1

Candidate 2

Candidate 3

候補

オートチューナー n

公開ライブラリ

自動

コード生成

:対象 計算機 実行時間

ライブラリ ユーザ

ライブラリ呼び出し

選択

自動

チューニング された

コード実行

実行時

Xabclib 、 ABCLib 、 ppOpen‐AT (ABCLibScript) の AT 方式

全学ゼミ:スパコンプログラミング研究ゼミ 48

(49)

AT 専用言語 ppOpen-AT による ソフトウェア開発手順

49

最適化候補とAT機構が 付加された実行可能コード

専用言語処理系

(プリプロセッサ)の起動 ソフトウエア

開発者

ppOpen-AT による 自動チューニング記述

AT機構が付加された プログラム

コンパイラ ではできない

最適化

→開発者知識に 基づく最適化

#pragma oat install unroll (i,j,k) region start

#pragma oat varied (i,j,k) from 1 to 8

for(i = 0 ; i < n ; i++){

for(j = 0 ; j < n ; j++){

for(k = 0 ; k < n ; k++){

A[i][j]=A[i][j]+B[i][k]*C[k][j]; }}}

#pragma oat install unroll (i,j,k) region end

■自動生成 される機構

 最適化候補

 性能モニタ

 パラメタ探索

 性能モデル化

 ミドルウェア開発者が記述

 計算機資源、電力量、

コードの、最適化方式を記述

全学ゼミ:スパコンプログラミング研究ゼミ

(50)

ppOpen-AT による非均質計算機環境

( CPU-GPU )最適化

50

並列記述の ある C コード

C 言語版 ppOpen-AT

最適化候補1 最適化候補2

最適化候補n

CPU 記述

→ GPU 言語

( CUDA 等)の Cコンパイラ AT機構

最適化候補1 最適化候補2

最適化候補 2n

AT機構 GPU と CPU 上で

実行と 最適化( AT )

GPU/CPU で 最適化された

コード

GPU/CPU

実行可能コード

CPU 用コード

※ OpenMP 記述を想定

OpenACC 、 PGI など

全学ゼミ:スパコンプログラミング研究ゼミ

(51)

AT に関する実行時の挙動

インストー時 最適化済み

CPU

実行 切替 GPU

機構

情報の参照

対象関数の

ユーザによる呼び出し

ppOpen-AT による記述 がある部分

ppOpen-AT による 記述がある

:チューニング 情報データベース

インストール時最適化 の場合

:チューニング

情報データーベース

全学ゼミ:スパコンプログラミング研究ゼミ 51

(52)

CPU と GPU の切り替えのための 指示文

#pragma oat allocate (<Object>)

◦ <Object> := { CPU | GPU | auto }

 CPU : CPU での実行

 GPU : GPU での実行

 auto:

CPU と GPU 間でのコードを測定し た後に最適なリソースを選択

全学ゼミ:スパコンプログラミング研究ゼミ 52

(53)

例 : 行列 - 行列積での CPU と GPU の 切り替え例

53

#pragma oat install unroll (i,j,k) region start

#pragma oat name MyMatMul

#pragma oat varied (i,j,k) from 1 to 2

#pragma oat allocate (auto) for(i = 0 ; i < n ; i++){

for(j = 0 ; j < n ; j++){

for(k = 0 ; k < n ; k++){

A[i][j] = A[i][j] + B[i][k] * C[k][j];

} } }

#pragma oat install unroll (i,j,k) region end

CPU と GPU

で最適な実行を選択

全学ゼミ:スパコンプログラミング研究ゼミ

(54)

ppOpen-AT による自動生成コードの構成

( CPU コード)

54

#pragma oat install unroll (i,j,k) region start

#pragma oat name MyMatMul

#pragma oat varied (i,j,k) from 1 to 4 for(i = 0 ; i < n ; i++){

for(j = 0 ; j < n ; j++){

for(k = 0 ; k < n ; k++){

A[i][j] = A[i][j] + B[i][k] * C[k][j];

} } }

#pragma oat install unroll (i,j,k) region end

プログラム中の ppOpen-AT

による記述

ppOpen-AT の プリプロセッサ

AT 制御コード

OAT_ControlRoutines.c コードの修正 :

OAT_<User File Name>.c

インストール時 AT の候補

OAT_InstallRoutines.c 実行起動前時 AT の候補

OAT_StaticRoutines.c 実行時 AT

の候補

OAT_DynamicRoutines.c AT 候補

実装切り替え部

候補 #1 候補 #2

候補 #n

全学ゼミ:スパコンプログラミング研究ゼミ

(55)

“#pragma oat allocate(auto)” からの 自動生成コード

int OAT_InstallMyMatMul(int n, Int iusw1) { switch(iusw1){

case 1: OAT_InstallMyMatMul_1(n); break;

case 2: OAT_InstallMyMatMul_2(n); break;

….

case 8: OAT_InstallMyMatMul_8(n); break;

case 9: OAT_InstallMyMatMul_9(n); break;

case 16: OAT_InstallMyMatMul_16(n); break;

int OAT_InstallMyMatMul_9 (int n) { int i, j, k;

#pragma acc region

{ // #pragma allocate region start.

for(i = 0 ; i < n ; i++){

for(j = 0 ; j < n ; j++){

for(k = 0 ; k < n ; k++){

A[i][j] = A[i][j] + B[i][k] * C[k][j];

} } } } // #pragma allocate region end. }

CPU コード

GPU コード

PGI Accelerator からの変換例

( OpenACC 記述からも 同様に可能)

全学ゼミ:スパコンプログラミング研究ゼミ 55

(56)

例)

姫野ベンチマークの CPU と GPU 切り替え

56 float jacobi(int nn) {

int i,j,k,n;

float gosa, s0, ss;

#pragma OAT static select region start

#pragma OAT name SelectHimeno

#pragma OAT allocate (auto)

#pragma OAT select sub region start

for(n=0 ; n<nn ; ++n){

gosa = 0.0;

for(i=1 ; i<imax-1 ; i++) for(j=1 ; j<jmax-1 ; j++)

for(k=1 ; k<kmax-1 ; k++){

s0 = a[0][i][j][k]*p[i+1][j][k]+a[1][i][j][k]*p[i][j+1][k] + a[2][i][j][k]*p[i][j][k+1]+b[0][i][j][k]*(p[i+1][j+1][k]-p[i+1][j-1][k]- p[i-1][j+1][k]+p[i-1][j-1][k]) +b[1][i][j][k]*(p[i][j+1][k+1]-p[i][j-1][k+1]-p[i][j+1][k-1]+p[i][j-1][k-1]) + b[2][i][j][k]*(p[i+1][j][k+1]- p[i-1][j][k+1]-p[i+1][j][k-1]+p[i-1][j][k-1]) +c[0][i][j][k]*p[i-1][j][k]+c[1][i][j][k]*p[i][j-1][k]+c[2][i][j][k]*p[i][j][k-1] + wrk1[i][j][k];

ss = ( s0 * a[3][i][j][k] - p[i][j][k] ) * bnd[i][j][k];

gosa+= ss*ss; /* gosa= (gosa > ss*ss) ? a : b; */

wrk2[i][j][k] = p[i][j][k] + omega * ss;

}

for(i=1 ; i<imax-1 ; ++i) for(j=1 ; j<jmax-1 ; ++j)

for(k=1 ; k<kmax-1 ; ++k) p[i][j][k] = wrk2[i][j][k];

} /* end n loop */

#pragma OAT select sub region end

#pragma OAT static select region end

return(gosa);

}

CPU と GPU の切り替え指定

全学ゼミ:スパコンプログラミング研究ゼミ

(57)

姫野ベンチマークの CPU と GPU の 切り替え効果

問題サイズ : LARGE

反復回数

CPU での 実行

GPU での 実行

5番目の反復 GPU が 速い CPU

が 速い

6番目の反復

57 全学ゼミ:スパコンプログラミング研究ゼミ

(58)

レポート課題

1. [L 30 ] ABCLibScript の後続プロジェクトで開発 されている ppOpen-AT をダウンロードせよ。

サンプルプログラムのコードを処理し、自動 チューニングコードを自動生成せよ。

その後、自動チューニングコードを FX10 で起動し、

自動チューニングの効果を調べよ。

 ppOpen-AT ダウンロードページ

http://ppopenhpc.cc.u-tokyo.ac.jp/

全学ゼミ:スパコンプログラミング研究ゼミ 58

(59)

レポート課題

2. [L 40 ] 自分の研究で取り扱っているコードや、

興味のあるアプリケーションコードに ppOpen-AT を適用 し、自動チューニングコードを自動生成せよ。

また、その自動チューニングコードを FX10 で動かし、

自動チューニングの効果を検証せよ。

 注意:

現在公開している ppOpen-AT はプロトタイプなため、コード が処理できないかもしれません。

その場合は、動く範囲を特定したうえで性能を調べて

ください。この場合、レポート中でバグ報告を行ってください。

また、 ppOpen-AT の効果、欠点、改良点などを、自分の コードにおいて考察してください。

全学ゼミ:スパコンプログラミング研究ゼミ 59

(60)

レポート課題

3. [L 5~ ] テキストブックの間違いをみつけて、

レポートで報告せよ。

全学ゼミ:スパコンプログラミング研究ゼミ 60

(61)

ソフトウェア自動チューニング研究 の参考文献一覧

全学ゼミ:スパコンプログラミング研究ゼミ 61

(62)

参考文献

1. H. Kuroda, T. Katagiri, Y. Kanada: Knowledge discovery in auto-tuning parallel numerical library, Progress in Discovery Science”, Springer LNAI, Vol. 2281, pp.628-639 (2001)

2. T. Katagiri, K. Kise, H. Honda, T. Yuba: FIBER: A general framework for auto-tuning software, The Fifth International Symposium on High Performance Computing (ISHPC-V), Springer LNCS 2858, pp. 146-159 (2003)

3. T. Katagiri, K. Kise, H. Honda, T. Yuba: Effect of auto-tuning with user's knowledge for numerical software, Proceedings of the ACM 1st conference on Computing frontiers (CF2004), pp.12-25, (2004)

4. T. Katagiri, Y. Ishii, H. Honda: RAO-SS: A prototype of run-time auto-tuning facility for sparse direct solvers, Technical Report of UEC-IS-2005-2, pp. 1-10, (2005)

5. 櫻井隆雄、直野健、片桐孝洋、中島研吾、黒田久泰: OpenATLib: 数値計算ライブラリ向け自動チューニ ングインターフェース、情報処理学会論文誌:ACS, Vol.3, No.2, pp.39-47 (2010)

6. T. Katagiri, S. Ito, S. Ohshima: Early experiences for adaptation of auto-tuning by ppOpen-AT to an explicit method, Special Session: Auto-Tuning for Multicore and GPU (ATMG) (In Conjunction with the IEEE MCSoC-13), Proceedings of MCSoC-13 (2013)

7. T. Katagiri, S. Ohshima, M. Matsumoto: Auto-tuning of computation kernels from an FDM Code with ppOpen-AT, Special Session: Auto-Tuning for Multicore and GPU (ATMG) (In Conjunction with the IEEE MCSoC-14), Proceedings of MCSoC-14 (2014)

8. T.Katagiri, S.Ohshima, M. Matsumoto: Directive-based Auto-tuning for the Finite Difference Method on the Xeon Phi, The Tenth International Workshop on Automatic Performance Tuning (iWAPT2015) (In

Conjunction with the IEEE IPDPS2015 ), Proceedings of IPDPSW2015, pp.1221-1230 (2015)

自動チューニングフレームワーク

(63)

参考文献

1.

黒田久泰,片桐孝洋,佃良生,金田康正:自動チューニング機能付き並列数値計算ライブラリ構築 の試み

---

対称疎行列用の連立一次方程式ソルバを例にして

---,

情報処理学会第

57

回全国大会 講演論文集

(

), pp.1-10 -- 1-11 (1998)

2. T. Katagiri, H. Kuroda, and Y. Kanada: A Methodology for Automatically Tuned Parallel Tri-

diagonalization on Distributed Memory Parallel Machines, Proceedings of VecPar2000, pp.265 -277 (2000)

3. H. Kuroda, T. Katagiri, Y. Kanada: Performance of Automatically Tuned Parallel GMRES(m) Method on Distributed Memory Machines, Proceedings of VecPar2000, pp.251-264, (2000)

4.

片桐孝洋,黒田久泰,大澤清,金田康正

: ILIB:

自動チューニング機能付き並列数値計算ライブラリ とその性能評価

, 2000

年 並列処理シンポジウム

(JSPP'2000), JSPP'2000

論文集,

pp. 27-34 (2000)

5.

片桐孝洋, 黒田久泰, 大澤清, 工藤誠, 金田康正

:

自動チューニング機構が並列数値計算ライ ブラリに及ぼす効果

,

情報処理学会論文誌

:

ハイパフォーマンスコンピューティングシステム

, Vol.42, No.12, pp.60-76 (2001)

6. T. Katagiri: A study on large scale eigensolvers for distributed memory parallel machines, Ph. D Thesis, the Department of Information Science, the University of Tokyo (2001)

7. H. Kuroda, T. Katagiri, M. Kudoh, Y. Kanada: ILIB_GMRES: An auto-tuning parallel iterative solver for linear equations, Proceedings of SC2001 (2001) (Poster)

8.

木下靖夫,片桐孝洋,弓場敏嗣

: AutoTuned-RB:

再帰

BLAS

ライブラリの自動チューニング方式

, 2005

年 ハイパフォーマンスコンピューティングと計算科学シンポジウム(

HPCS2005

),

HPCS2005

論文集,

pp. 33-40 (2005)

自動チューニング機能付き数値計算ライブラリ(1)

(64)

参考文献

9. T. Katagiri, K. Kise, H. Honda, T. Yuba: ABCLib_DRSSED: A parallel eigensolver with an auto-tuning facility, Parallel Computing, Vol. 32, Issue 3, pp. 231–250 (2006)

10. T. Katagiri, C. Vömel, JW Demmel: Automatic performance tuning for the multi-section with multiple eigenvalues method for symmetric tridiagonal eigenproblems, Proceedings of Applied Parallel Computing, State of the Art in Scientific Computing (PARA2006), Springer LNCS, Vol.

4699, pp.938-948 (2007)

11. T. Katagiri, P.Y. Aquilanti, S. Petiton: A smart tuning strategy for restart frequency of GMRES (m) with hierarchical cache sizes, Proceedings of High Performance Computing for Computational Science-VECPAR 2012, Springer LNCS, Vol.7851, pp.314-328 (2013)

12. K. Naono, T. Katagiri, T. Sakurai, M. Igai, S. Ohshima, H. Kuroda, S. Itoh and K. Nakajima: A Fully Run-time Auto-tuned Sparse Iterative Solver with OpenATLib, The 4th International Conference on Intelligent and Advanced Systems (ICIAS2012), Proceedings of ICIAS2012, pp. 143-148 (2012)

13. S. Ito, S. Ohshima, T. Katagiri: SSG-AT: An Auto-tuning Method of Sparse Matrix-vector

Multiplicataion for Semi-Structured Grids - An Adaptation to OpenFOAM -, Special Session of Special Session: Auto-Tuning for Multicore and GPU (ATMG) , Proceedings of MCSoC-2012, pp.191-197 (2012)

14. T. Katagiri, T. Sakurai, M. Igai, S. Ohshima, H. Kuroda, K. Naono and K. Nakajima: Control Formats for Unsymmetric and Symmetric Sparse Matrix-vector Multiplications, Selected Papers of 10th International Meeting on High-Performance Computing for Computational Science

(VECPAR'2012) , Springer Lecture Notes in Computer Science, Volume 7851, pp.236-248 (2013)

15. T. Sakurai, T. Katagiri, H. Kuroda, K. Naono, M. Igai, S. Ohshima: A Sparse Matrix Library with Automatic Selection of Iterative Solvers and Preconditioners, Eighth international Workshop on Automatic Performance Tuning (iWAPT2013) (In conjunction workshop with International

Conference on Computational Science, ICCS2013), Proceedings of the International Conference on Computational Science, ICCS 2013,Vol. 18, pp.1332–1341 (2013)

自動チューニング機能付き数値計算ライブラリ(2)

(65)

参考文献

1. T. Tanaka, T. Katagiri, T. Yuba: d-Spline based incremental parameter estimation in automatic performance tuning, Proceedings of Applied Parallel Computing, State of the Art in Scientific Computing (PARA2006), Springer LNCS, Vol. 4699, pp.986-995 (2007)

2.

田中輝雄,片桐孝洋,弓場敏嗣

:

ソフトウェア自動チューニングにおける標本点追加型性能 パラメタ推定法

,

電子情報通信学会論文誌 A,

Vol.J90-A, No.4, pp .281--291 (2007)

3.

田中輝雄,片桐孝洋,弓場敏嗣

:

ソフトウェア自動チューニングにおける標本点逐次追加型 性能パラメタ推定法の疎行列計算への適用

,

情報処理学会論文誌:コンピューティングシス テム,

Vol.48, No. SIG13 (ACS 19)

pp. 223-234 (2007)

4. R. Suda, L. Cheng, T. Katagiri: A Mathematical Method for Online Autotuning of Power and Energy Consumption with Corrected Temperature Effects, Eighth international Workshop on Automatic Performance Tuning (iWAPT2013) (In conjunction workshop with International Conference on Computational Science, ICCS2013), Proceedings of the International

Conference on Computational Science, ICCS 2013,Vol. 18, pp.1302–1311 (2013)

5. T. Tanaka, R. Otsuka, A. Fujii, T. Katagiri, T. Imamura: Implementation of d-Spline-based incremental performance parameter estimation method with ppOpen-AT, Scientific Programming, IOS Press, Vol. 22, Issue 4, pp. 299-307 (2014)

6. Riku Murata, Jun Irie, Akihiro Fujii, Teruo Tanaka, Takahiro Katagiri: Enhancement of Incremental Performance Parameter Estimation on ppOpen-AT, Special Session: Auto-Tuning for Multicore and GPU (ATMG-15) (In Conjunction with the IEEE MCSoC-15 ), Proceedings of

MCSoC2015, Politecnico di Torino, Turin, Italy, September 23-25, 2015, pp.-, (2015)(To be published)

AT 性能モデル

参照

関連したドキュメント

3)Wolfe, M.: High Performance Compilers for Parallel Computing , Addison Wesley 1996.. and Padua, D.: On the Automatic Parallelization of the Perfect

and Voight, R.: Parallel solution of a generalized symmetric matrix eigenvalue problem, Proceedings of the Fifth SIAM Conference on Parallel Processing for Scientific

This paper proposes simulated annealing with automatic parameter tuning for computational morphogenesis of shells with free curved surface. Various parameters

and Yang, Y.: BestConfig: Tapping the Performance Potential of Systems via Automatic Configuration Tuning, Proceedings of the 2017 Symposium on Cloud Computing, SoCC ’17, New

Walker, Implementation of the GMRES Method Using Householder Transformations, SIAM Jour‐ nal on Scientific and Statistical Computing, Vol.. Hirota: A Parallel Algorithm

and Parashar, M.: Exploring Automatic, Online Failure Recovery for Scientific Applications at Extreme Scales, Proceedings of the International Conference for High

This paper proposes the online automatic tuning method of AMG library for fluid analysis based on SMAC method.. In this analysis, Pressure Poisson equation needs to be solved

Sequential Experimental Design for Run-time Automatic Tuning – Two Normals of Common Variance – Reiji SUDA† Sequential design of experiments for run-time automatic performance