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

Microsoft PowerPoint - ATワークショップ pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - ATワークショップ pptx"

Copied!
17
0
0

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

全文

(1)

テーマ2

テーマ2

ソフトウェア工学としての展開

ソフトウェア工学としての展開

ソフトウェア工学としての展開

ソフトウェア工学としての展開

研究代表者 片桐孝洋

東京大学情報基盤センター

東京大学情報基盤センタ

文部科学省 科学研究費補助金

基盤研究

(B)

文部科学省 科学研究費補助金

基盤研究

(B)

「メニーコア・超並列時代に向けた

自動チューニング記述言語の方式開発」

2009年度~2011年度

1 日時: 2009年10月22日(木)10:00~18:00 場所: 東京大学 弥生講堂アネックス セイホクギャラリー 10:30-10:45

(2)

ソフトウェア性能工学の必要性

ソフトウェア性能工学の必要性

IT企業の重役にむけた調査[1]

IT企業の重役にむけた調査[1]

半数が製品の性能問題に直面

半数が製品の性能問題に直面

半数が製品の性能問題に直面

半数が製品の性能問題に直面

少なくとも

少なくとも

20%

20%は再開発

は再開発

再開発:遅延・コスト増加・開発失敗のリスク

性能を考慮したソフトウェア工学体系が必要

性能を考慮したソフトウェア工学体系が必要

ソフトウェア性能工学

(Software Performance Engineering, SPE)

[2]

(

g

g

)

[ ]

定義:

ソフトウェア工学の全般、および、

ソフトウェア開発サイクルを通して直面する

ソフトウェア開発サイクルを通して直面する

性能要求に見合う解析

の工学体系

[1] Compuware, Applied Performance Management Survey, Oct. 2006.

2

[1] Compuware, Applied Performance Management Survey, Oct. 2006. [2] C. U. Smith, L. G. Williams: Software Performance Engineering:

A Case Study Including Performance Comparison with Design Alternatives,

(3)

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

工学の全体像

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 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 ) do i=1, n, 2 do j=1 n

コード生成

工学の全体像

enddo

enddo 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 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 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 )

コンパイルと実行

コンパイルと実行

enddo C( i, j ) = Ctmp1 C( i+1, j ) = Ctmp2 enddo enddo 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

3. 最適化フェーズ

イル

実行

イル

実行

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

実行結果の解析

実行結果の解析

2. プログラミング

フェーズ

4. データベース化

フェーズ

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

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

とチューニング

知識探索

フェーズ

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

対象計算機

対象計算機

1. 仕様策定フェーズ

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

チューニング知識

チューニング知識

データベース

データベース

対象計算機

対象計算機

(4)

計算機環境の変化

計算機環境の変化

マルチコアの浸透

非均質メモリアクセス

(

ccNUMA

)

非均質メモリアクセス

(

ccNUMA

)

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

L1 L2は局所 L3は共有

L1、L2は局所、L3は共有

チップ内のコア数の増大

ハイエンド:

32コア~、ローエンド:8コア~

並列実行モデルの変化

実行

ピュア

MPI実行

低~中並列実行(~

中並列実行(

1 000コア)時

1,000コア)時

ハイブリッド

MPI

OpenMP + MPI)実行

超並列実行(

10 000+コア実行)時

超並列実行(

10,000+コア実行)時

(5)

マルチコアでの実行形態の違いによる

マルチコアでの実行形態の違いによる

性能挙動の劇的変化例

性能挙動の劇的変化例

T2K

T2Kオ プンスパコン)

プンスパコン)

性能挙動の劇的変化例

性能挙動の劇的変化例

T2K

T2Kオープンスパコン)

オープンスパコン)

対称固有値ソルバの三重対角化(行列更新部分)

称固有値

角 (行 更新部分)

44コア実行(

コア実行(

44コア/ソケット)

コア/ソケット)

44コア実行(1コア/ソケット)

コア実行(1コア/ソケット)

高性能な

