行列 horner 法の並列化の実装について (a parallel implementation of horner's rule...
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
行列 Horner法の並列化の実装について
田島慎一 † 小原功任 ‡ 照井章 †
† 筑波大学 ‡ 金沢大学
Risa/Asir Conference 2013 +第 5回六甲博多計算代数会議2013年 3月 18日
1 / 34
問題
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
今日の話題
拡張 Horner法(行列Horner法)による g(A)M の計算の効率化(RIMS共同研究「数式処理研究の新たな発展」,2011)並列計算による行列Horner法の効率化(RIMS共同研究「数式処理研究の新たな発展」,2012
!#今回)
3 / 34
拡張 Horner法による効率化
4 / 34
Horner法
1変数多項式の評価を効率的に行うための算法の一つ(例)
g(x) = a4x4 + a3x3 + a2x2 + a1x1 + a0
= (((a4x + a3)x + a2)x + a1)x + a0
計算量は O(m) (ただしm = deg(f))
5 / 34
行列多項式に対する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
行列多項式に対するHorner法の効率化(行列Horner法) (DCAR 2011)
例題A, M: n次正方行列g(!) = a18!18 + a17!17 + · · ·+ a1!+ a0
g(A): 行列多項式に対し,g(A)Mを計算する
アイデアHorner法を分割して計算し,行列-行列積の回数を減らす
7 / 34
行列多項式に対する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
行列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
行列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
行列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
行列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
最適な分割次数 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
行列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
行列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
例題 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
並列計算の実装
17 / 34
どの部分を並列化するか?
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
どの部分を並列化するか?
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
どの部分を並列化するか?
Horner法の分割
g(A)M =amAmM + · · ·+ a1AM + A0M
=Ad{· · · {Ad{AdRq}+ Rq!1}+ · · · }+ R1
q = quo(m, d)
上の下線部の行列-行列積を並列化する (O(n3))
20 / 34
どのように並列化するか?
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
Risa/Asirにおける並列計算並列計算フレームワーク oh p (小原 2011)
OpenXMプロトコル上に実装された Asir言語用のソフトウェアパッケージプロセス単位での並列計算を行う1個の clientと "個の serverにより構成clientからジョブの集合の要素を各 serverに投入して計算させ,計算結果を clientに集めるジョブの各要素間の依存性にも対応した処理が可能
oh pの計算モデル (小原 2011)22 / 34
行列-行列積の並列計算 (1)
A = t(a1, . . . , an)
行列Aを 1行ずつ行ベクトル a jに分割し,Bとの積を各 serverに割り振る
A · B!!!!!!!!!!!!" #
$$$$$$$$$$$$%
a1 · B a2 · B a3 · B
23 / 34
実験 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
実験 1: 行ベクトルに分割した場合の計算時間(分割次数 8次)
実験結果
予想ほど計算がスケールしない
行列Aを 1行ずつ serverに振り分けているので,通信コストが大?
25 / 34
行列-行列積の並列計算 (2)
A = t(A1| · · · |Al), l + n
行列Aを serverの個数分の行ベクトルブロックAjに分割し,
Bとの積を各 serverに割り振る
A · B!!!!!!!!!!!!" #
$$$$$$$$$$$$%
A1 · B A2 · B A3 · B26 / 34
実験 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
Horner法の部分の計算時間の比較
Table 4: Horner法の部分の計算時間の比較(1行毎の分割 vs.ブロック分割)
deg(g) = 63, dim(A) = dim(M) = 64, #division = 8
28 / 34
実験 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
実験 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
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
研究集会のお知らせ
九州大学マス・フォア・インダストリ研究所共同利用研究
数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research
and Collaboration with Industry
2013年 8月下旬(3日間)@九州大学伊都キャンパス
32 / 34
研究集会のお知らせ
数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research
and Collaboration with Industry
2013年 8月下旬(3日間)@九州大学伊都キャンパス
夏の RIMS共同研究「数式処理研究の新たな発展」のシリーズ招待講演者(海外,国内)を招聘予定
33 / 34
研究集会のお知らせ
数式処理研究と産学連携の新たな発展IMI Workshop on Develpment of Computer Algebra Research
and Collaboration with Industry
2013年 8月下旬(3日間)@九州大学伊都キャンパス
組織委員照井章 (筑波大学;研究代表者),小原功任 (金沢大学),濱田龍義 (福岡大学),横山俊一 (九州大学),穴井宏和 (富士通研究所/九州大学),横田博史 (東芝インフォメーションシステムズ)
詳細は追ってアナウンス予定です34 / 34