行列 horner 法の並列化の実装について (a parallel implementation of horner's rule...

34
行列 Horner 法の並列化の実装について 田島 慎一 小原 功任 照井 章 筑波大学 金沢大学 Risa/Asir Conference 2013 + 5 回六甲博多計算代数会議 2013 3 18 1 / 34

Upload: akira-terui

Post on 12-Aug-2015

488 views

Category:

Documents


3 download

DESCRIPTION

Risa/Asir Conference 2013. 神戸大学, 2013年3月18日.Shin-ichi Tajima, Katsuyoshi Ohara and Akira Terui. A Parallel Implementation of Horner's Rule for Matrices (in Japanese). Risa/Asir Conference 2013. Kobe University, Kobe, Japan, March 18, 2013.

TRANSCRIPT

Page 1: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列 Horner法の並列化の実装について

田島慎一 † 小原功任 ‡ 照井章 †

† 筑波大学 ‡ 金沢大学

Risa/Asir Conference 2013 +第 5回六甲博多計算代数会議2013年 3月 18日

1 / 34

Page 2: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

問題

Given:

A: n次正方行列M: n次正方行列または n次列ベクトルg(!) = am!m + am!1!m!1 · · ·+ a1!+ a0 " R[x], am ! 0

目的行列多項式 g(A)Mを計算する際の Horner法の効率化

背景最小消去多項式の計算など

2 / 34

Page 3: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

今日の話題

拡張 Horner法(行列Horner法)による g(A)M の計算の効率化(RIMS共同研究「数式処理研究の新たな発展」,2011)並列計算による行列Horner法の効率化(RIMS共同研究「数式処理研究の新たな発展」,2012

!#今回)

3 / 34

Page 4: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

拡張 Horner法による効率化

4 / 34

Page 5: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

Horner法

1変数多項式の評価を効率的に行うための算法の一つ(例)

g(x) = a4x4 + a3x3 + a2x2 + a1x1 + a0

= (((a4x + a3)x + a2)x + a1)x + a0

計算量は O(m) (ただしm = deg(f))

5 / 34

Page 6: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列多項式に対するHorner法とその問題

例題A, M: n次正方行列g(!) = a4!4 + a3!3 + a2!2 + a1!+ a0

g(A): 行列多項式

g(A)M を行列積による Horner法で計算すると

g(A)M = a4A4M + a3A3M + a2A2M + a1AM + a0M= A(A(A(a4AM + a3M) + a2M) + a1M) + a0M

計算量の問題deg(g) = mの場合,行列-行列積が m回: O(n3m)

m $ nの場合,計算量はほぼ O(n4)

この計算量を改善したい6 / 34

Page 7: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列多項式に対するHorner法の効率化(行列Horner法) (DCAR 2011)

例題A, M: n次正方行列g(!) = a18!18 + a17!17 + · · ·+ a1!+ a0

g(A): 行列多項式に対し,g(A)Mを計算する

アイデアHorner法を分割して計算し,行列-行列積の回数を減らす

7 / 34

Page 8: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列多項式に対するHorner法の効率化(行列Horner法) (DCAR 2011)

例: 4次ごとの分割の場合1 あらかじめ A3M, A2M, AM, M を用意する2 A4 = (A2)2 も用意する3 Horner法を 4次ごとに分割して加える

Horner法の分割

g(A)M =a18A18M + · · ·+ a1AM + A0M

=A4{A4{A4{A4(a18A2M + a17AM + a16M)}+ (a15A3M + a14A2M + a13AM + a12M)}+ · · ·+ (a3A3M + a2A2M + a1AM + a0M)

8 / 34

Page 9: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算量(特に行列-行列積の回数)

例題A, M: n次正方行列g(!) = a18!18 + a17!17 + · · ·+ a1!+ a0

g(A): 行列多項式に対し,g(A)Mを計算する

従来の Horner法

g(A)M = a18A18M + · · ·+ a1AM + a0M= A(A(· · · (A(a18AM + a17M) + · · ·+ a1M) + a0M

行列-行列積 18回

9 / 34

Page 10: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算量(特に行列-行列積の回数)

例: 4次ごとの分割の場合1 あらかじめ A3M, A2M, AM, M を用意する% 3回2 A4 = (A2)2 も用意する% 2回3 Horner法を 4次ごとに分割して加える% 4回

行列-行列積 9回

Horner法の分割

g(A)M =a18A18M + · · ·+ a1AM + A0M

=A4{A4{A4{A4(a18A2M + a17AM + a16M)}+ (a15A3M + a14A2M + a13AM + a12M)}+ · · ·+ (a3A3M + a2A2M + a1AM + a0M)

10 / 34

Page 11: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算量(特に行列-行列積の回数)

多項式が一般のm次の場合A, M: n次正方行列g(!) = am!m + · · ·+ a1!+ a0

g(A): 行列多項式に対し,g(A)Mを計算する

従来の Horner法

g(A)M = amAmM + · · ·+ a1AM + a0M= A(A(· · · (A(amAM + amM) + · · ·+ a1M) + a0M

行列-行列積 m回

11 / 34

Page 12: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算量(特に行列-行列積の回数)m次多項式に対し,d = 2b 次ごとに分割する場合 (d < m)

1 あらかじめ Ad!1M, . . . ,AM,M を用意する% d ! 1回2 Ad = A2b も用意する% b 回3 Horner法を d次ごとに分割% &m/d'回

行列-行列積 b + d + &m/d' ! 1回

Horner法の分割(分割次数 d次)

g(A)M =amAmM + · · ·+ a1AM + A0M

=Ad{· · · {Ad(amAm(M + · · ·+ a(m!m()/dM)}+ · · ·+ (ad!1Ad!1M + · · ·+ a1AM + a0M)

(m( = rem(m, d))

12 / 34

Page 13: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

最適な分割次数 d = 2bの見積もり

行列-行列積の回数b + d + &m/d' ! 1 = O(d + m/d)

mを固定して dを動かしたきの d + m/dの最小値dとm/dの相加・相乗平均の関係より,d = m/dのときに最小.すなわち

d =)

mのときO()

m).

13 / 34

Page 14: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算例

例題 1

g(!): 64次,係数は大きさ 64 bitの整数で無作為に生成A, M: 64次正方行列,各要素は大きさ 64 bitの整数で無作為に生成g(A)Mの計算時間を測定

Horner法の分割次数は 1(なし), 2, 4, 8, 16, 32行列 A を 10個用意して,各分割次数あたり,各 1回,計 10回計測し,平均値を計算行列 Mは共通

14 / 34

Page 15: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列Horner法の計算例

計算環境Intel(R) Xeon(R) E5607 (4 cores) *2 at 2.27 GHz, RAM64GB, Linux 2.6.32-5-amd64 (SMP)数式処理システム Risa/Asirに実装

写真は後継機種だが,計算環境もほぼ同一の大きさと形状

15 / 34

Page 16: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

例題 1: Horner法の分割次数を変化させた場合の計算時間

Table 1: Timing data for Horner’s rule computation of g(A)Mdeg(g) = 63, dim(A) = dim(M) = 64, #core = 1

16 / 34

Page 17: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

並列計算の実装

17 / 34

Page 18: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

どの部分を並列化するか?

Horner法の分割

g(A)M =amAmM + · · ·+ a1AM + A0M

=Ad{· · · {Ad(amAm(M + · · ·+ a(m!m()/dM)}+ · · ·+ (ad!1Ad!1M + · · ·+ a1AM + a0M)

m( = rem(m, d), aj " R, A ,M " Rn*n

上の下線部の計算コストは比較的小さい

あらかじめ Ad!1M, . . . ,AM,M " Rn*n を用意している下線部の計算はスカラ-行列積の和# O(n2)

18 / 34

Page 19: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

どの部分を並列化するか?

Horner法の分割

g(A)M =amAmM + · · ·+ a1AM + A0M

=Ad{· · · {Ad(amAm(M + · · ·+ a(m!m()/dM=Rq

)}

+ · · ·+ (ad!1Ad!1M + · · ·+ a1AM + a0M

=R1

)

m( = rem(m, d), q = quo(m, d) aj " R, A ,M " Rn*n

上の下線部の計算コストは比較的小さいあらかじめ Ad!1M, . . . ,AM,M " Rn*n を用意している下線部の計算はスカラ-行列積の和# O(n2)

19 / 34

Page 20: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

どの部分を並列化するか?

Horner法の分割

g(A)M =amAmM + · · ·+ a1AM + A0M

=Ad{· · · {Ad{AdRq}+ Rq!1}+ · · · }+ R1

q = quo(m, d)

上の下線部の行列-行列積を並列化する (O(n3))

20 / 34

Page 21: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

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

A · B , A ,B " Rn*n

(1)行列Aを行ベクトルに分割するA · B % t(a1B , . . . , anB),

where A = t(a1, . . . , an)

(2)行列Aを行ブロックに分割するA · B % t(A1B | · · · |A"B),

where A = t(A1| · · · |A"), " + n

21 / 34

Page 22: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

Risa/Asirにおける並列計算並列計算フレームワーク oh p (小原 2011)

OpenXMプロトコル上に実装された Asir言語用のソフトウェアパッケージプロセス単位での並列計算を行う1個の clientと "個の serverにより構成clientからジョブの集合の要素を各 serverに投入して計算させ,計算結果を clientに集めるジョブの各要素間の依存性にも対応した処理が可能

oh pの計算モデル (小原 2011)22 / 34

Page 23: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列-行列積の並列計算 (1)

A = t(a1, . . . , an)

行列Aを 1行ずつ行ベクトル a jに分割し,Bとの積を各 serverに割り振る

A · B!!!!!!!!!!!!" #

$$$$$$$$$$$$%

a1 · B a2 · B a3 · B

23 / 34

Page 24: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

実験 1: 行ベクトルに分割した場合の計算時間(分割次数 8次)

Table 2: Timing data for Horner’s rule computation of g(A)Mdeg(g) = 63, dim(A) = dim(M) = 64, #division = 8

24 / 34

Page 25: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

実験 1: 行ベクトルに分割した場合の計算時間(分割次数 8次)

実験結果

予想ほど計算がスケールしない

行列Aを 1行ずつ serverに振り分けているので,通信コストが大?

25 / 34

Page 26: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

行列-行列積の並列計算 (2)

A = t(A1| · · · |Al), l + n

行列Aを serverの個数分の行ベクトルブロックAjに分割し,

Bとの積を各 serverに割り振る

A · B!!!!!!!!!!!!" #

$$$$$$$$$$$$%

A1 · B A2 · B A3 · B26 / 34

Page 27: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

実験 2: 行ブロックに分割した場合の計算時間(分割次数 8次)

Table 3: Timing data for Horner’s rule computation of g(A)Mdeg(g) = 63, dim(A) = dim(M) = 64, #division = 8

27 / 34

Page 28: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

Horner法の部分の計算時間の比較

Table 4: Horner法の部分の計算時間の比較(1行毎の分割 vs.ブロック分割)

deg(g) = 63, dim(A) = dim(M) = 64, #division = 8

28 / 34

Page 29: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

実験 3: 行ブロックに分割し,前処理も並列化した場合の計算時間(分割次数 8次)

(先程の実験結果)Table 3: Timing data for Horner’s rule computation of g(A)M

deg(g) = 63, dim(A) = dim(M) = 64, #division = 8

29 / 34

Page 30: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

実験 3: 行ブロックに分割し,前処理も並列化した場合の計算時間(分割次数 8次)

Table 3: Timing data for Horner’s rule computation of g(A)Mwith parallelization on preprocessing

deg(g) = 63, dim(A) = dim(M) = 64, #division = 8

30 / 34

Page 31: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

References

W. S. Dorn. Generalizations of Horner’s rule for polynomialevaluation. IBM Journal of Research and Development, 6,239–245 1962.K. Maruyama. On the Parallel Evaluation of Polynomials. IEEETransactions on Computers, C-22, 2–5, 1973.

丸山清, D.J. Kuck.行列の式の並列計算について.情報処理,15, 335–341, 1974.

小原功任. OpenXMを用いた Risa/Asir並列計算フレームワークの開発.数式処理, 18, 20–26, 2011.

31 / 34

Page 32: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

研究集会のお知らせ

九州大学マス・フォア・インダストリ研究所共同利用研究

数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research

and Collaboration with Industry

2013年 8月下旬(3日間)@九州大学伊都キャンパス

32 / 34

Page 33: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

研究集会のお知らせ

数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research

and Collaboration with Industry

2013年 8月下旬(3日間)@九州大学伊都キャンパス

夏の RIMS共同研究「数式処理研究の新たな発展」のシリーズ招待講演者(海外,国内)を招聘予定

33 / 34

Page 34: 行列 Horner 法の並列化の実装について (A Parallel Implementation of Horner's Rule for Matrices)

研究集会のお知らせ

数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research

and Collaboration with Industry

2013年 8月下旬(3日間)@九州大学伊都キャンパス

組織委員照井章 (筑波大学;研究代表者),小原功任 (金沢大学),濱田龍義 (福岡大学),横山俊一 (九州大学),穴井宏和 (富士通研究所/九州大学),横田博史 (東芝インフォメーションシステムズ)

詳細は追ってアナウンス予定です34 / 34