高性能な

段数

アンローリング

段数

行列サイズ

アンローリング

行列サイズ

高性能

段数

段数

共有L3キャッシ

の容量の影響

段数

7

共有L3キャッシュの容量の影響

→(動的な)割当場所により最適実装が変わる!

(動的な)割当場所により最適実装が変わる!

(6)

並列実行でのアルゴリズム切替例

並列実行でのアルゴリズム切替例

連立一次方程式解法:疎行列反復解法(

GMRES法)

フロリダ行列epb3、T2Kオープンスパコン(東大版)

古典

古典

G

G--S

S

修正

修正

G

G--S

S(デフォルト)

(デフォルト)

Cores Iter. Orth. Time 16 24991 89.1 103.0 32 22988 36.3 44.5

Iter. Orth. Time

24499 68.6 81.0 24924 70.5 76.9 32 22988 36.3 44.5 48 25619 22.6 28.4 64 25412 12.3 16.6 24924 70.5 76.9 25885 64.2 68.7 24710 95.4 99.4 80 23514 8.2 11.4 96 24577 7.5 10.9 112 23808 6.3 10.2 27285 102.7 106.4 23850 90.8 94.4 23987 85 4 88 7 112 23808 6.3 10.2 128 24383 7.7 12.0

Iter. 収束までの反復回数

23987 85.4 88.7 23921 129.5 134.0

128

128コアで

コアで

10

10倍以上

倍以上

収束ま

反復回数

Orth. 直交化の時間(秒)

Time 全計算時間(秒)

128

128コアで

コアで

10

10倍以上

倍以上

の時間差

の時間差

(7)

AT専用言語による

AT専用言語による

自動チューニングソフトウェア開発手順

自動チューニングソフトウェア開発手順

自動チュ

ニングソフトウェア開発手順

自動チュ

ニングソフトウェア開発手順

ソフトウエア

開発者

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

計算機環境に依存しない

開発者

ABCLibScriptによる

!ABCLib$ install unroll region start

!ABCLib$

i d (i j k) f

1 t

8

計算機環境に依存しない

ABCLibScriptによる

自動チューニング記述

!ABCLib$ varied (i,j,k) from 1 to 8

do i=1, N

do j=1, N

do k 1

N

専用言語処理系

(プリプロセッサ)の起動

do k=1, N

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

enddo; enddo; enddo;

!ABCLib$ install unroll region end

自動チューニング機能が

付加されたプログラム

コンパイラでは

できない

!ABCLib$ install unroll region end

■自動付加され

数値計算ライブラリ

(ソースコード)

できない

メニーコア・

超並列環境に

向く自動最適化

る機構

対象蓄積

モニタ

(ソースコード)

向く自動最適化

手法

学習

パラメタ推定

(8)

本科研の目的

本科研の目的

ABCLibScript

ABCLibScript開発

開発

開発責任者:片桐(東大)

AT理論

複数候補の並列評価

C言語用プリプロセッサ

マルチコア・超並列環境用

機能拡張

pp 開発

開発

須田(東大)

M1 M2 M3 M3 M3 M3 M3 M3 M3 M3 M3 M3 試行専用プロセッサによる並列試行

機能拡張

並列実験計画法

3.0 V/m ×105

電磁場解析等応用:

岩下(京大)

マルチコア制御基盤

今村(電通大)

10万コア向け

機能

M1 M1 M2 M3 M1 M1 M1 M1 M3 M3 M4 M5

動的

割当

1.5

•陰的マルチ

グリッド法

•FDTD法

岩下(京大)

疎行列

今村(電通大)

10万コア向け

固有値ソルバ要求機能

コミュニケータ分

割・動的コア割当機能

機能

拡張

動的コア割当

0.0 方形アイリス 結合円形導波管

•FDTD法

疎行列

反復解法応用:

黒田(愛媛大)

ILIB GMRES

CPU切替基盤

滝沢(東北大)

