Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
RIKENADVANCEDINSTITUTEFORCOMPUTATIONALSCIENCE
2016年4月14日
国立研究開発法人理化学研究所計算科学研究機構�運用技術部門ソフトウェア技術チーム�チームヘッド
南�一生
計算科学技術 特論B
ËįIĦƔƽljơǏƦLJǍƁuÝ�ċ6ǕĦ
ħĤ�,uÝ�ċ6Ĩ
÷ÛƁ�è
• ƨǏƸǏƢǍƺdžǏƫžƔƽljơǏƦLJǍƁuÝĦ• ƔƽljơǏƦLJǍƁuÝ�ċ6ĮħĤ�,uÝ�ċ6ĨĦ• ƔƽljơǏƦLJǍƁuÝ�ċ6įħķŁń8�uÝ�ċ6ĨĦ• ƔƽljơǏƦLJǍƁuÝ�ċ6Ɓ]�ĮĦ• ƔƽljơǏƦLJǍƁuÝ�ċ6Ɓ]�į
�2016年4月14日 計算科学技術 特論B
��
• ��#• ;FK>O@IN5��� �#• �3��#• ����5GCLDB<
�
eqn:
2016年4月14日 計算科学技術 特論B
�
;r¦
2016年4月14日 計算科学技術 特論B
�
e*¦žĈÈ� �Äj
cKƁƌũſǖ !ƁĠNŽs*�ÄjƒìůžŴƏǓĦǙ¯e*Že*6ŴƏžÞ*ÞþƁe*¯žFƎƁİŻƁe*¯ƁjŭŽŮƏǓ
C1,3u1 +C1,4u2 +C1,5u7 =α1
C2,2u1 +C2,3u2 +C2,4u3 +C2,5u8 =α 2
C16,1u10 +C16,2u15 +C16,3u16 +C16,4u17 +C16,5u22 =α16
①の差分点について
②の差分点について
⑯の差分点について
・・・・・・・・・・
・・・・・・・・・・
#ČŽİį¯Ɓe*¯ŭYMŴƏƁŽİį!ƁĈÈ�ÄjžſƏǓĦųŸŭźż!Ɓs*�ÄjƂǒe*6ƀƌƎ��ƁƌũſĈÈ� �Äjƒìů�ƀf¿ŲŵƏ�ŭŽŮƏǓ
Ax = b2016年4月14日 計算科学技術 特論B
�
;r¦Ɓ�ß¼ſøö
cƁƌũſĈÈ� �ÄjƒÜŪƏǓ Ax = bA = I−B(I−B)x = bx = Bx +b
x0,x1,x2,x3
x(m+1) = Bx(m ) + b
limm→∝ x(m+1) = B limm→∝ x
(m ) + b
・・・①ĵƒ?Ɓƌũƀ�Ů¾ŴǓļĦƂ8�ä,Ǔ ・・・②
ŗƒŖƀ�"ų�µŴƏǓ
・・・③
Řƒ®ŸŴƾƟưNJƁ,ǚŤŤŤŤŤŤŤŤŤŤǎǎǎƒÜŪƏǓ ・・・④
űűŽřƁ�ĀƁ�ĕƒ=ƐƃŚƁƌũƀſƏ
・・・⑤
�ĕƾƟưNJƒœžūŰƃŚƂśƁ�ƀſƏ x = Bx +b ・・・⑥
śƂŘž#ůC�žſƏǓŻƆƎĈÈ� �ÄjǚŖƒìů�Ƃřƒ®ŸŴƾƟưNJƁ,ǚŤŤŤŤŤŤŤŤŤŤǎǎǎŤƒéŻŰƏ�ƀf¿ŴƏǓx0,x1,x2,x3
2016年4月14日 計算科学技術 特論B
�
A;r¦
x(m+1) = Bx(m ) + břƒìůŸƉƁ;r¦ƀŻŨżô�ŴƏ ・・・④ĵƂ¡/ǒĵƁ`ëèÑƂ#żĭŽſŨçÑ�ŽŧƏž�\ŴƏǓ
ìůƅŮ�Äj Ax = k ・・・⑦
A = D−E− FĵƒŝƁƌũƀSlǓĸƂĵƁ`ëw*ƁƇƁä,ǓĹƂĵƁ´Û��ëä,ƁÊ@ƒSŪŸä,ǓĺƂĵƁ´Û��ëä,ƁÊ@ƒSŪŸä,Ǔ
・・・⑧
ŝƒŜƀ�"ųރqƏ
Dx = (E+ F)x + k ・・・⑨
ރřƁ;r¦ƀŴƏžşƒqƏǓĦűƁ;r¦ƒ¯DžƢƹ¦žŨũǓĦ%�¼ƀƂŠƁíΦžſƏǓĦ¨½ŴƅŮƂħōĩĮĨ��ƁìƒqƏŸƉƀħōĨ��ƁìųŬ�¸ųſŨ¯ŽŧƏǓ
x(m+1) = D−1(E+ F)x(m ) +D−1k・・・⑩
aiixi(m+1) = − aij x j
(m ) + kjj=1j≠i
n
∑
xi(m+1) = −
aijaii
⎛⎝⎜
⎞⎠⎟x j(m ) + ki
aiij=1j≠i
n
∑・・・⑪
2016年4月14日 計算科学技術 特論B
A;r¦
ރšƁƌũƀSlŴƏǓ (D−E)x = Fx + k
(D−E)x(m+1) = Fx(m ) + k
aiixi(m+1) = − aij x j
(m+1)
j=1
i−1
∑ − aij x j(m ) + kj
j=1+1
n
∑
・・・⑫
šƒřƁ;r¦ƀŴƏžŢƒqƏǓĦ
űƁ;r¦ƒ¯ƜƗƨǎƥƖƯNJ¦žŨũǓĦ
%�¼ƀƂţƁíΦžſƏǓĦ¨½ŴƅŮƂħōĩĮĨ��ƁìƒqƏŸƉƀħōĩĮĨ��Ɓ��ëä,ƒ�¸ųżŨƏ¯ŽŧƏħljƛNjǍƨƁº·ĨǓĦ
?KƁƌũƀĪĦŋƒ\ÛŴƏƁƀŋīĮƁ�ƒ:°ŴƏƢǏƯƕǍƠƂ�KƁƌũſ:°Ē�žſƎĪljƛNjǍƨħIf:°Ĩŭº·ųżŨƏǓ
・・・⑬
・・・⑭
x(i) = a(i)* x(i −1)+ b(i)do i=1,n
ljƛNjǍƨŭŧƏžĪĦŋƀŻŨżƂ�YĒ�ŭŧƎ�,(µŭŽŮſŨǓ
2016年4月14日 計算科学技術 特論B
DžƢƹ¦ƋƜƗƨǎƥƖƯNJ¦ƂDŽƭƦdžƁíÎğhƒS�ųżƊ<�ŴƏ�ŭ�Z¼ƀï�ŲƐżŨƏǓĦƜƗƨǎƥƖƯNJ¦ƚljƧƲNJƁíÎğhƂ0ƿǏƧƁƌũƀljƛNjǍƨƁŸƉƀ�,6ŽŮſŨǓĦŶűŽħņĨƁƶƖƷǏƽNjǏǍ¦ƋħŇĨƁłĹĸīĶľĵķĽ¦ƒ¸ŨNJǏƽ&ƁljƛNjǍƨƀƌƏ�YĒ�ƒſůŴťĦ�YĒ�ƒſůŴ�Ž0I÷ÛƁƌũƀƶǏƱƗƘƔƁ�,íÎ��ƒ�ŨĤĆƀíÎ>ÝžſƏǓƆŸ�,6ŶƁƊƁƀƊ�¸>ÝǓ
A;r¦
(a)オリジナルスイープ (b)ハイパープレーンスイープ (c)RED-BLACKスイープ
計算順序(スイープ順序)参照関係 �ƉƁƶƖƸǏƽNjǏǍ&Ƃ
ljƛNjǍƨŭſŨǓĦƶƖƷǏƽNjǏǍđƁƇƀljƛNjǍƨŭº·Ǔ
ĥžěƁǖŻƁNJǏƽƀ'�wŴƏǓĦŶƐŷƐƁNJǏƽ&ƂljƛNjǍƨŭſŨǓ
2016年4月14日 計算科学技術 特論B
��
f (x) = 12(x,Ax)− (b,x)
f (x) = 12
aij xix j −j=1
n
∑i=1
n
∑ bixii=1
n
∑∂ f (x)∂xk
= 12
aikxii=1
n
∑ + 12
akjx jj=1
n
∑ − bk
∂ f (x)∂xk
= akixii=1
n
∑ − bk = 0
$n5č¦ħķĻ¦Ĩ
ŖƁį ƁĒ�ƒÜŪƏǓĦűƁĒ�Ɓ�a�HĢƒìůŸƉƀŊħœĨƁs*ƒ=ƎĭžūůǓĦŗƌƎŖƁ�a�HĢƒìů�ŭŅœĴņƁìƒqƏ�žCÌŽŧƏűžŭ*ŬƏǓĦ
�îžC�ſ�ƒU !ƁƾƟưNJŽäũǓĦŖžCÌſĒ�žųżŘƒÜŪƏǓĦŘƒw*Ž�îŴƏžřƁƌũƀſƏǓĦ
řƒœŽ s*ŴƏžŚƀſƏǓĦä,ĵƁ`Ãuƒ�ŨǔžūůűžƀƌƎśŭqƍƐƏǓĦśƂĈÈ� �ÄjŜƁw*åÂŽŧƏǓĦ
ųŸŭźżŘƁ�a�HĢƒìů�ŭĈÈ� �ÄjŜƒìůűžžſƏǓ
f (x) = 12ax2 − bx ・・・①
・・・②
・・・③
・・④
・・⑤
・・・⑥
f '(x) = ax − b = 0
Ax = b ・・・⑦
2016年4月14日 計算科学技術 特論B
��
$n5č¦ħķĻ¦Ĩ
ķĻ¦ƔNJƣljƩǃƁO�lƒcKƀÂŴǓĦűƁ�ƀáŦſƔNJƣljƩǃƁª·lŭŧƏǓĦ
ŘjƁŊħœĨŭ�a�ŭqƍƐƏƌũƀœŋƁ,ƒ¤ƉżäůǓĦ
ŐŋĦƂ¢eƾƟưNJŽŧƎ�Ũƀ¾ ų� ³ÈŽŧƏűžŭï�ŲƐżŨƏǓĦ
ųŸŭźż¢eƾƟưNJƂŀ!ƁĈÈ� �ÄjƀƂŀ�ųŬYMųſŨǓĦ
ķĻ¦ƒ�ũžŀ!ƁĈÈ� �ÄjƂĤŦŀIƁ;rŽ<�ŴƏǓĦ
ƆŸĵƁL��ŭØĎųżŨƏŬ_ĘųżŨƐƃ<�ŭĆůſƏuûƒzŻǓĦ
2016年4月14日 計算科学技術 特論B
��
M = UTU
!x = UxAU−1!x = b
U−TAU−1!x = U−Tb = !bU−TAU−1 = !A
A ≈MA ≈ UTU
U−TAU−1 ≈ U−T (UTU)U−1 = I
!A = U−TAU−1
!A!x = !b
0(µ�Ů$n5č¦ħķĻ¦ĨĵƀāŨ¡�`Ãä,ijĿƒÜŪƢNjƨƝǏ*ìŴƏǐŖjǑǓĦűűŽŗƁƌũſœƁÚŮ�ŪƒäũǓĦ
űƐƒ�źżƊžƁĵœĴņƒSlŴƏǐŘřjǑĦ
űűŽŚŽÚŮ�ŪŸĵƁuûƒƇżƇƏǓĦ
ĿƂśƒ®ŸŴƁŽŖƌƎŜƒ®ŸŴǓĦ
ŚƀŜƒċ¸ŴƏžŝƒƇŸųÚŮ�ŪŸĵƁuûƂ8�ä,ƀāŨűžŭ*ŬƏǓĦ
ųŸŭźżŞƀƌźżÚŮ�ŪŸä,ĵƁL��ƂĮƁFƎƀ_ĘųżŨƏƊƁžÜŪƍƐƏĦ
ÚŮ�ŪŸä,žƾƟưNJƀ`ŴƏĈÈ� �ÄjǚşƁ<�Ƃ�ŨƊƁž�oŽŮƏǓ
・・・①
・・・②・・・③・・④・・⑤
・・・⑥・・・⑦
・⑧
・・⑨
・・・⑩
2016年4月14日 計算科学技術 特論B
��
0(µ�Ů$n5č¦ħķĻ¦Ĩ�[#ƢNjƨƝǏ*ìƀƌƏ0(µķĻ¦ƔNJƣljƩǃƁO�lƒ�KƀÂŴǓĦ�[#ƢNjƨƝǏ*ìƂ!Ɓä,èÑƁ�ÚƁƇƒíÎŴƏǓĦǔèÑƀ`ŴƏƻƕNJƖǍƂíÎųſŨǓĦíÎƂä,ƾƟưNJÆǎƾƟưNJƨƛLjÆǎƾƟưNJƁGǎ&ÆǎĖÎŽ�wŲƐƏǓĦü׎ÂųŸ0(µČ*Ƃ0ĉ�"ǎpă�"ŽíÎŲƐƏǓ1.ICCG法のアルゴリズム
ステップ1: αk = (rik •(LLT )−1ri
k )/(Apik • pi
k )
ステップ2: xik+ 1 = xi
k +αk pik
ステップ3: rik+ 1 = ri
k − αkApik
ステップ4: β k = (rik+1 •(LLT ) −1ri
k+1 ) /(rik•(LLT ) −1ri
k )
ステップ5: pik+ 1 = (LLT )−1 ri
k+1 + β k pik
2016年4月14日 計算科学技術 特論B
��
ƔƽljơǏƦLJǍƁĦuÝ�ċ6
2016年4月14日 計算科学技術 特論B
��šţŬžÒ�Á�
Çj�[
¨tŁ¼Õ
ŜƃţŕŪśţ��
ŻƇŨśšƂƈRUN
ŭŵŪŜşƈŶŖƅ
ŻƇŜƃž�[
ßh)
DO)
�Çx¥
6ãÀD
ŴƊůŗŘŔ
Ù�ƉE²�;
şƈŶŖƃ
ŻƇŜƃž
ŻƇŜƃž
�ÇŀVEĿ!ħŎěŋıģşƊŭŕƈŜ
å�#)ƉåW¬şƊŭŕƈŜ
½Å
¾¤�Bĝĝĝĝĝĝĝĝĝ¾¤{�B
24
• ƔƽljơǏƦLJǍƁý�,uƒkŮ)ŴĦ
• ƽnjƪƭƤƁ8�u݃kŮ)Ŵ
��5FM=JHN=#$AE?N:�,��%
2016年4月14日 計算科学技術 特論B
��šţŬžÒ�Á�
Çj�[
¨tŁ¼Õ
ŜƃţŕŪśţ��
ŻƇŨśšƂƈRUN
ŭŵŪŜşƈŶŖƅ
ŻƇŜƃž�[
ßh)
DO)
�Çx¥
6ãÀD
ŴƊůŗŘŔ
Ù�ƉE²�;
şƈŶŖƃ
ïî�²��æŁŻƇŜƃž
ŻƇŜƃž
�ÇŀVEĿ!ħŎěŋıģşƊŭŕƈŜ
å�#)ƉåW¬şƊŭŕƈŜ
½Å
¾¤�Bĝĝĝĝĝĝĝĝĝ¾¤{�B
24
• ƔƽljơǏƦLJǍƁý�,uƒkŮ)ŴĦ
• ƽnjƪƭƤƁ8�u݃kŮ)Ŵ
��5FM=JHN=#$AE?N:�,��%
2016年4月14日 計算科学技術 特論B
��
ƔƽljơǏƦLJǍƁuÝ�ċ6ƁƨƮƭƽ
1. 2.
3.1
3.2
4. 5.
�#�W!s
řƊŲƅÁ�
å�#)
,�W¬4�£�D
åW¬)£Eµ
E{ļŁũƁƊűƈŜ
2016年4月14日 計算科学技術 特論B
�
�,²u*�ǎƛǏƴNJð�
1. 2.
3.1
3.2
4. 5.
�#�W!s
řƊŲƅÁ�
å�#)
,�W¬4�£�D
åW¬)£Eµ
E{ļŁũƁƊűƈŜ
2016年4月14日 計算科学技術 特論B
�
�#�W!s(��xÑ!sƉźƇŪś�W!s)
(1)şƊůŁxÑŒ!sį��ŀ�ĹĶ��źƇŪś(¾¤/Ï�)ŀ!&(2)şƊůŁE²oÚŁE�(3)ŻƇŜƃžŦƊţşƊůŁÆu(4)��źƇŪśŁ������GŒ_e(5)¾¤źƇŪś�Ł¾¤�W_e(á�#/C��#/Ó!�#ĞNŀ��/N**2ŀ��¢)(6)Ï�źƇŪś�ŁÏ��W_e(ŜƇƊŵƅÏ�ƉÞdÏ�ĞÞdâŀ��&ÞdÏ�/�¡ŀ��Ğ¢)
1.
Ēĉďēø
ėęĊú
��ïíï
ėęĊù
ėęĊû
ėęĊü
��ï
��ðíï
��ðææ
Ï�ï
ėęĊþ
ėęĊýæ
ûăƅƊŻ
ûăƅƊŻ
��3
�����G
źƇŪśïæĝ辤é
źƇŪśðæĝ辤éæ
ĝèÏ�é
źƇŪśñ
E²oÚæƉţŝƊƃŷƄŬŕ
�¤ƉÏ��W
�¤ƉÏ�¸¡Ŏ
C��#
Ó!�#
ÞdÏ�
Ăêêñŀ��
Ăŀ��
Þdâŀ��
(1)¾¤ƉÏ�źƇŪśŀĺģĻ������GƉşƊŭŕƈŜŁÁ�Œ²ģ3 Ł¾¤ƉÏ�źƇŪśŒÁ�į�Ŀŏ äŁ¾¤ƉÏ�źƇŪśŒřƊŲƅŁ�¶ĽįĻ�ģ ı(2)�#�W!sŁ¨tħōTĶ6ã¹zŀHıŏ�AWŁY9Œ�ŀŧƊŞŪŮ6ãE²oŀĞŇĶå�#E²oŀřƊŲƅĽĿŏ¾¤ƉÏ�řƊŲƅŒ�ģ ıæ
řƊŲƅÁ�2.
řƊæŲƅ
Ĝ
Ĝ
182016年4月14日 計算科学技術 特論B
��
LM+MSD法における測定区間毎のスケーラビリティ
1.0
10.0
128 256 512 1024並列数
スケーラビリティ
全体evolve_WFs_in_subspacem_ES_Vnonlocal_W
betar_dot_WFs
modified_gram_schmidt
m_XC_cal_potentialm_FFT_WF
��������������������������������������������
źƇŪś�ŁE²oÚĽţŝƊƃŷƄŬŕÁ�(�) →SrŁÁ�łŠźƅƊũƈ�ƉÛi�¢ŁÁ�Ĩ>ģ →ŠźƅƊũƈƉÛił°ğĿ:\ļ5ŃŐŏĶʼn|įģÁ�ĨļĩĿģ
2016年4月14日 計算科学技術 特論B
��
�,²u*�ǎĤ�,6
1. 2.
3.1
3.2
4. 5.
�#�W!s
řƊŲƅÁ�
å�#)
,�W¬4�£�D
åW¬)£Eµ
E{ļŁũƁƊűƈŜ
2016年4月14日 計算科学技術 特論B
��
ƔƽljơǏƦLJǍƒĤ�,uƒð�ŴƏŸƉƀƂǛ
ü*!Ŀ�#MŒTŏ�#)]�Œc�ıŏæüá�#Ó!ŒpI)ıŏæüÏ�oÚŒpI)ıŏæüƇƊůŖƈŵƃƈţŒ ĮĿģ
�-Ɓ�,²u*�ƁƻƘǏƩĦūƌƄĤ�,6ƁƨƮƭƽŽĦ
ƔƽljơǏƦLJǍƁĤ�,ƒē^ŴƏĦèJƒ©Ũ)Ŵ�ŭĎèĦ
2016年4月14日 計算科学技術 特論B
��
n á�#ÓĨ}ĹĻģĿģħƖ}ĹĻģŏ:2ŀ6ãĿģħƖ n ÞdÏ�oÚĨÉå�#oŀľŐĪōģŁ&2Œ-ʼnŏħƖ n ?8Ï�oÚĨÉå�#oŀľŐĪōģ<?ıŏħƖæn ƇƊůŖƈŵƃƈţĨÉå�#oŀX)įĿģħƖ
ĭŐōŁÁ�ĨÖ·
Éå�#Œ�aįĶ:2Ł�Z�−źƇŪś�ŀ��ŒÁ�ıŏ
2016年4月14日 計算科学技術 特論B
��
ストロングスケール測定
#�ƁHĢê�ƒ�\ƀųż\ŴƏ�¦ǓĦ
űűŽƂİŔİŔĮĭŭ#�ƁHĢê�ǓĦ
ǖƵǏƱ*1ŽƂǕƵǏƱŧŸƎƁHĢê�ƂİŔİŔıžſƏǓĦ
ĮĭƵǏƱ*1ŽƂǕƵǏƱŧŸƎƁHĢê�ƂįŔįŔįžſƏǓĦ
HĢƒǕÅģ�ƐƃàŨƁŽ\Ƃ�ŽŧƏǓĦ
�,�Ɓ{4ƂéŪƀůŨǓĦ
ǕƵǏƱ
ǖƵǏƱ
ĮĭƵǏƱ
2016年4月14日 計算科学技術 特論B
��
ウィークスケーリング測定
ĮƽnjƪƭƤŧŸƎƁHĢê�ƒ�\ƀųż\ŴƏ�¦ǓĦűűŽƂİŔİŔıŭĮƽnjƪƭƤŧŸƎƁHĢê�ǓĦǖƵǏƱ*1ŽƂ#�ƁHĢê�ƂİŔİŔĮĭžſƏǓĦĮĭƵǏƱ*1ŽƂ#�ƁHĢê�ƂIJŔİŔįıžſƏǓĦHĢƒç��Ətèŭ\Ƃ±ęŽŧƏǓ
ŸŹų�,�Ɓ{4ŭéŪ�ŨǓĦ
ǕƵǏƱ
ǖƵǏƱ
ĮĭƵǏƱ
2016年4月14日 計算科学技術 特論B
��
n á�#ÓĨ}ĹĻģĿģħƖ}ĹĻģŏ:2ŀ6ãĿģħƖ n ÞdÏ�oÚĨÉå�#oŀľŐĪōģŁ&2Œ-ʼnŏħƖ n ?8Ï�oÚĨÉå�#oŀľŐĪōģ<?ıŏħƖæn ƇƊůŖƈŵƃƈţĨÉå�#oŀX)įĿģħƖ
ĭŐōŁÁ�ĨÖ·
Éå�#Œ�aįĶ:2Ł�Z�−źƇŪś�ŀ��ŒÁ�ıŏ
ŶƁŸƉƀ
2016年4月14日 計算科学技術 特論B
��
ţŮƇƈŜ ţŝƊƅ
E² oÚ
ŗŕƊśţŝƊƅ
1ŻƇťŪŠŁ6ãŁ?ĩĮŒŧƊŞŪŮ6ãŁ?ĩĮŀ2őijŏ�#i
n ŧƊŞŪŮ6ãŒ�ʼnŏ n ƐŻƇťŪŠŁ6ã¹zĨŧƊŞŪŮ6ãĽ3�MĽĿŏŇļłĞţŮƇƈŜţŝƊƄƈŜļE²oÚƉƇƊůŖƈŵƃƈţƉÞdÏ�oÚƉ?8Ï�oÚŒ�DƉÁ�ıŏ(100ħōi��#Ňļ)
n �¿ŊŗŕƊśţŝƊƄƈŜļļĩŐŃĿĦ¯ģæn �¿Ł�DƉÁ�ļ6ãĨqŐŃ¼�ıŏ n 6ãĿīŐŃ�#MŒ�ĬĻŗŕƊśţŝƊƄƈŜļ?¹z�#Łb(Œ�Dıŏ
ストロングスケールとウィークスケーリング測定を使う
2016年4月14日 計算科学技術 特論B
�
E² oÚ
�#iÞdÏ�oÚ
ÞdoÚŁ&2Ľ<?įĿģħ�ÄíæÏ�Ł��k�ĨXģĽÞdÏ�oÚĨ<?ıŏí
?8Ï�oÚ
?8Ï�oÚŁ&2ł�®ŀ<?ıŏíæÏ�×ƉÏ�7iŒ�Äıŏļ<?Ł&2Œ¸wʼnŏí
?¹z�#ŁŗŕƊśţŝƊƄƈŜÁ�
n ����0¬ĿE²�;Œ��į100�M/1000�M/i+�MĽ~ÝŒÎĹĻļĩŏķīåģ�#Mļ�#W¬Œ�Äıŏ(ŗŕƊśţŝƊƄƈŜ�D).
n ŗŕƊśţŝƊƄƈŜĨàįģŊŁŊĢŏĨ rŏķī�DįĶģ. àįģ:2łƎ�¤oÚŒſŭƅ)įĻE�ĽſŭƅĽŁ�ŒÁ�ıŏ.
¾¤ŁźƇŪś�ŀElá�#ÓŁÁ�
Ï�oÚŁÁ�
�¤oÚĨ<?įĿģħ�ÄƏ�¤oÚĨ<?ıŐŃá�#ÓĨ}ĹĻģŏ�¤oÚ
2016年4月14日 計算科学技術 特論B
�
in grid points are kept within a part and do not affect the communications within the other part. The number of parts is taken up to the number of parallelisms in orbitals. We used this mapping in the experiments.
5. PERFORMANCE ANALYSIS The scalability and efficiency of the modified code which is parallelized in terms of grid points and orbitals as described above were evaluated with a simulation model named “Data-1,” depicting a SiNW with 19,848 atoms. The number of grid points and orbitals were 320x320x120 and 40,992, respectively. We used an MPI library tuned to the Tofu network to obtain higher performance. We also made an appropriate task mapping to the Tofu network.
5.1 Performance of DGEMM The principal kernel of the modified RSDFT code is a DGEMM routine of the BLAS. We optimized the DGEMM routine so as to utilize the special features such as SIMD instructions and the sector cache and hardware barrier synchronization capability of the SPARC64TM VIIIfx effectively. The sustained performance of DGEMM on a compute node is 123.7 giga-flops, or 96.6% of the peak performance. In particular, we found that the computation time as a result of keeping the block data on the L1 cache manually decreased by 12% compared with the computation time for the usual data replacement operations of the L1 cache. This DGEMM tuned for the K computer was also used for the LINPACK benchmark program.
5.2 Scalability We measured the computation time for the SCF iterations with
Data-1 on 12288, 24576, 26864 and 73728 cores (cases 1, 2, 3 and 4, respectively). The number of parallel tasks is the product of the number of parallel tasks in space and that in orbitals. The number of parallel tasks in space was fixed to 1,536, and the number of parallel tasks in orbitals was varied from 1, 2, 3 and 6. Therefore, the number of parallel tasks amounted to 1536, 3072, 4608, or 9216. Figure 6 plots the computation time and communication time for GS, CG, MatE in SD (MatE/SD) and RotV in SD (RotV/SD) . The horizontal axis in each figure stands for the number of cores. The theoretical computation time for cases 2, 3 and 4 is also ploted where the computation time of case1 is divided by 2, 3 and 6, respectively. They show the scalability in the parallelization for the orbitals. The measured computation time becames closer to the theoretical computation time as the number of parallel tasks in orbitals increased, and GS, CG, MatE/SD and RotV/SD were found to be well-parallelized in orbitals. The communication time with respect to the parallel tasks in space decreased in proportion to the number of parallel tasks in orbitals, because the number of calls of MPI functions for global and adjacent communications decreased in proportion to the reciprocal of the number of parallel tasks in orbitals. On the other hand, the global communication time for the parallel tasks in orbitals was supposed to increase as the number of parallel tasks in orbitals increased. The number of MPI processes requiring communications for the parallel tasks in orbitals, however, was actually restricted to a relatively small number of compute nodes, and therefore, the wall clock time for global communications of the parallel tasks in orbitals was small. This means we succeeded in decreasing time for global communication by the combination
Figure 6. Computation and communication time of (a) GS, (b) CG, (c) MatE/SD and (d) RotV/SD for different numbers of cores.
0.0
40.0
80.0
120.0
160.0
0 20000 40000 60000 80000
Tim
e per
CG
(sec
.)
Number of cores
theoretical computationcomputationadjacent/spaceglobal/spaceglobal/orbital
0.0
100.0
200.0
300.0
400.0
0 20,000 40,000 60,000 80,000
Tim
e per
GS
(sec.)
Number of cores
theoretical computationcomputationglobal/spaceglobal/orbitalwait/orbital
0.0
50.0
100.0
150.0
200.0
0 20,000 40,000 60,000 80,000
Tim
e per
MatE
/SD
(sec.)
Number of cores
theoretical computationcomputationadjacent/spaceglobal/spaceglobal/orbital
0.0
100.0
200.0
300.0
0 20,000 40,000 60,000 80,000
Tim
e per
Rot
V/SD
(sec.)
Number of cores
theoretical computationcomputationadjacent/spaceglobal/spaceglobal/orbital
(d) (c)
(a) (b)
ţŮƇƈŜţŝƊƄƈŜķīľţŝƊƅŒſŭƅ)įĶ�
2016年4月14日 計算科学技術 特論B
��
8�uÝD�Í¥\
1. 2.
3.1
3.2
4. 5.
�#�W!s
řƊŲƅÁ�
å�#)
,�W¬4�£�D
åW¬)£Eµ
E{ļŁũƁƊűƈŜ
2016年4月14日 計算科学技術 特論B
��
řƊŲƅŁ"Ŏ įĽW¬4�£ŁÂ²
íÎƛǏƴNJƁ+Ǝ)ųŕíÎƛǏƴNJƒ³ÈſƮƨưƽnjƠLjǃžųż+Ǝ)ŴĬĦ
uÝD�ÍƁñäŕ+Ǝ)ųŸƮƨư¶Qƒ�¸ų�ŦſuÝD�̓ñäŴƏĬĦ
uÝD�ÍƁð�ǎ¥\ŕñäÕ�ƒð�ųuÝD�ÍƁ�ƒÍ\ŴƏĬĦ
��ďéÆƎŕuÝD�̓]�ųŸPBƁƢǏƱ#�ƀmĝŴƏ��ƒ©Ũ)ŴĬĦ
ŶƐƍ��ƒ]�ųŸPBƁ��ďƒéÆƏĬĦ
ŶƐƍƒð�ų�Ó¼ƀ|¸ŴƏ�ƒ¥\ŴƏǓ
2016年4月14日 計算科学技術 特論B
��
SPARC64TM VIIで実装した技術を拡張
SPARC64™VIIIfx新規技術
➔���������� ������������� ������� ����
演算器
メモリ
レジスタ
ąĀāû
�(Ii�æƆŢţŧ`P
CPU
ÿĄúìøúü
科学技術計算を高速で処理するための拡張命令セット
ĈĀąĀāĄøúĆ 演算器演算器 ・・・・
レジスタレジスタ・・・・
コア
共有キャッシュ
ハードウェアバリア同期
ťśŧæŚƀŪšƁ
Ł:2ŁúĄćW¬åÐ)^³
2016年4月14日 計算科学技術 特論B
��
ĤuÝ6Í]æǎ]�ŽƁƬdžǏƳǍƠ
1. 2.
3.1
3.2
4. 5.
�#�W!s
řƊŲƅÁ�
å�#)
,�W¬4�£�D
åW¬)£Eµ
E{ļŁũƁƊűƈŜ
åW¬)£Eµ
å�#)ŁH£ŒElįĶşƊůŀHįĻ£DįĶ,�W¬4�£ŒEµıŏæ
À¾ƉŻƇŜƃŽƈŜƉŭŵŪŜ�vļĢŎ�vKi�ŀł?ĩĿ�vĽĿŏ
E{ļŁũƁƊűƈŜòŇļElĮŐĶşƊůŒĮōŀE{ŀËijĻ��ĽįĻũƁƊűƈŜıŏææ(1)�DƉE{�ļ�#W¬/,�W¬Œ�Dıŏ.(2)6ã��ģ įƉ�#W¬/,�W¬ŁĴŐĵŐŀĺģĻĝ6ã�Œ�ģ ı.(3)6ã�¼�Ɖ�ģ ĮŐĶ6ã�Ł¼�££DƉ¼�£ŁEµ
2016年4月14日 計算科学技術 特論B
��
Ï8ſ]�
2016年4月14日 計算科学技術 特論B
��
ŻƇŜƃžxÑŒ���ŀňĻ�¼Œ'īŏūƊƅƏæ
ýĔĖĘĖĉē÷î/ńýĔĖĘĖĉēõõĨHÈƏæ
ŻƇšƊŢƀ5ń įëƅƊŻë!Jŀ ´ĮŐŏŻƇŜƃžŁxÑŁ0º)Œ²ĤƏæ
ĠġŻƇŹœŖƅŭƊŧŀHUįĶ(�¼sY9Ŋ´�0¬Əæ
ŻƇŜƃžxѼsgfūƊƅƏ
ŤĽīőŇŎŏʼn
2016年4月14日 計算科学技術 特論B
��
ŀŁĶĦĿĻƒ�¸ųŸì��
ŀŁĶĦĿĻħǁNJƬƠljƭƱ¦ƀƌƎĈÈ� �ÄjĦƒìůƾǍƬǁǏƟƮƨưƽnjƠLjǃĨ
ĈŠŖśƅżƅũŜƄŪů
ŹœŖƈŜƄŪů
şƊŤŜƄŪů
2016年4月14日 計算科学技術 特論B
��
fk = Rk+1→k fk+1fk−1 = Rk→k−1 fkfk−2 = Rk−1→k−2 fk−1
f1 = R2→1 f2
A1u1 = f1
uk = Rk−1→kuk−1rk = fk − AkukAkuk = rk
uk+1 = Rk→k+1uk
rk+1 = fk+1 − Ak+1uk+1Ak+1uk+1 = rk+1%ܶÚ
NضÚ
}L¾¤
Ì�¼�¼
ŀŁĶĦĿĻƒ�¸ųŸì��
ŀŁĶĦĿĻħǁNJƬƠljƭƱ¦ƀƌƎĈÈ� �ÄjĦƒìůƾǍƬǁǏƟƮƨưƽnjƠLjǃĨ
ĈŠŖśƅżƅũŜƄŪů
ŹœŖƈŜƄŪů
şƊŤŜƄŪů
ĿĻƁƔNJƣljƩǃĦĦŤŤƒìůAu = f
2016年4月14日 計算科学技術 特論B
�
ƔƽljơǏƦLJǍƁ�ćƁõ�ħ�èĨ
èïé ¾�ŁţŧƊŮĽţŮŪŻŀ��æ
èðé ©ŎÍįƅƊŻŀ��æ
èñé ĒĎñĕŠźƅƊũƈŀ��æ
èòé żŖŰţk4ŁƅƊŻļŨŗƈŠŖśƅĽ��æ
èóé %ܶÚƅƊũƈĽ��æ
èôé ŨŗƈŠŖśƅRŁÌ�¼�¼Ľ��æ
èõé Żƃţk4ŁƅƊŻļŔŪŻŠŖśƅĽ��æ
èöé NØ¶ÚĽ��æ
è÷é }L¾¤Ľ��æ
èïîéŔŪŻŠŖśƅ�ŁÌ�¼�¼
2016年4月14日 計算科学技術 特論B
�
ƔƽljơǏƦLJǍƁ�ćƁõ�ħÁóĨ
èïé ĖĕĖĐñŒÆuŁ¨t%ܶÚ��Ľ$mæèðé ŹœŖƈŜƄŪůħōşƊŤŜƄŪůŅŁ¶Ú��Œ�ÄįĶæ
èñé ĒïĐëĒðĐëĒñĐłĒïëĒðëĒñŀ¨2æ
èóé ĴŁ�ĝďēĘčĖĕèNضÚéëĖčėďČè}L¾¤ƍëĕėďēĚƌÌ�¼�¼éĽ�Äæ
èôé ĖĕĖĐñŁƅƊŻxÑÆuæèõé ĒñĐëĒðĐëĒïĐŁƒÖƅƊŻxÑ
call rprj3(r(ir(k)),m1(k),m2(k),m3(k),r(ir(j)),m1(j),m2(j),m3(j),k)
subroutine rprj3( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k )
k
j
rprj3:制限補間
m1,m2,m3はプロセス分散されている
mi(1,k),mi(2,k),mi(3,k)
do k = lt,1,-1 do ax = 1,3 mi(ax,k) = ・・ mip(ax,k) = ・・ enddo enddo
setup
lt=lt_default=9
call rprj3(r(ir(k)),m1(k),m2(k),m3(k),r(ir(j)),m1(j),m2(j),m3(j),k)
subroutine rprj3( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k )
k
j
rprj3:制限補間
m1,m2,m3はプロセス分散されている
mi(1,k),mi(2,k),mi(3,k)
do k = lt,1,-1 do ax = 1,3 mi(ax,k) = ・・ mip(ax,k) = ・・ enddo enddo
setup
lt=lt_default=9
call rprj3(r(ir(k)),m1(k),m2(k),m3(k),r(ir(j)),m1(j),m2(j),m3(j),k)
subroutine rprj3( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k )
k
j
rprj3:制限補間
m1,m2,m3はプロセス分散されている
mi(1,k),mi(2,k),mi(3,k)
do k = lt,1,-1 do ax = 1,3 mi(ax,k) = ・・ mip(ax,k) = ・・ enddo enddo
setup
lt=lt_default=9
2016年4月14日 計算科学技術 特論B
��
ƔƽljơǏƦLJǍƁ�ćƁõ�ħÁóĨ
èïé ĕėďēĚŁƅƊŻxÑÆuæèðé ēñëēðëēïŁƒÖƅƊŻxÑæèñé ēïëēðëēñłĒïëĒðëĒñŀ¨2
èïé ĖčėďČŁƅƊŻxÑÆuæèðé ēñëēðëēïŁƒÖƅƊŻxÑæèñé ēïëēðëēñłĒïëĒðëĒñŀ¨2
2016年4月14日 計算科学技術 特論B
��
ƔƽljơǏƦLJǍƁ�ćƁõ�ħÁóĨ
èïé ďēĘčĖĕŁƅƊŻxÑÆuæèðé ĒĒñëĒĒðëĒĒïŁƒÖƅƊŻxÑæèñé ĒĒïëĒĒðëĒĒñłĒïëĒðëĒñŀ¨2
èïé �·ƓŠźƅƊũƈĽŊ��׳ĒïëĒðëĒñŁ?ĩĮŀ�AįĻģŏƏæ
èðé ĒïëĒðëĒñŁ!&łľĤĿĹĻģŏħƖæ
2016年4月14日 計算科学技術 特論B
��
ƯǏƫ*1Ɓõ�
èïé ĒïŁF½ƉDªƉ.�ŀĺģĻÆņŏèïé ėčĘęĕŠźƅƊũƈļÔ#ƕĒďĝħō �ĮŐĻģŏ
èïé ėčĘęĕŁÃQÓŀŢƀƈŻıŏ
2016年4月14日 計算科学技術 特論B
��
èïé ėčĘęĕ�ŁÔ#ƕĒďŒÆņĶ¨tƎŻƇťţ!&ĮŐĻģŏĨ$m
ƯǏƫ*1Ɓõ�
2016年4月14日 計算科学技術 特論B
��
ƨơǏLjƹljƮƕƁõ�
ŻƇťţŁƇƊůæŖƈŵƃƈţłæ��įĻģĿģæŸƊśW¬�Ƒç
BL L I B IF L BPBI
1KKGF F I KBL L I B IF LM
4G KMBAM :59 :59 % 418 :7 :7 % 418
) ( () . /./ - ( . 1KKGF F I
( / ( (/ ( () * / - ( . L BMM( ( /. ( ( (/. * . ( () - (/* L BMM (
* - ( . ( )* ( )-- * .) */-* - ) . L BMM( ) ( )(*/ ( * * . /)(/ - )()) L BMM )
:B EL ODEKO :B EL ODEKO4G KMBAM EFK62% % 418 7:3
)( ))/. ( )(- *. -/*- 1KKGF F I
. .. ( ).( *. -/) L BMM( . - ( -( *. - - L BMM (
* - . ) - ( - ( *. -/. L BMM( ) . ( -*() *. . / L BMM )
4532��+"�6)*(!"% � *!(*&�'� 6&('",(*6�6� *!(*&�'� 66666�������������������������������������������������������������������������������������66666666�*(� ++6�6666�������������������������������������������������������������������������������������
6666666666666�%�)+ ��+�666666�+ *�+�6666�0+, &�+�666666666��%%6666����������������������������������������������������������6666666666666666� ����66666������6666666������666666666666�6666�%%6�66666666666666666������666666������6666666������6666666666���6666* +"�6�66666666666666666�����666666������6666666������6666666666���6666"', *)6�66666666666666666�����666666�����6666666������6666666666���6666)+"'.6�66666666666666666�����666666������6666666������6666666666���6666*)*#6�
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6)*(!"%
�������������������������������������������������������������������������������������66666666�*(� ++6�6666�������������������������������������������������������������������������������������
6666666666666�%�)+ ��+�666666��",�+�666666666�0, 666666666��%%6�6666666���6666666����6666�������666�����0, ��6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666������6666666�����666666666����66666666�����666666666���6666666666 ��6666666666 �666666666���6666�%%6�6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"��(&&�*�'$�66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"��(&&�+"1 �66666666666666666�����6666666������6�� �������666666666��666666666666�666666666666�666666666666�666666666��6666&)"�"* �.�66666666666666666��� �6666666������66���� ���666666666��666666666����6666666666 ��6666666666 �6666666666���6666&)"�+ '��66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�!"'�%"1 �66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�"'",�66666666666666666����� 6666666������6666666������666666666��666666666��666666666666�666666666666�666666666666�6666&)"�/�",�66666666666666666������6666666�����666666��� � 66666666666��66666666666��666666666666�666666666666�666666666666�6666&)"��%%* �-� �66666666666666666�����6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"���**" *�66666666666666666������6666666������666666�������666666666666 666666666666 666666666666�666666666666�666666666666�6666&)"����+,�66666666666666666������6666666������666666�������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�* �-� �
6666666666666�%�)+ ��+�666666��",�+�666666666�0, 666666666��%%6�6666666���6666666����6666�������666�����0, ��6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666������6666666������666666666����666666666�666666666����6666666666���6666666666���666666666���6666* +"�6�6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666������6666666������6�� �������666666666���666666666666�666666666666�666666666666�666666666���6666&)"�"* �.�66666666666666666��� ��6666666������66����� 666666666���6666666666��6666666666���6666666666���6666666666� �6666&)"�+ '��66666666666666666�����6666666������6666666������666666666���666666666���666666666666�666666666666�666666666666�6666&)"�/�",�
�·��ŁčđĉĕėoÚæ��ļïõėčċ
èïé ƓŻƇťţŁ�DƏŗŕƊśţŝƊƄƈŜ�D
2016年4月14日 計算科学技術 特論B
��
ƨơǏLjƹljƮƕƁõ�
BL L I B IF L BPBI
1KKGF F I KBL L I B IF LM
4G KMBAM :59 :59 % 418 :7 :7 % 418
)/ ) * .) ** (). ( (- */ ) (- - (- 1KKGF F I
)/ ) * ( / * ( ( (- * * ( - (-(. L BMM)/ ) - ( / (- ( (-/ * / ( - ( - L BMM -)/ ) * ( / . ( ( (. * ./- - (- L BMM .
0
:B EL ODEKO :B EL ODEKO4G KMBAM EFK62% % 418 7:3
)/ ) * ( . - ( ( )* */ ) /( 1KKGF F I
)/ ) * . --) ( ( . */ )) ) L BMM)/ ) - . -) ( ./ */ ) *- L BMM -)/ ) * . ** ( . */ ) - L BMM .
0
�4532��+"�6)*(!"% � *!(*&�'� 6&('",(*6�6� *!(*&�'� 66666�������������������������������������������������������������������������������������66666666�*(� ++6�6666�������������������������������������������������������������������������������������
6666666666666�%�)+ ��+�666666�+ *�+�6666�0+, &�+�666666666��%%6666����������������������������������������������������������6666666666666666������66666��� ���6666666�����666666666666�6666�%%6�6666666666666666�����66666��������6666666������6666666666���6666* +"�6�66666666666666666�����666666�����6666666������6666666666��6666"', *)6�6666666666666666����666666�������6666666������6666666666���6666)+"'.6�66666666666666666���666666�������6666666������6666666666��6666*)*#6�
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6)*(!"% �������������������������������������������������������������������������������������66666666�*(� ++6�6666�������������������������������������������������������������������������������������
6666666666666�%�)+ ��+�666666��",�+�666666666�0, 666666666��%%6�6666666���6666666����6666�������666�����0, ��6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666�� �6666666������666666666����66666666�� �66666666��� 666666666���666666666��666666666����6666�%%6�6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"��(&&�*�'$�66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"��(&&�+"1 �66666666666666666������6666666������6�� �������666666666���666666666666�666666666666�666666666666�666666666���6666&)"�"* �.�66666666666666666��� 6666666������66����� �666666666����666666666� �666666666���666666666��6666666666���6666&)"�+ '��66666666666666666�����6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�!"'�%"1 �66666666666666666����6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�"'",�66666666666666666�����6666666������6666666������666666666���666666666���666666666666�666666666666�666666666666�6666&)"�/�",�66666666666666666����6666666�����666666��� � 66666666666��66666666666��666666666666�666666666666�666666666666�6666&)"��%%* �-� �66666666666666666������6666666������6666666������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"���**" *�66666666666666666������6666666������666666�������666666666666 666666666666 666666666666�666666666666�666666666666�6666&)"����+,�66666666666666666������6666666������666666�������666666666666�666666666666�666666666666�666666666666�666666666666�6666&)"�* �-� �
6666666666666�%�)+ ��+�666666��",�+�666666666�0, 666666666��%%6�6666666���6666666����6666�������666�����0, ��6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666��� �6666666������666666666����666666666����666666666��6666666666���6666666666 ��666666666��6666* +"�6�6666�����������������������������������������������������������������������������������������������������������������������������������������66666666666666666����6666666������6�� �������666666666� �666666666666�666666666666�666666666666�666666666� �6666&)"�"* �.�66666666666666666��� 6666666������66�����������666666666� �666666666���6666666666���6666666666 ��6666666666��6666&)"�+ '��66666666666666666�����6666666������6666666������666666666� �666666666� �666666666666�666666666666�666666666666�6666&)"�/�",�
6666666666666�%�)+ ��+�666666��",�+�666666666�0, 666666666��%%6�6666666���6666666����6666�������666�����0, ��
ŻƇťţŁƇƊůæŖƈŵƃƈţłæ��įĻģĿģæŸƊśW¬�Ƒç
�·��ŁčđĉĕėoÚæ��ļòîėčċ
èïé ñðŻƇťţŁ�DƏŗŕƊśţŝƊƄƈŜ�D
2016年4月14日 計算科学技術 特論B
��
ƨơǏLjƹljƮƕƁõ�
ŗŕƊśţŝƊƄƈŜļƓŻƇťţħōñðŻƇťţļ��ļïõėčċħōòîėčċŅE²oÚĨ<?Ə§ðíó�Ł<?Əæ
�·ƓŠźƅƊũƈŊ3yŁ�4Əæ
įħįŸƊśW¬�łĞƑƋļ=őōIJƏæ
ƐŻƇťţŁ�¤×Ĩ3İĿōE²oÚĨNńŏļŸƊśW¬�Ŋ±ĸŏłIJƖæ
ÆuŁ¨tŗŕƊśţŝƊƅ�DļĢĹĶĨñðŻƇťţļł��ŁŖŧƆƊšƂƈ7iĨðíó�ŀÀDĮŐĻģĶĨ$mƏæ
ţŝƊƃŷƄŬŕĽįĻł¯@ļĢŏĨ!ħĹĶƏæ
ŇĶƇƊůŖƈŵƃƈţŊ¯@ļĢŏĭĽĨ!ħĹĶƏæ
�#)Ł»�ļł6ãĿįƏ
2016年4月14日 計算科学技術 特論B
��
�#�W!sè¨té
�����G
E²oÚæƉţŝƊƃŷƄŬŕ
�¤ƉÏ��W
�¤ƉÏ�¸¡Ŏ
C��#¯@ Ăŀ��
řƊæŲƅ
Ĝ
Ĝ¯@
¯@
¯@
%ܶÚ
NضÚ
}L¾¤
¦n�¼
C��#
C��#
C��#
Ăŀ��
Ăŀ��
Ăŀ��
Ĝ
Ĝ
2016年4月14日 計算科学技術 特論B
�
) (
��źƇŪśA ��źƇŪśB
��źƇŪśC ��źƇŪśD
AB
C D
2016年4月14日 計算科学技術 特論B
�
�¤
?8�
?8�
ÞdÏ�
ÞdÏ�
1000Proc.
8000Proc. ŻƇťţ�1
ŻƇťţ�1
�¤
) (
ƇƊůŖƈŵƃƈţŁÁ�
Ï�oÚŁÁ�
2016年4月14日 計算科学技術 特論B
��
�,uÝ�ƁĦǀưNJƴƭƟ
2016年4月14日 計算科学技術 特論B
51
1 ŔŻƄŝƊšƂƈĽŴƊůŗŘŔŁ�#MŁŽţżŪũæèŔŻƄŝƊšƂƈŁ�#M�Êé
2 á�#ÓŁ}A
3 ?8Ï�ŀĦīŏ?ĩĿÏ�ŠŖŤĞÏ�7iŁ��
4 ŹƅųƊůŀĦīŏ?8Ï�Ł��
5 ÞdÏ�ŀĦīŏ?ĩĿÏ�ŠŖŤĞÏ�7iŁ��
6 ƇƊůŖƈŵƃƈţŁ��
�,uÝ�ƁǀưNJƴƭƟ
�Ňļ�įĶÆuŒElıŏĭĽŀŌŎ��źƇŪś�ŀ�#W¬�Ł6ãĨĢŏĨ�¸ĮŐŏƏæĴŐōŒ!sıŏĽķģĶģ��ŁƔ�ŀ!äĮŐŏĽ«ĥŏƏ
2016年4月14日 計算科学技術 特論B
52
ƔƽljơǏƦLJǍžƶǏƱƗƘƔƁǂƨǁƭƬ
§�bĐƒ�ũË�9µíÎƁPBƒÜŪƏǓĦ
ĚXƁƙƴNJƞǏƷǍƱ�,ƁƇ]æŲƐżŨƏž�\Ħ
9X��ƀ`ų�T�ƁĚXį�žÜŪƏžƙƴNJƞǏƷǍƱƁ�ƂǒūūƌŶ9X�ǚŀŔǖžſƏǓĦ
ŀĴĮĭĭĭĭſƍƙƴNJƞǏƷǍƱ�ƂįĭĭĭĭÄiŽŧƏǓĦ
űƁPBǒ�VŽƊįĭĭĭĭ�,ƆŽųŬ.ĊųſŨǓĦ
ą�ƁRVƋíÎƁÐiƒÜŪƏž�»�,Žĕ¹žſƏǓĦ
§�ÌŶƁ�Ɓ*1ƒÔƇBƑŵŸ�,6ŭtèžſƏǓĦ
òÒƂǘI½Ɓ÷ÛŽ]�ƒÂŴǓ
2016年4月14日 計算科学技術 特論B
53
Ĝ�,ČƁ¢Y
Ë�9µƔƽljơǏƦLJǍƁ(µƼnjƭƟijƵǍnjǏƛNJĞƁíÎČ*ƒ�ƀÂŴǓĦ��,ŽƨưnjǍƠƨơǏNJŽ\ǓĦŴŽƀűƁ�,iŽƨơǏNJųżŨſŨǓ9JƂ ƿǏƧƀÂŴǓ
! BLAS Level3R�$����! 584:)8<@<?0&�^nelR#�!��
�BLAS Level3�HWK^nelQ( '2)MDNR�$���R���"Y��IK(7=:>9/)021��[ilhZa +p�S]k`dlRfmc���R���"o�S�$���R���"OCVp
��$���Q�DoXJEQ�KP%S��INDVFo���"F��IND
Vp�TOofmc�����*q.-,---��+TOR���IE�OGPELKFo
�����TO���F(TUoa_njgkb\F��IKp)�
�
���
���
���
���
���
����
����
����
����
����
����
�� �� �� ���
�����
���� ��
���
���
���
���
���
����
����
����
����
����
����
��������� ��
��� �������
0
2
4
6
8
10
12
14
16 32 64 128
[s]
�����
original:0calc.23axis:0calc.23axis:0comm.
6;.� A�B�
.3 HPCS2012
! BLAS Level3R�$����! 584:)8<@<?0&�^nelR#�!��
�BLAS Level3�HWK^nelQ( '2)MDNR�$���R���"Y��IK(7=:>9/)021��[ilhZa +p�S]k`dlRfmc���R���"o�S�$���R���"OCVp
��$���Q�DoXJEQ�KP%S��INDVFo���"F��IND
Vp�TOofmc�����*q.-,---��+TOR���IE�OGPELKFo
�����TO���F(TUoa_njgkb\F��IKp)�
�
���
���
���
���
���
����
����
����
����
����
����
�� �� �� ���
�����
���� ��
���
���
���
���
���
����
����
����
����
����
����
�����
���� ��
��� �������
0
2
4
6
8
10
12
14
16 32 64 128
[s]
�����
original:0calc.23axis:0calc.23axis:0comm.
6;.� A�B�
.3 HPCS2012
2016年4月14日 計算科学技術 特論B
54
Ĝ�,ČƁ¢Y
Ë�9µíÎƁƔƽljŽƙƴNJƞǏƷǍƱ�,ƒ�¸ųżŨƏPBƁĜ�,Čŭ¢źżŨƏ�Ǔ
subroutine m_es_vnonlocal_w(ik,iksnl,ispin,switch_of_eko_part) | +-call tstatc0_begin | | loop_ntyp: do it = 1, ntyp | | | loop_natm : do ia = 1, natm ---------原子数のループ | | | +-call calc_phase | | | | T-do lmt2 = 1, ilmt(it) | | | | +-call vnonlocal_w_part_sum_over_lmt1 | | | | | +-call add_vnlph_l_without_eko_part | | | | | | subroutine add_vnlph_l_without_eko_part() | | | | | | | T-if(kimg == 1) then | | | | | | | | T-do ib = 1, np_e ---------エネルギーバンド並列部 | | | | | | | | | T-do i = 1, iba(ik) | | | | | | | | | V-end do | | | | | | | | V-end do | | | | | | | +-else | | | | | | | | T-do ib = 1, np_e ---------エネルギーバンド並列部 | | | | | | | | | T-do i = 1, iba(ik) | | | | | | | | | V-end do | | | | | | | | V-enddo | | | | | | | V-end if | | | | | | end subroutine add_vnlph_l_without_eko_part | | | | V-end do | | | V-end do loop_natm | | V-end do loop_ntyp end subroutine m_es_vnonlocal_w
2016年4月14日 計算科学技術 特論B
55
VNą�ƀūŰƏVŮſą�ƤƖƩǎą�I�
ą�ƂNjƖƮǍƦǏŭHĢƀſƏPBžƷǍƱgŭHĢƀſƏPBŭŧƏǓĦAƵǏƱŽƾƟưNJƯǏƫƒÖGųƨƛLjǏ�ƒ¤ƉǒƨƛLjǏ�ƒƵǏƱđŽŅŌŌŐʼnňŒŇʼnŴƐƃàŨƁƀǒ#ƵǏƱŽdVſƾƟưNJƒŅŌŌŐʼnňŒŇʼnųżŨƆŵƓŬǛĦűƁPBƂǒƌŰŨſƷǍƱgƒ«úųżŨƏűžƀſƏǓĦ�ċ6ŲƐŸVNą�ƁLjƖƼLjljƒ�źżŨƆŴŬǛĦ�ċſLjƖƼLjljž�ċ6ŲƐżŨſŨLjƖƼLjljŽƂ��uÝeŭº·ŴƏPBŭŧƏǓĦaŲſƯǏƫƒġÙƀVNą�ųżŨƆŵƓŬǛ
ƆžƉƏűžŭ)�Əą�ƂƆžƉżI�ƒ¬ƍŴ�ŽNjƖƮǍƦǏƴƭƟƒì«ŴƏűžŭŽŮƆŴǓĦVNą�LjƖƼLjljŽ>Ýſą�žC�ſ�ƒė}ą�ŽÞ�ųżŨƏƌũſPBŭŧƏǓĦuÝƁàŨVNą�LjƖƼLjljƁ�¸ƒ~WųƆŴǓ
���
Efficiency of Mapping to the Tofu network - Gram-Schmidt -
Optimal Mapping ! avoid some conflict among sub-communicators�� ����������selected Tofu specific communication algorithm
• SiNW 19,848 atoms • Grids : 320x320x120 • Orbitals: 41,472 • Total process number: 12,288
" Grid space: 2,048(32x32x2) " Orbital: 6
• Torus Mapping :32x32x12�
1D Optimal 3D Communication Wati/Orbital 12.929 8.295 Communication Grobal/Orbital 17.118 3.726 Communication Global/Space 33.565 3.957 Computation 32.050 32.111
0.0##
20.0##
40.0##
60.0##
80.0##
100.0##
120.0##
Tim
e (s
ec.)� MPI_Bcast�
MPI_Allreduce�
2016年4月14日 計算科学技術 特論B
56
ƻNJƵǏƱƀūŰƏVNą�Ɓº·
ĺĺŃƒƻNJƵǏƱŽ]�ŴƏ�Ƃu݃ãųů36ŲŵƏǓĦË�9µƔƽljơǏƦLJǍƁĺĺŃƒEƈ(µƼnjƭƟƁ�ƒcKƀÂŴǓĦ��,ŽƨưnjǍƠƨơǏNJŽ\ǓĦŴŽƀűƁ�,iŽƨơǏNJųżŨſŨǓĦ
�,ÿƁĂ2ƀƌƎĺĺŃƒƻNJƵǏƱŽſů�ČƁƵǏƱƀĕƏűžŭ)�ƏPBŭŧƏǓĦòÒƂǘI½Ɓ÷ÛŽô�ŴƏǓĦķĻ¦Ɓ&ÆíÎƁƌũƀƻNJƵǏƱŽVNą�ƒ]�ŴƏtèŭŧƏíÎƂ¬ƍŴűžŭŽŮſŨǓĦŶƁPBƂǒĤĆſƶǏƱƗƘƔƔƦƨư�݃�¸ŴƏÌƁ`(ƒžƏǓ
! FFTA�#���! "� �
FFTJ�CNWRV@( $8)<7=A�#��A��!J��9;(.203/)&*,+��LTVSKP�'Y�B�#��A��!X�B�#��A��!>6HYFFTBXFFTWJ�7=7HY
���@BX����A��8��9;;DXMUOQVAEAFG�!8�78X%�@?H@<I��!8��:HY
�
�����
���
����
����
����
����
����
�� �� �� ��
����� ��
���
����
����
����
����
����
�����
����� ��
0
2
4
6
8
10
12
14
16
18
16 32 64 128
[s]
�����
original:0otheroriginal:0DGEMMoriginal:0FFT2:axis:0other2:axis:0comm.2:axis:0DGEMM2:axis:0FFT
-1(�4�5�
)) HPCS2012
2016年4月14日 計算科学技術 特論B
57
ė}ą�ƀūŰƏVŮſą�ƤƖƩǎą�I�
ė}ą�ŭƴƭƟƀſƏPBǒƔNJƣljƩǃƒé¾Ŵ�Žė}ą�ƒƋƉżųƆũűžŭ)�ƏPBŭŧƏǓĦ�ŪƃķĻ¦0(µƁnjǏƛLjƖƩ6ÌƁPBǓĦĄ7Éſ�,6ŭą�uÝƁv6ƒyůPBŭŧƏǓĦűƐƍƁòÒƂİI½Ɓ÷ÛŽô�ŴƏǓĦ
2016年4月14日 計算科学技術 特論B
58
njǏƱƖǍƷLjǍƨƁº·
njǏƱƖǍƷLjǍƨƁº·ƂáŦſ9JŭŧƏǓĦË�ƂÐXƁíÎŽ�đºbƀƌƎÐXƁƷLjǍƨŭSƑƏƌũſPBǓĦ4¼ùâ*�ƒ=Ə�¦ÌáŦſx¦ŭÀÇŲƐżŨƏǓĦŶƁ�ƦƨƮǃƁTŭ9JžſƏPBƊŧƏǓĦòÒƂǗI½�Ĕƀ÷ÛŴƏǓĦ��Ɓ�Ƃ(µƼnjƭƟ£ƀƨơǏLjƹljƮƕƒ\ųŸ�Ǔ
D�*/ 2"-1����4�"#%+;7�IUY8
^-`^
^ .` ._ .^ ._ .�NCTM
NICAM���2�# 20,&0[gl07 rl00agl14 rl07\�O��NC�DK��
XS02$1=Z[phystep,dynstep\�NCTM�53�P��
DVLZ�;.1��F@9����
? ^.`-1 NICAM phystep ��2�# 20NCTM
XS,&0 gl14[81920(2'\���� rd_driver!)02$1�DVLZ� 20QRH6�����
gl7agl13Z�NC����� rd_driver!)02$1�DVLZ�G<�� �W����
? ^.`-2 NICAM dynstep ��2�# 20NCTM
(2'J�A��� dynstep �DVLZ�A��:>����XS,&0 gl14[81920 (2'\��
��]DVLZ�BE�6�����
819202048051205 20 80 320 1280
2016年4月14日 計算科学技術 特論B
59
���
• ��#• ���!4��.8/7��40+1��-6-/P#
• ;FK>O@IN5��� �#• ��� �5�92"���5/75����:��-6-/P
• �3��#• )*&#(':�4"���5/75����5��:�-6-/P#
• ����5GCLDB<#• ����5GCLDB<� 40+1��-�:�-6-/P
2016年4月14日 計算科学技術 特論B