SPRAT Code /* Special function running on CPU and GPU */ kernel map copy(in streamout stream<float<float> si,> so ) {

    so = si; }

int main(int argc,char** argv) {

stream<float> sa(N), sb(N);

float aa[N], ab[N]; /* read data from array */     streamRead(sa, aa); /* launch the kernel */     copy(sa,sb); /* write data to array */     streamWrite(sb,ab);

動的コア割当機能

応用

適用

結合円形導波管 フィルタ解析

•ILIB_GMRES

動的

CPU切替

滝沢(東北大)

C++ Code for CPU CUDA Codefor GPU

SPRAT Compiler C/C++ Compiler CompilerCUDA

Linker SPRAT Runtime (,);     return 0; }

Runtime Processor Selection

適用

反復解法検証

伊藤(理研)

動的

CPU切替

Executable

先進解法適用

11

4096コア(256ノード)以上の

マルチコア・超並列環境で有効性検証

品質管理

11

(9)

将来展望:

将来展望:

組込み系へAT技術を適用

組込み系へAT技術を適用

組込み系へAT技術を適用

組込み系へAT技術を適用

T-Engine/SH775R開発ボード

シリアル

ポート

自動

実装

実装

自動

生成

プログラム

開発用PC

実装

実装

実装

生成

開発用PC

実装

プログラム開発用PC

Cygwin

GNU開発環境(gcc)

開発環境(

g )

ABCLibScriptプリプロセッサ起動

自動チューニングコード自動生成

片桐孝洋:自動チューニング処理記述用言語 ABCLibScriptの組み込みシステムへの適用の一検討、 SWoPP2007、2007年8月2日、旭川市

(10)

AT専用言語による

AT専用言語による

組込みソフトウ

ア開発手順

組込みソフトウ

ア開発手順

組込みソフトウェア開発手順

組込みソフトウェア開発手順

T-Engine/SH775R開発ボード

シリアル

シリアル

ポート

自動チューニング

プログラム

実装

実装

モード起動

速度を実測しながら

最適な実装を選択

プログラム

開発用PC

実装

実装

最適な実装を選択

USBディスクを

作業領域にできる

作業領域にできる

評価の自動化

13

評価の自動化

(11)

実験ハードウエア環境

実験ハードウエア環境

ネサ

クノ ジ

T-Engine開発ボード仕様

CPU

ルネサンステクノロジ

SH7751R (SH-4コア、240MHz)

フラッシュメモリ

8Mバイト

SDRAM

64Mバイト

SDRAM

64Mバイト

作業用ディスク

USBストレージデバイス2Gバイト

実行プログラム

プロセスベ ス

実行プログラム

プロセスベース

CLI (Command Line Interpreter) 上で実行

実験プログラムはT-Engine/SH7751R開発キットの

標準環境でコンパイル

コンパイラは

gcc version 3.0.4、

最適化オプションは

-O2

(12)

対象ソフトウエア

対象ソフトウエア

1.

行列‐行列積

N 128

N=128

倍精度

倍精度

2.

組み込み用ベンチマーク

MiBench

における

FFT

における

FFT

Telecomm 中にあるFFT/IFFT

Telecomm 中にあるFFT/IFFT

N=8192

倍精度

倍精度

(13)

行列-行列積における

行列-行列積における

ABCLibS

i

ABCLibS

i 指示子

指示子

ABCLibScsript

ABCLibScsript指示子

指示子

#

ABCLib i

ll

ll (i j)

i

#pragma ABCLib install unroll (i, j) region start

#pragma ABCLib varied (i, j) from 1 to 8 sampled 1,2,4,8

{

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

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

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

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

}

}

}

(14)

FFT / IFFT

FFT / IFFTにおける

における

ABCLibScript

ABCLibScript指示子

指示子

ABCLibScript

ABCLibScript指示子

指示子

f ( i 0 i < N S l i + Bl kSi ) {

#pragma ABCLib install unroll (j)

region start

#pragma ABCLib varied (j) from 1 to 8

for ( i=0; i < NumSamples; i += BlockSize ) { ar[2] = cm2; ar[1] = cm1;

ai[2] = sm2; ai[1] = sm1;

for ( j=i, n=0; n < BlockEnd; j++, n++ ) {

#pragma ABCLib varied (j) from 1 to 8

sampled 1,2,4,8

BlockEnd = 1; for (BlockSize = 2;

( j , ; ; j , ) { ar[0] = w*ar[1] - ar[2];

ar[2] = ar[1]; ar[1] = ar[0]; ai[0] = w*ai[1] - ai[2];

i[2] i[1] i[1] i[0] for (BlockSize 2;

BlockSize <= NumSamples; BlockSize <<= 1 ) {

double delta_angle = angle_numerator /(d bl )Bl kSi

ai[2] = ai[1]; ai[1] = ai[0]; k = j + BlockEnd;

tr = ar[0]*RealOut[k] – ai[0]*ImagOut[k]; ti = ar[0]*ImagOut[k] + ai[0]*RealOut[k]; /(double)BlockSize;

double sm2 = sin ( -2 * delta_angle ); double sm1 = sin ( -delta_angle ); double cm2 = cos ( -2 * delta angle );

[ ] g [ ] [ ] [ ]; RealOut[k] = RealOut[j] – tr;

ImagOut[k] = ImagOut[j] - ti; RealOut[j] += tr; ImagOut[j] += ti; }

double cm2 cos ( 2 delta_angle ); double cm1 = cos ( -delta_angle ); double w = 2 * cm1;

double ar[3]; double ai[3];

} }

BlockEnd = BlockSize; }

17

#pragma ABCLib install unroll (j)

region end

(15)

自動チューニングの効果

自動チューニングの効果

(行列

(行列 行列積)

行列積)

(行列

(行列

--行列積)

行列積)

[ミリ秒]

N=128

10

12

J=1

J=2

J=4

J=8

11.6

[ リ秒]

6 4

6 4

6

8

6.4x

6.4x

0

2

4

1 8

0

1.8

I=1

I=2

I=4

I=8

自動チ

ング時間

18

自動チューニング時間

2分32秒

(16)

自動チューニングの効果

自動チューニングの効果

FFT

FFT / IFTT

/ IFTT )

FFT

FFT / IFTT

/ IFTT )

N=8192

自動チューニング時間

26秒

68 0

[ミリ秒]

67

1.15x

1.15x

66.0 68.0

. 5

. 5

62.0 64.0

58

58.0 60.0 56.0 58.0

J=1

J=2

J=4

J=8

19 52.0 54.0

J 1

J 2

J 4

J 8

(17)

今後の予定

今後の予定

ABCLibScriptの

C言語版プリプロセッサ開発

C言語版プリプロセッサ開発

C言語特有の問題検討と実装

C言語特有の問題検討と実装

ポインタ解析等

ABCLibScriptの機能拡張

マルチコア・超並列向け機能実装

マルチコア・超並列向け機能実装

入れ子指示子の実行モデル

入れ子指示子

実行

および実装

応用

ドでの適用評価

応用コードでの適用評価

参照

関連したドキュメント

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

岩手県 ポワッソン・ブラン - 洋食専門店が作業効率改善により取組む新テイクアウト商品の開発 岩手県 有限会社幸楼

旧バージョンの Sierra Wireless Mobile Broadband Driver Package のアンインス

[r]

Using the special C- mount ring adapter, the lens can be directly attached to a CCD camera, enabling it to be used as a low cost image ob- servation lens and variable focus lens

社内セキュリティ等で「.NET Framework 4.7.2」以上がご利用いただけない場合は、Internet

病院と紛らわしい名称 <例> ○○病院分院 ○○中央外科 ○○総合内科 優位性、優秀性を示す名称 <例>

また、特 特定 定切 切盛 盛土 土を を行 行う う場 場合 合に には は、 、一 一般 般承 承継