— 25 —SENAC Vol. 50, No. 1（2017. 1）［大学 ICT 推進協議会 2016 年度年次大会論文集より］

ʰಔࢎԽ෺ͷ༗ޮϞσϧʹର͢Δ༳Β͗ަ‫ࣅۙ׵‬ʱίʔυͷ

SX-ACE ޲͚࠷దԽࢁԼ ‫ ؽ‬1) , ࢁ࡚ ࠃਓ 2) , ߐ઒ ོี 3,4) ,٢Ԭ ঊ࠸ 2) , ౔Ӝ ޺‫ ل‬2) , খྛ ޿໌ 4,3) , ીࠜ लত 3,4)
1) ౦๺େֶ ৘ใ෦৘ใ‫ج‬൫՝, 2) ౦๺େֶ େֶӃ޻ֶ‫ڀݚ‬Պ,3) ౦๺େֶ αΠόʔαΠΤϯεηϯλʔ, 4) ౦๺େֶ େֶӃ৘ใՊֶ‫ڀݚ‬Պ
yamacta@tohoku.ac.jp

Performance Optimization of “Fluctuation exchange
approximation for an eﬀective model for cuprates” code
for SX-ACE .
Takeshi Yamashita1) , Kunito Yamazaki2) , Ryusuke Egawa3,4) ,Takuya Yoshioka2) ,Hiroki Tsuchiura2) ,Hiroaki Kobayashi4,3) , Hideaki Sone3,4)1) Information Infrastructure Division, Information Department, Tohoku Univ.
2) Graduate School of Engineering, Tohoku Univ.
3) Cyberscience Center, Tohoku Univ.
4) Graduate School of Information Sciences, Tohoku Univ.

֓ཁ

FFT Λ༻͍ͨ਺஋ԋࢉΞϓϦέʔγϣϯͰ͸ɺWindows ΍ Linux γεςϜ্Ͱ࣮ߦग़དྷΔ FFTW ϥΠϒϥϦ
͕޿͘ར༻͞Ε͍ͯΔɻैདྷ SX γεςϜͰ͸ඪ४Ͱ FFTW ϥΠϒϥϦɺ΋͘͠͸ͦͷΠϯλʔϑΣʔε͸ఏ‫ڙ‬͞Ε͓ͯΒͣɺ͜ͷΑ͏ͳΞϓϦέʔγϣϯΛ SX-ACE ޲͚࣮ߦΦϒδΣΫτͱ͢ΔͨΊʹ͸ɺASL ϥΠϒϥϦ
΁ͷίʔυमਖ਼ɺ΋͘͠͸ FFTW ͷιʔείʔυΛ SX-ACE ޲͚ʹίϯύΠϧͯ͠ϥΠϒϥϦԽ͢Δ͜ͱ͕ඞཁ
Ͱ͋ΔɻຊߘͰ͸ FFTW ϥΠϒϥϦΛར༻ͨ͠ΞϓϦέʔγϣϯΛ ASL Wrapper Λ༻͍ͯ SX-ACE ޲͚ʹίϯύΠϧ͢Δํ๏ͱɺSX-ACE ʹ͓͚Δߴੑೳԋࢉͷ࣮‫ݱ‬Λ໨తͱͨ͠࠷దԽख๏ʹ͍ͭͯࣔ͢ɻ

1 ͸͡Ίʹ

Ͱ͍Δɻਤ 1 ʹ 1999 ೥͔ΒຊηϯλʔͰऔΓ૊ΜͰ͍Δηϯλʔಠࣗͷ‫ڞ‬ಉ‫ڀݚ‬ɺֶࡍେ‫ن‬໛৘ใ‫ج‬൫‫ڞ‬౦๺େֶαΠόʔαΠΤϯεηϯλʔʢҎԼɺຊηಉར༻ɾ‫ڞ‬ಉ‫఺ڌڀݚ‬ʢJHPCNʣ՝୊͓Αͼֵ৽తϯλʔʣͷେ‫ن‬໛Պֶ‫ࢉܭ‬γεςϜ͸ɺ೔ຊి‫ࣜגؾ‬ϋΠύϑΥʔϚϯεɾίϯϐϡʔςΟϯάɾΠϯϑϥձࣾʢҎԼɺNECʣ੡ϕΫτϧ‫ܕ‬εʔύʔίϯϐϡʔ

ʢHPCIʣ՝୊࠾୒਺ͷਪҠΛࣔ͢ɻຊηϯλʔಠࣗͷ

λ SX-ACE Λओྗ‫͠ͱػࢉܭ‬ɺ൚༻ΞϓϦέʔγϣϯ‫ڞ‬ಉ‫ڀݚ‬͸߃ৗతʹ೥ 10 ՝୊΄Ͳ࣮ࢪ͞Ε͍ͯΔ͜

ͷ࣮ߦ‫ ͯ͠ͱڥ؀‬NEC ੡εΧϥ‫ܕ‬ͷฒྻίϯϐϡʔͱʹՃ͑ɺۙ೥Ͱ͸ JHPCNɺHPCI Λհͨ͠‫ڞ‬ಉ‫ݚ‬

λ LX406-Re2 ͷӡ༻Λ͍ͯ͠ΔɻҟͳΔಛੑΛ༗͢‫૿͕਺ڀ‬Ճ͍ͯ͠Δɻ͜Ε͸ɺηϯλʔͷ‫ڞ‬ಉ‫ڀݚ‬Λ

Δೋछྨͷ‫ػࢉܭ‬ͷӡ༻ʹΑΓɺར༻ऀͷ෯޿͍χʔ௨ͯ͠ϢʔβΞϓϦέʔγϣϯ͕ߴ౓Խɾେ‫ن‬໛Խ͠ɺζʹԠ͑ΔαʔϏεΛఏ‫͍ͯ͠ڙ‬Δɻද 1 ʹ͜ΕΒγ

JHPCNɺHPCI ࠾୒՝୊΁ͱεςοϓΞοϓ͓ͯ͠εςϜͷॾ‫ݩ‬Λࣔ͢ɻΓɺզʑͷ‫ܧ‬ଓతͳߴ଎Խࢧԉ‫׆‬ಈ͕Ұఆͷ੒ՌΛ্

·ͨຊηϯλʔͰ͸ 1999 ೥ΑΓɺϢʔβΞϓϦέʔ

͍͛ͯΔ͜ͱ͕෼͔Δɻ

γϣϯͷߴਫ਼౓Խɺେ‫ن‬໛ԽͷࢧԉΛ໨తͱͨ͠‫ڞ‬ಉҎԼͰ͸ߴ଎Խࢧԉ‫׆‬ಈͷҰྫͱͯ͠ɺʰಔࢎԽ෺‫౓੍ڀݚ‬Λ࣮ࢪ͍ͯ͠Δɻར༻ऀɺ‫ػࢉܭ‬ՊֶΛઐ໳ͷ༗ޮϞσϧʹର͢Δ༳Β͗ަ‫ࣅۙ׵‬ʱίʔυͷɺͱ͢Δηϯλʔ‫ڭ‬һɺٕज़৬һɺ͓Αͼϕϯμʔٕज़

SX-ACE ޲͚࠷దԽࣄྫʹ͍ͭͯใࠂ͢Δɻऀ͕࿈‫ͯ͠ܞ‬ΞϓϦέʔγϣϯͷߴ଎ԽʹऔΓ૊Μ

— 26 —

SENAC Vol. 50, No. 1（2017. 1）

ද1αΠόʔαΠΤϯεηϯλʔେ‫ن‬໛Պֶ‫ࢉܭ‬γεςϜॾ‫ݩ‬ੑೳ

SX-ACE

LX406Re-2

NEC ϕΫτϧϓϩηοα
4‫ݸ‬276GFLOPS
256GFLOPS
256GB/sec
1MB/ίΞ

Intel(R) Xeon(R) E5-2695v2
12 ‫ݸ‬
230GFLOPS
4.9GB/sec
30MB (L3)ཧ࿦࠷େԋࢉੑೳ
࠷େϕΫτϧԋࢉੑೳϝϞϦ༰ྔϝϞϦόϯυ෯ϊʔυؒ௨৴଎౓

1‫ݸ‬276GFLOPS
256GFLOPS
64GB
256GB/sec
8GB/sec2‫ݸ‬
460GFLOPS
128GB
9.9GB/sec
7GB/secCPU ਺ཧ࿦࠷େԋࢉੑೳ
࠷େϕΫτϧԋࢉੑೳϝϞϦ༰ྔ

2,560 ‫ݸ‬
706.6TFLOPS
655.4TFLOPS
160TB

136 ‫ݸ‬31.3TFLOPS
8.5TB

CPU ੑೳ

໊শίΞ਺ཧ࿦࠷େԋࢉੑೳ
࠷େϕΫτϧԋࢉੑೳϝϞϦόϯυ෯

ADB / Cache
ϊʔυੑೳ

CPU ਺

γεςϜੑೳ

40ͨઢ‫ܕ‬Խ Elisashberg ํఔࣜΛղ͘͜ͱʹΑͬͯ௒఻

HPCI
JHPCN
共同研究

30

ಋసҠԹ౓౳͕‫ٻ‬ΊΒΕΔɻ͜ͷΞϓϦέʔγϣϯʹΑΓɺిࢠυʔϓ‫ܕ‬ಔࢎԽ෺௒఻ಋମͷΞϯμʔυʔ

件数ϓྖҬͰ৽ͨʹ௒఻ಋঢ়ଶ͕ग़‫͠ݱ‬ಘΔͱ͍͏ۙ೥ͷ࣮‫ݧ‬తใࠂ [1] ʹ͍ͭͯɺཧ࿦త‫͔఺؍‬ΒͷղੳΛ༩

20

͑Δ͜ͱ͕Ͱ͖Δɻ

2.2 ίʔυ֓ཁ

10༳Β͗ަ‫ࣅۙ׵‬Λ༻͍ͨઢ‫ܗ‬Խ Eliashberg ํఔࣜ

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007

2006

2005

2004

2003

2002

2001

2000

1999

Λղ͘ࡍʹɺ৞ΈࠐΈੵ෼Λߦ͏ඞཁ͕͋Δɻίʔυ
0

年度

ਤ1

‫ڞ‬ಉ‫ڀݚ‬՝୊࠾୒਺

2 ΞϓϦέʔγϣϯͷ֓ཁͷΞϧΰϦζϜʹ͓͍ͯ͸ɺNx × Ny × NТ ͷ 3 ࣍‫ݩ‬഑ྻʹରͯ͠ 3 ࣍‫ ݩ‬FFT Λߦ͏͜ͱͰ͜ͷ৞ΈࠐΈੵ෼Λߴ଎Խ͢ΔɻNx , Ny , NТ ͸ͦΕͧΕ 2 ࣍‫࣮ݩ‬ۭ͓ؒΑͼ‫͚͓ʹ࣠ؒ࣌ڏ‬Δղ૾౓ΛఆΊΔύϥϝʔλͰ͋Δɻ௒఻ಋঢ়ଶͷ‫͍͓ͯʹڀݚ‬ॏཁͰ͋Δ௿ԹͰͷղੳΛߦ͏ͨΊʹ͸ɺΑΓߴ͍ΤωϧΪʔղ૾౓ࠓճ SX-ACE Ͱͷ࠷దԽͷର৅ͱͨ͠ΞϓϦέʔ͕‫ٻ‬ΊΒΕΔͨΊɺ͜ΕΒͷύϥϝʔλΛΑΓେ͖͘γϣϯίʔυ͸ɺ౦๺େֶେֶӃ޻ֶ‫ڀݚ‬ՊԠ༻෺ཧ

ͱΔඞཁ͕͋Δɻ·ͨɺԹ౓มԽΛղੳ͢ΔͨΊʹɺֶઐ߈Ͱ։ൃதͷʰಔࢎԽ෺ͷ༗ޮϞσϧʹର͢Δ༳

200Kʙ50K ·Ͱ 10K ࠁΈʹ‫ ܭ‬16 ճͷ൓෮࣮ߦ͕ߦ

Β͗ަ‫ࣅۙ׵‬ʱίʔυͰ͋Δɻຊίʔυ͸ Fortran90

ΘΕΔɻ3 ࣍‫ ݩ‬FFT ͷ࣮ߦʹ͸ɺFFTW ϥΠϒϥϦ

Ͱ‫ه‬ड़͞ΕɺίϝϯτߦΛ‫ؚ‬Έ໿ 950 ߦ͔ΒͳΓɺಛΛɺ·ͨ‫ݻ‬༗஋ͷ‫ٻ‬ղʹ͸ɺLapack ϥΠϒϥϦΛ࢖༗ͷγεςϜ޲͚ͷ࠷దԽ͸ࢪ͞Ε͍ͯͳ͍ɻ༻͢Δɻ

2.1 ༳Β͗ަ‫ࣅۙ׵‬ख๏‫ݱ‬ঢ়ͷϞσϧαΠζ͸ Nx = Ny = 64, NТ = 2, 048
RRͰ͋Γɺ‫ࣨڀݚ‬ͷαʔόʢIntel⃝
Xeon⃝
CPU E5-ࠓճ࠷దԽͷର৅ͱ͢Δίʔυ͸ɺಔࢎԽ෺௒఻ಋ
ମͷ͏ͪಛʹిࢠυʔϓ‫ݺͱܕ‬͹ΕΔ෺࣭ͷిࢠঢ়

2630 v2ʣͰ͸‫ʹࢉܭ‬໿ 7 ࣌ؒΛཁ͍ͯ͠Δɻࠓ‫ޙ‬͸ଶΛ‫ه‬ड़͢ΔͨΊʹఏҊ͞Εͨ༗ޮ 2 όϯυ໛‫ʹܕ‬௿ԹྖҬʹ͓͚Δடংঢ়ଶΛৄࡉʹղੳ͢ΔͨΊʹɺ͓͍ͯɺ௒఻ಋ͓Αͼ࣓‫ؾ‬டংసҠΛղੳ͢ΔΞϓϦ֤࣍‫ݩ‬ͷαΠζΛ Nx , Ny ʹ͍ͭͯ͸ 30 ഒҎ্ɺNТ

έʔγϣϯͰ͋Δɻ༗ޮ 2 όϯυ໛‫·ؚʹܕ‬ΕΔిࢠ

ʹ͍ͭͯ͸ 10 ഒఔ౓֦ு͢Δඞཁ͕͋ΓɺΑΓେ༰ؒ૬‫༻࡞ޓ‬Λ༳Β͗ަ‫ࣅۙ׵‬ʢfluctuation-exchangeྔͷ෺ཧϝϞϦͱ‫ؒ࣌ࢉܭ‬ͷ୹ॖ͕ඞཁͱͳΔɻ

approximationʣΛ༻͍ͯऔΓѻ͍ɺͦͷ݁ՌಘΒΕ

— 27 —

『銅酸化物の有効モデルに対する揺らぎ交換近似』コードのSX-ACE 向け最適化
2.3 ࢖༻ϥΠϒϥϦʹ͍ͭͯ਺ʹઃఆ͢Δͷ͕๬·͍͕͠ɺ‫ࡏݱ‬ͷ ASL Wrapper

FFTW ϥΠϒϥϦ [2] ͸ɺ೚ҙͷ‫਺ج‬ͷ࣮਺͓ΑͼͰ͸੔߹ੇ๏Λผ్ࢦఆ͢Δํ๏͸ͳ͍ͷͰɺ഑ྻαෳૉ਺഑ྻͷ FFT Λߦ͏ϥΠϒϥϦͰɺGNU ϥΠΠζͷ 1 ࣍‫ݩ‬໨Λ‫ͳͱ਺ح‬ΔΑ͏ N ͷαΠζΛ 65 ʹηϯεʹ‫ͮ͘ج‬ϑϦʔιϑτ΢ΣΞͰ͋ΔɻFFTW

ઃఆ͠όϯΫίϯϑϦΫτͷճආΛࢼߦͨ͠ɻ

ϥΠϒϥϦ͸঎༻ΞϓϦέʔγϣϯʹ΋࠾༻͞ΕΔ΄

3.2 ࢖༻ํ๏

Ͳ෯޿͘ར༻͞Ε͍ͯΔ FFT ϥΠϒϥϦͰ͋Δɻ·

ASL Wrapper Λར༻͢Δʹ͸ɺ։ൃ‫ݩ‬ͷ΢Σϒϖʔͨ։ൃ΋‫ܧ‬ଓతʹߦΘΕ͓ͯΓɺ೥ʹ਺౓ͷϚΠφʔδ [4] Ͱఏ‫͞ڙ‬ΕΔ tar ϑΝΠϧΛೖखͯ͠ར༻ऀͷΞοϓσʔτ͕ߦΘΕ͍ͯΔɻ·ͨ SIMD ໋ྩͷαRR
ϙʔτͳͲɺIntel⃝‫ ܥ‬CPU ͓Αͼ Intel⃝ίϯύΠϗʔϜσΟϨΫτϦ഑Լʹల։͠ɺΞϓϦέʔγϣϯϥ޲͚ͷ࠷దԽ͕ιʔείʔυʹͳ͞Ε͍ͯΔɻ
R
LX406-Re2 Ͱ ͸ Intel⃝
CPU ʹ ࠷ ద Խ ͞ Ε ͓ͨΑͼϦϯΫ࣌ʹΞʔΧΠϒϑΝΠϧͷύεࢦఆͱϥ

RIntel⃝MKL ϥΠϒϥϦ͔Β FFTW ͱ Lapack ͕རϧ࣌ʹ͸ɺ-Ep ΦϓγϣϯʹΑΓ C ϓϦϓϩηοαΛ

༻Ͱ͖ΔͨΊɺίϯύΠϧ࣌ʹ FFTW ͷΠϯΫϧʔ‫ى‬ಈ͢Δඞཁ͕͋Δɻ

ͷίϯύΠϧ࣌ʹΠϯΫϧʔυϑΝΠϧͷύεࢦఆɺΠϒϥϦ໊ͷࢦఆΛߦ͏ɻFortran ίʔυͷίϯύΠ

υϑΝΠϧͷ৔ॴͱ MKL ϥΠϒϥϦΛϦϯΫ͢Δ

4 SX-ACE ΁ͷҠ২ͱੑೳൺֱ

ࢦఆΛߦ͏ͷΈͰ࣮ߦΦϒδΣΫτͷ࡞੒͕ՄೳͰ

4.1 ίʔυͷҠ২ํ๏͋Δɻ
Ұํ SX-ACE Ͱ͸ɺFFTW ϥΠϒϥϦ΍ͦͷΠ

ASL.V1.0 r1.2.tar Λμ΢ϯϩʔυͨ͠‫ޙ‬ɺϗʔϜϯλʔϑΣʔε͸ඪ४Ͱ͸ఏ‫͞ڙ‬Ε͍ͯͳ͍ͨΊɺσΟϨΫτϦ഑Լ ($HOME/ASL Wrapper/) ʹల։

FFTW ϥΠϒϥϦΛར༻Ͱ͖ͳ͍ɻSX-ACE Ͱߴੑ͠ɺSX-ACE ༻ʹҠ২Λߦ͏ΞϓϦέʔγϣϯͷίϯ

ೳԋࢉΛ࣮‫͢ݱ‬ΔͨΊʹ͸ɺϕΫτϧνϡʔχϯά͞ύΠϧͱϦϯΫΛߦ͏ɻࠓճͷΞϓϦέʔγϣϯͷ৔Εͨ NEC ੡ͷ ASLʢAdvanced Scientific Libraryʣ߹͸ Lapack ϥΠϒϥϦ΋ඞཁͰ͋ΔͨΊɺϦετ 1

Λ FFT ϥΠϒϥϦͱͯ͠ར༻͢Δඞཁ͕͋Δɻͦ͜ʹࣔ͢ίϚϯυͰίϯύΠϧͱϦϯΫΛߦ͍ɺ࣮ߦΦͰ‫ޙ‬ड़ͷ ASL Wrapper Λಋೖ͠ɺίʔυதͷ FFTW

ϒδΣΫτͷ࡞੒ΛߦͬͨɻϥΠϒϥϦΛίʔϧ͢ΔՕॴΛमਖ਼͢Δ͜ͱͳ͘ ASL
ͷ FFT ϥΠϒϥϦΛར༻͢Δ͜ͱͱͨ͠ɻ

Ϧετ 1
1
2

3 ASL Wrapper
3.1 ֓ཁ
ASL Wrapper ͸ FFTW ΍ Intel(R) MKL ͷ FFTϥΠϒϥϦΛ༻͍ͨϓϩάϥϜΛɺSX ্Ͱར༻͢
ΔͨΊͷΠϯλʔϑΣʔεͰ͋ΔɻASL Wrapper ͸

Xevolver ϓϩδΣΫτ [3] Ͱ։ൃ͞Εɺ‫ ࡏݱ‬v1.0r1.2
͕ެ։͞Ε͍ͯΔɻASL Wrapper Λ༻͍Δ͜ͱͰɺ

FFTW ͋Δ͍͸ Intel(R) MKL ͷ FFT ϥΠϒϥϦΛ࢖༻͢ΔΞϓϦέʔγϣϯΛ SX-ACE ΁Ҡ২͢Δ
͜ͱ͕༰қʹͳΔͱͱ΋ʹɺSX ޲͚ʹߴ౓ʹνϡʔχϯά͞Εͨ ASL ϥΠϒϥϦΛར༻͢Δ͜ͱͰେ͖
ͳੑೳ޲্͕‫ظ‬଴Ͱ͖Δɻ

ASL ϥΠϒϥϦͰ͸ෳૉҾ਺‫ܕ‬ͷ 3 ࣍‫ݩ‬ෳૉϑʔϦΤม‫׵‬Λߦ͏৔߹ɺαϒϧʔνϯ ZFC3FB Λར༻͢Δɻ͜ͷαϒϧʔνϯ΋ FFTW ͱಉ͘͡೚ҙ‫ʹ਺ج‬ରԠͨ͠ FFT Ͱɺσʔλ਺Λௐ੔Ͱ͖Δ৔߹ʹ͸ɺ഑ྻͷ֤αΠζΛ 2,3,5 ͷഒ਺ͱͳΔΑ͏ʹઃఆͨ͠ํ
͕ޮ཰Α͍‫ࢉܭ‬Λߦ͑Δɻ·ͨ SX Ͱ͸ओ‫ه‬ԱͷόϯΫίϯϑϦΫτΛආ͚ΔͨΊʹɺ഑ྻͷ੔߹ੇ๏Λ‫ح‬

3

ASL Wrapper ͷϦϯΫํ๏

sxf90 - Ep - I$HOME / ASL_Wrapper / FFTW / include \source . f90 - L$HOME / ASL_Wrapper / FFTW / lib \- lfftw2asl - lasl - llapack - lblas

4.2

FFT ϥΠϒϥϦͷੑೳൺֱຊηϯλʔͷ LX406Re-2 ͱ SX-ACE ͰϕΫτϧνϡʔχϯάΛߦ͏લͷΞϓϦέʔγϣϯίʔυʢҎԼɺॳ‫ظ‬ίʔυʣͷԋࢉ࣌ؒͷൺֱΛߦͬͨɻͦΕͧΕ

1 ίΞͰͷஞ࣮࣍ߦͰ͋Δɻͳ͓ੑೳൺֱΛߦ͏ίʔυ͸ԋࢉ࣌ؒ୹ॖͷͨΊɺ୯ҰͷԹ౓ʢiTm=200ʣͷΈͷ‫ͨ͠ͱࢉܭ‬ɻ
R
LX406Re-2 Ͱ͸ Intell⃝
MKL ϥΠϒϥϦΛ༻͍ͯ FFTW ϥΠϒϥϦ͓Αͼ Lapack ϥΠϒϥϦͷ
ϦϯΫΛߦͬͨɻSX-ACE Ͱ͸ ASL Wrapper Λ༻͍ͨ৔߹ͱɺFFTW ϥΠϒϥϦͷιʔείʔυΛ

FORTRAN90/SX ίϯύΠϥʹΑΓίϯύΠϧͯ͠࡞੒ͨ͠ϥΠϒϥϦΛ༻͍ͨ৔߹ͱͷൺֱΛߦͬͨɻ

Lapack ϥΠϒϥϦ͸ SX ޲͚ʹ࠷దԽ͞Εͨ MathKeisan ϥΠϒϥϦΛ༻͍ͨɻͦΕͧΕͷԋࢉ࣌ؒΛ
ද 2 ʹࣔ͢ɻASL Wrapper Λ༻͍ͯ SX-ACE Ͱ࣮ߦͨ͠৔߹͕࠷΋ԋࢉ͕࣌ؒ୹͘ɺFFTW ϥΠϒϥϦ
ͷιʔείʔυΛίϯύΠϧͨ͠༻͍ͨ৔߹ͷ໿ 2.5
ഒͷੑೳͱͳͬͨɻSX ޲͚ʹ࠷దԽ͞Εͨ ASL ϥΠ

— 28 —

SENAC Vol. 50, No. 1（2017. 1）

ද2complex จͷΈͰߦ͍ɺ·࣮ͨߦதʹ഑ྻαΠζʹมॳ‫ظ‬ίʔυͷԋࢉ࣌ؒൺֱ

ߋ͕ͳ͍͜ͱΛ֬ೝ͠ɺ੩తͳαΠζͰ഑ྻͷ֬อΛ
FFT ϥΠϒϥϦɾ‫ػࢉܭ‬ԋࢉ࣌ؒ [sec]

FFTW (Inlel MKL)
on LX406Re-2

1,036

FFTW using
ASL Wrapper
on SX-ACE
FFTW compiled by
FORTRAN90/SX
on SX-ACEߦͬͨɻ഑ྻએ‫ݴ‬ͷมߋ‫ޙ‬ͷฤूϦετΛϦετ 5 ʹࣔ͢ɻ࠷಺ϧʔϓʹ*‫ ͱ߸ه‬2 ൪໨ͷϧʔϓʹ W ‫෇͕߸ه‬͖ɺίϯύΠϥʹΑΓ 2 ॏϧʔϓ͕ҰॏԽ͞Εͨ͜ͱ͕෼͔ΔɻίϯύΠϥʹΑΓҰॏԽ͞ΕͨՕॴ͸ɺ

707

REGION A ͷ 2 ՕॴΛ‫ؚ‬Ή‫ ܭ‬30 Օॴ͋ͬͨɻ
Ϧετ 2

1,830
1

ϒϥϦͷޮՌ͕‫ݟ‬ΒΕɺASL Wrapper Λ༻͍ͯ ASL
ϥΠϒϥϦΛ࢖༻͢Δ༗༻ੑ͕֬ೝͰ͖ͨɻ
࣍અͰ͸ɺຊίʔυͷ SX-ACE ޲͚࠷దԽʹ͍ͭͯઆ໌͢Δɻ

2
3
4
5
6
7
8
9
10

5 ϕΫτϧνϡʔχϯάͱੑೳൺֱ

11

5.1 ؆қੑೳղੳ‫ػ‬ೳʹΑΔίετௐࠪ

13

12
14
15

ίʔυ࣮ߦ࣌ʹੑೳղੳ৘ใͷऔಘΛߦ͏؆қੑ 16
17

ೳղੳʢFTRACEʣ‫ػ‬ೳΛར༻ͯ͠ɺԋࢉ࣌ؒͷί 1819ετ෼ੳΛߦ͏ɻFTRACE ‫ػ‬ೳΛར༻͢Δʹ͸ιʔ 20
21είʔυͷίϯύΠϧ࣌ͱϦϯΫ࣌ʹ-ftrace Λࢦఆ 22
23

͢ΔɻFTRACE ‫ػ‬ೳͷҰͭͰ͋ΔϢʔβʔࢦఆϦʔ 2425

δϣϯΛར༻͢Δ͜ͱͰɺίʔυͷ೚ҙͷൣғͰੑೳ 26ղੳ৘ใͷऔಘ͕ՄೳͰ͋ΔɻASL ౳ͷ֎෦ϥΠϒϥϦ͸ FTRACE ‫ػ‬ೳͷΈͰ͸ੑೳղੳ৘ใʹදࣔ͞Ε

Ϧετ 3
1

ͳ͍͕ɺϥΠϒϥϦ‫ͼݺ‬ग़͠લ‫Ͱޙ‬ϢʔβʔࢦఆϦʔ

2δϣϯΛར༻͢Δ͜ͱͰɺ֎෦ϥΠϒϥϦͷੑೳղੳ

4

৘ใ΋ಘΔ͜ͱ͕Ͱ͖Δɻ

63
5

5.2 ഑ྻએ‫ํݴ‬๏ͷมߋʹΑΔϧʔϓ༥߹
Ϧετ 2 ʹॳ‫ظ‬ίʔυͷฤूϦετͷҰ෦Λࣔ͢ɻ 2ιʔείʔυͷίϯύΠϧ࣌ͷฤूϦετΛग़ྗ͢Δ

3
4

ͨΊʹ͸ίϯύΠϧ࣌ʹ-R5 Λࢦఆ͢ΔɻϢʔβࢦఆϦʔδϣϯ REGION A Λ 2 Օॴͷ 3 ॏϧʔϓͷԋࢉ͕ߦΘΕΔՕॴʹઃఆͨ͠ɻ

2
3
4

ϓʹΑΓ 1 ࣍‫ݩ‬໨ɺ2 ࣍‫ݩ‬໨ͱ΋ఆٛ͞Εͨ഑ྻαΠ6ζͷ࠷ॳ͔Β࠷‫ࢀͰ·ޙ‬র͞ΕΔͨΊɺίϯύΠϥ͕

8

5
7
9

ࣗಈతʹ 2 ॏϧʔϓͷԋࢉΛ 1 ॏϧʔϓͷԋࢉʹҰॏ 1011Խ͢Δ͸ͣͰ͋Δ͕ɺฤूϦετͰ͸࠷಺ϧʔϓʢ5 1213ߦ໨͓Αͼ 17 ߦ໨ʣͷΈϕΫτϧԽ͞Εͨ͜ͱ͕෼ 14
15

͔ΔʢV ϚʔΫ͕ϕΫτϧԽ͞ΕͨϧʔϓΛࣔ͢ʣ
ɻ͜ 16
17

Ε͸Ϧετ 3 ʹࣔ͢Α͏ʹɺԋࢉͰ༻͍ΒΕΔ഑ྻͷ 18
19

એ‫ ͕ݴ‬complex จͱ pointer จʹΑΓߦΘΕΔͨΊɺ20
21ίϯύΠϥ͕഑ྻαΠζͱࢀরൣғ͕ಉҰͰ͋Δ൑அ 22
23
24
25

ͦ͜ͰϦετ 4 ʹࣔ͢Α͏ʹɺ഑ྻͷએ‫ݴ‬Λ௨ৗͷ 26

complex จͷΈʹΑΔ഑ྻએ‫ݴ‬

integer , parameter :: N =64 , Wm =2048
complex ( kind (0 d0 )):: Gdd (0: N -1 ,0: N -1 ,0: Wm -1)
complex ( kind (0 d0 )):: Gpp (0: N -1 ,0: N -1 ,0: Wm -1)
complex ( kind (0 d0 )):: selfs3 (0: N -1 ,0: N -1 ,0: Wm -1)

Ϧετ 5
1

಺ଆͷ 2 ॏϧʔϓͷԋࢉʢ4ɺ16 ߦ໨ʣ͸ɺDO ϧʔ͕Ͱ͖ͳ͍ͨΊͰ͋Δɻ

complexɼpointer จʹΑΔ഑ྻએ‫ݴ‬

integer , parameter :: N =64 , Wm =2048
complex ( kind (0 d0 )) , pointer :: Gdd (: ,: ,:) , Gpp (: ,: ,:)complex ( kind (0 d0 )) , pointer :: selfs3 (: ,: ,:)allocate ( Gdd (0: N -1 ,0: N -1 ,0: Wm -1))
allocate ( Gpp (0: N -1 ,0: N -1 ,0: Wm -1))
allocate ( selfs3 (0: N -1 ,0: N -1 ,0: Wm -1))

Ϧετ 4
1

REGION Aʢॳ‫ظ‬ίʔυʣ||| CALL F T R A C E _ R E G I O N _ B E G I N ( ’ REGION A ’)|||+ - - - > do iw =0 , Wm -1||||
w = dble (2* iw +1)* pi * Tm||||+ - - >do iky =0 ,N -1||||| V - >do ikx =0 , N -1|||||| A
Gdd ( ikx , iky , iw )=( im *w - Ep ( ikx , iky ))&||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )||||| V end do||||+ - end do|||+ - - - end do||||||+ - - - > do iw =0 , Wm -1||||
w = dble (2* iw +1)* pi * Tm||||+ - - >do iky =0 ,N -1||||| V - >do ikx =0 , N -1|||||| A
Gpp ( ikx , iky , iw )=( im *w - Ed &||||||- selfs3 ( ikx , iky , iw )) &||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )||||| V end do||||+ - end do|||+ - - - end do||| CALL F T R A C E _ R E G I O N _ E N D ( ’ REGION A ’)REGION AʢϧʔϓҰॏԽ‫ޙ‬ʣ||| CALL F T R A C E _ R E G I O N _ B E G I N ( ’ REGION A ’)|||+ - - - > do iw =0 , Wm -1||||
w = dble (2* iw +1)* pi * Tm|||| W - - >do iky =0 , N -1|||||* - >do ikx =0 , N -1|||||| A
Gdd ( ikx , iky , iw )=( im *w - Ep ( ikx , iky ))&||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )|||||* end do|||| W - end do|||+ - - - end do||||||+ - - - > do iw =0 , Wm -1||||
w = dble (2* iw +1)* pi * Tm|||| W - - >do iky =0 , N -1|||||* - >do ikx =0 , N -1|||||| A
Gpp ( ikx , iky , iw )=( im *w - Ed &||||||- selfs3 ( ikx , iky , iw )) &||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )|||||* end do|||| W - end do|||+ - - - end do||| CALL F T R A C E _ R E G I O N _ E N D ( ’ REGION A ’)— 29 —

『銅酸化物の有効モデルに対する揺らぎ交換近似』コードのSX-ACE 向け最適化
5.3 ίʔυमਖ਼ʹΑΔϧʔϓ༥߹ΫτϧϓϩηοαͰ͸ϕΫτϧ௕͕௕͍΄Ͳಉ͡ԋࢉREGION A Ͱࣔͨ͠ 2 Օॴͷ 3 ॏϧʔϓͷԋࢉՕྔΛॲཧ͢ΔࡍͷϝϞϦΞΫηε͕ޮ཰Խ͞ΕΔͨΊॴ͸ɺ3 ࣍‫ݩ‬໨ͷϧʔϓʢ2 ߦ໨͓Αͼ 14 ߦ໨ʣ͕ಉ

Ͱ͋Δɻ݁Ռͱͯ͠ FLOPS ஋͸໿ 2.8 ഒ޲্ͨ͠ɻ

ൣғͷԋࢉΛߦ͍ɺ3 ߦ໨͓Αͼ 15 ߦ໨ͷεΧϥԋࢉϧʔϓ༥߹‫ޙ‬ʢA-3ʣ͸ϕΫτϧԋࢉ໋ྩͷΦʔό΋‫ڞ‬௨ͷԋࢉΛߦ͏ͷͰɺ3 ࣍‫ݩ‬໨ͷϧʔϓΛ༥߹͢ϔου࡟‫ʹݮ‬ΑΓɺ͞Βʹ FLOPS ஋͕ 4% ఔ౓޲্Δ͜ͱͰɺϕΫτϧԋࢉ໋ྩͷΦʔόϔουΛ࡟‫͢ݮ‬ͨ͠ɻΔ͜ͱ͕ՄೳͰ͋ΔɻίϯύΠϥΦϓγϣϯͰ࠷దԽ

5.4 ‫਺ج‬αΠζͷมߋʹΑΔόϯΫίϯϑϦΫτͷ
࡟‫ݮ‬ϨϕϧΛ࠷ߴͷ-Choptɺ΋͘͠͸໌ࣔతʹϧʔϓ༥߹Λߦ͏Φϓγϣϯ-pvctl loopfusion Λࢦఆ͢Δ͜ͱ͕લड़ͷ௨Γ ASL ϥΠϒϥϦͷ FFT Ͱ͸ɺ‫਺ج‬ͷα

Ͱ͖Δ͕ɺ͜ͷՕॴ͸ίϯύΠϧΦϓγϣϯͰ͸ϧʔΠζ͕‫਺ۮ‬ʢಛʹ 2 ͷႈ৐ʣͷͱ͖ʹόϯΫίϯϑϦ

ϓ༥߹͞Εͳ͔ͬͨͨΊɺιʔείʔυͷҰ෦ΛίϝΫτ͕େ͖͘ͳΔͷͰɺN ͷαΠζΛ 64 ͔Β 65 ʹมϯτΞ΢τ͢Δ͜ͱͰϧʔϓ༥߹Λଅਐͨ͠ɻϦετߋ͠ɺϦετ 7 ʹࣔͨ͠ FFT ԋࢉ෦෼ͷ REGION

6 ʹιʔείʔυͷमਖ਼ʹΑΓ 3 ࣍‫ݩ‬໨ͷϧʔϓ͕༥B ͷൣғʹ͍ͭͯੑೳղੳΛߦͬͨɻ߹͞ΕͨฤूϦετΛࣔ͢ɻ
Ϧετ 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

2 ߦ໨͔Β 5 ߦ໨ʹ͓͍ͯ FFTW ϥΠϒϥϦΛ
ίʔϧ͢ΔՕॴͰ͸ɺASL Wrapper ʹΑΓ࣮ࡍ͸

REGION Aʢϧʔϓ༥߹‫ޙ‬ʣ||| CALL F T R A C E _ R E G I O N _ B E G I N ( ’ REGION A ’)|||+ - - - > do iw =0 , Wm -1||||
w = dble (2* iw +1)* pi * Tm|||| W - - >do iky =0 ,N -1|||||* - >do ikx =0 ,N -1|||||| A
Gdd ( ikx , iky , iw )=( im *w - Ep ( ikx , iky ))&||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )|||||| !
end do|||||| !
end do|||||| ! end do|||||||||||| ! do iw =0 , Wm -1|||||| !
w = dble (2* iw +1)* pi * Tm|||||| !
do iky =0 ,N -1|||||| !
do ikx =0 ,N -1|||||| A
Gpp ( ikx , iky , iw )=( im *w - Ed &||||||- selfs3 ( ikx , iky , iw )) &||||||/(( im *w - Ed - selfs3 ( ikx , iky , iw )) &||||||*( im *w - Ep ( ikx , iky )) - V ( ikx , iky ))&||||||-1.0 d0 /( im *w - gza )|||||* end do|||| W - end do|||+ - - - end do||| CALL F T R A C E_R EGI ON _EN D ( ’ REGION A ’)

2 Օॴͷ 3 ॏϧʔϓͷԋࢉ෦෼͕ 3 ࣍‫ݩ‬໨ͷϧʔϓͰ༥߹͞Εɺ2 ߦ໨͔Β 25 ߦ໨͕ 1 ͭͷϧʔϓͱͳͬͨ͜ͱ͕෼͔Δɻ

ASL ϥΠϒϥϦ͕ίʔϧ͞ΕΔɻ
Ϧετ 7
1
2
3
4
5
6

||
||
||
||
||
||

REGION B

CALL F T R A C E _ R E G I O N _ B E G I N ( ’ REGION B ’)call d f f t w _ p l a n _ d f t _ 3 d (p ,N ,N , Wm , Gdd , Gdd , &FFTW_FORWARD , FFTW_ESTIMATE )call dfftw_execute ( p )call d f f t w _ d e s t r o y _ p l a n ( p )CALL F T R A C E _ R E G I O N _ E N D ( ’ REGION B ’)

ද 4 ʹ N=64 Ͱ࣮ߦͨ͠ͱ͖ʢB-1ʣͱ N=65 Ͱ࣮ߦͨ͠ͱ͖ʢB-2ʣͷ FTRACE ৘ใΛࣔ͢ɻ‫਺ج‬ͷαΠζ͕ 64 = 26 ͷ৔߹͸όϯΫίϯϑϦΫτͷ஋͕େ͖͘ɺ࣮ߦޮ཰͸ 1% ఔ౓Ͱ͋Δ͕ɺ‫਺ج‬ͷαΠζ͕ 65 ͷ৔߹͸όϯΫίϯϑϦΫτͷ஋͕໿ 1/30 ʹ୹ॖ͞Εɺ࣮ߦޮ཰͸ 28% ·Ͱ޲্͍ͯ͠ΔɻFFT ʹ
ΑΔԋࢉՕॴ͸ REGION B ͷՕॴΛ‫ؚ‬Ή‫ ܭ‬9 Օॴ͋Γɺ͜ͷߴ଎ԽͷޮՌ͸େ͖͍ɻ

5.5 ॳ‫ظ‬ίʔυͱνϡʔχϯά‫ޙ‬ίʔυͷੑೳൺֱॳ‫ظ‬ίʔυͱ 2 छྨͷϕΫτϧνϡʔχϯά͓ΑͼN ʹ 65 Ͱ࣮ߦͨ͠ࡍͷੑೳൺֱΛද 5 ʹࣔ͢ɻ֤߲

Ҏ্ 2 छྨͷϕΫτϧνϡʔχϯάΛߦͬͨίʔ໨ͷ஋͸ɺProgram Information ͔ΒͷൈਮͰ͋Δɻυͱɺॳ‫ظ‬ίʔυΛ࣮ߦͨ͠ࡍͷ FTRACE ৘ใΛΦϦδφϧίʔυͰ͸࣮ߦޮ཰͸ 4% ఔ౓Ͱ͋ͬͨ

ද 3 ʹࣔ͢ɻ্ஈ͔ΒͦΕͧΕɺॳ‫ظ‬ίʔυʢA-1ʣɺ

͕ɺϕΫτϧνϡʔχϯάͱ‫਺ج‬αΠζͷมߋʹΑΔϧʔϓҰॏԽ‫ޙ‬ʢA-2ʣɺ͞Βʹϧʔϓ༥߹‫ޙ‬ʢA-3ʣͷόϯΫίϯϑϦΫτͷ࡟‫Ͱݮ‬ɺ࣮ߦޮ཰Λ໿ 30% ·Ͱ

REGION A ͷੑೳղੳ৘ใͰ͋Δɻ

վળ͢Δ͜ͱ͕Ͱ͖ͨɻಛʹ FFT ϥΠϒϥϦΛ࢖༻ϧʔϓҰॏԽ‫ޙ‬ʢA-2ʣ͸ɺॳ‫ظ‬ίʔυʢA-1ʣͱൺ
ֱͯ͠ FLOPS ஋͕໿ 2.8 ഒ޲্ͨ͠ɻ·ͨฏ‫ۉ‬ϕΫ͢Δࡍͷ‫਺ج‬αΠζͷ࠷దԽ͸ɺϕΫτϧϓϩηοα
ͷੑೳʹେ͖͘Ө‫͢ڹ‬Δ͜ͱ͕෼͔Δɻ

τϧ௕͕ 64 ͔Β 256 ʹ૿Ճͨ͠ɻ͜Ε͸ॳ‫ظ‬ίʔυ࣍ʹϕΫτϧνϡʔχϯά‫ޙ‬ͷίʔυΛද 2 ͱಉ͡Ͱ͸࠷಺ϧʔϓͷ‫܁‬Γฦ͠਺͕ N=64 Ͱ͋ͬͨ΋ͷ‫݁ͨ͠ߦ࣮Ͱڥ؀‬ՌΛද 6 ʹࣔ͢ɻ଎౓޲্ൺ͸ද 2

͕ɺ2 ॏϧʔϓͷҰॏԽʹΑΓ 64 ʷ 64=4,096 ͱͳΓͷ֤ԋࢉ࣌ؒʹର͢ΔൺͰ͋ΔɻASL Wrapper Λ࢖࠷େϕΫτϧ௕ͷ 256 ΑΓ΋े෼௕͘ͳͬͨ͜ͱͷ݁

༻ͯ͠ SX-ACE Ͱ࣮ߦͨ͠৔߹ͷ଎౓޲্ൺ͸໿ 7

ՌͰ͋Δɻ·ͨɺόϯΫίϯϑϦΫτʢNETWORK)ഒͰ͋ͬͨɻ‫ࣨڀݚ‬ͷαʔόͰͷ࣮ߦ࣌ؒͱൺֱ͠ɺ

ͷ஋͸໿ 32 ඵ͔Β 2 ඵʹ‫ݮ‬গ͍ͯ͠Δɻ͜Ε͸ɺϕ

໿ 6.5% ͷ࣮ߦ࣌ؒͰ͋ͬͨɻ

— 30 —

SENAC Vol. 50, No. 1（2017. 1）

ද3
PROC.NAMEFREQUENCYREGION A-1
REGION A-2
REGION A-3

2893
2893
2893

PROC.NAMEFREQUENCYREGION B-1
REGION B-2

142
142

EXCLUSIVE
TIME[sec](

FTRACE REGION A ͷੑೳൺֱ% )AVER.TIME[msec]MOPS

MFLOPS V.OP AVER.
RATIO V.LEN

VECTOR I-CACHE O-CACHEBANK CONFLICT
TIME
MISS
MISS CPU PORT NETWORK

81.907( 11.6)
29.389( 4.7)
20.193( 3.3)

28.312
10.1596.980

22048.5
61210.967385.513630.6 99.44 64.0
37988.7 99.83 256.0
39661.6 99.87 256.0

81.90729.38820.193

ද4

FTRACE REGION B ͷੑೳൺֱ

EXCLUSIVE
TIME[sec](

0.001
0.000
0.000

0.001
0.000
0.000

0.000
0.000
0.000

31.853
1.707
0.854

54.92
49.99
49.95

ADB HIT
ELEM.%% )AVER.TIME[msec]MOPS

MFLOPS V.OP AVER.
RATIO V.LEN

VECTOR I-CACHE O-CACHEBANK CONFLICT
TIME
MISS
MISS CPU PORT NETWORK

138.112( 22.4)
7.998( 8.1)

972.62156.7251408.943620.8

659.4 98.56 213.6
17917.9 98.37 230.1

137.976
7.895

ද5Program Informationより抜粋

演算時間 [sec]

0.001
0.001

0.051
0.038

2.425
0.177

ADB HIT
ELEM.%

112.758
2.123

33.33
70.10

ॳ‫ظ‬ίʔυͱνϡʔχϯά‫ޙ‬ίʔυͷੑೳൺֱ
実行効率 [%]GFLOPS

平均ベクトル長

平均ベクトル化率[%]

バンクコンフリクト(CPU PORT) [sec]バンクコンフリクト(NETWORK) [sec]オリジナルコード

707.18

2.69

4.20

77.24

98.68

9.99

495.47

ベクトルチューニング後

614.982.55

3.99

194.56

99.26

9.71

459.71N=65に変更後

99.01

18.66

29.16

192.30

98.95

1.24

14.77

ද6

νϡʔχϯά‫ޙ‬ίʔυͷԋࢉ࣌ؒൺֱ (N=65)

FFT ϥΠϒϥϦ
ɾ‫ػࢉܭ‬

ԋࢉ࣌ؒ [sec]଎౓޲্ൺ [ഒ]FFTW (Inlel MKL)
on LX406Re-2

986

1.05

FFTW using
ASL Wrapper
on SX-ACE

99.6

7.14

FFTW compiled by
FORTRAN90/SX
on SX-ACE

6 ·ͱΊຊߘͰ͸ʰಔࢎԽ෺ͷ༗ޮϞσϧʹର͢Δ༳Β͗ަ‫ࣅۙ׵‬ʱίʔυͷ SX-ACE ޲͚࠷దԽख๏ʹ͍ͭͯड़΂ͨɻASL Wrapper Λ༻͍Δ͜ͱͰɺFFTW ϥΠϒϥϦͷ‫ه‬ड़෦෼Λมߋ͢Δ͜ͱͳ͘ SX-ACE ͰͷίϯύΠϧͱ࣮ߦ͕ՄೳͰ͋Γɺ·ͨ ASL ͷར༻ʹΑΓߴ͍࣮ߦޮ཰ΛಘΔ͜ͱ͕Ͱ͖ͨɻࠓճ࣮ࢪͨ͠
࠷దԽʹΑΓɺSX-ACE ʹ͓͍ͯ໿ 30% ͷ࣮ߦޮ཰

1,660

1.10

ͰͷԋࢉΛՄೳͱͨ͠ɻࠓ‫ޙ‬͸কདྷͷ໰୊‫ن‬໛֦େʹରԠ͢Δ΂͘ɺେ‫ن‬໛ฒྻͰͷ࣮ߦΛ‫ݟ‬ਾ͑ͯ MPIฒྻԽͷࢧԉΛߦ͏༧ఆͰ͋ΔɻαΠόʔαΠΤϯεηϯλʔͷେ‫ن‬໛Պֶ‫ࢉܭ‬γε·ͨɺLX406Re-2 Ͱͷ࣮ߦʹ͓͍ͯ΋ɺॳ‫ظ‬ίʔυͱ΄΅ಉఔ౓ͷੑೳ͕୲อ͞ΕɺSX-ACE ޲͚ϕΫτϧνϡʔχϯάʹΑΔੑೳ௿Լ͸‫ݟ‬ΒΕͳ͔ͬͨɻ

5.6 ໨ඪϞσϧαΠζͰͷ࣮ߦ‫ڥ؀‬ਪఆςϜ͕ɺར༻ऀͷ‫ൃڀݚ‬లͷҰॿʹͳΔͨΊʹɺࠓ‫ޙ‬΋ߴ଎Խਪਐ‫׆ڀݚ‬ಈʹऔΓ૊ΉॴଘͰ͋Δɻࢀߟจ‫ݙ‬SX-ACE ʹ͓͍ͯ Nx = Ny = 65, NТ = 2, 048 ͷ[1] ଍ཱ‫ڡ‬ɺখ஑༸ೋɺNd2CuO4 ߏ଄ (T’ ߏ଄) Λύϥϝʔλ஋Ͱ࣮ߦͨ͠ࡍͷϝϞϦ࢖༻ྔ͸໿ 2.4GB

༗͢Δిࢠ‫ܕ‬ಔࢎԽ෺ʹ͓͚Δؐ‫ॲݩ‬ཧʹΑΔి

Ͱ͋ͬͨɻίʔυதͰ࢖༻͞Ε͍ͯΔ഑ྻαΠζ͔Βࢠঢ়ଶͷมԽͱϊϯυʔϓ௒఻ಋͷϝΧχζϜɺࢉग़͠ɺࠓ‫ޙ‬ͷγϛϡϨʔγϣϯʹ͓͚Δ໨ඪϞσϧ‫ݻ‬ମ෺ཧ vol.49ɺNo.5ɺ333-344ɺ2014ɽαΠζͱͳΔ Nx = Ny = 2, 000, NТ = 20, 480 Ͱͷ

[2] FFTWɺhttp://www.ﬀtw.org

ϝϞϦ࢖༻ྔ͸ 15TB ͱਪఆ͞ΕΔɻSX-ACE Ͱ͸

[3] Xevolverɺhttp://xev.arch.is.tohoku.ac.jp/

256 ϊʔυͷར༻Ͱ͜ͷϝϞϦྔΛ࢖༻ՄೳͰ͋Δͷ[4] ASL Wrapperɺhttp://xev.arch.is.tohoku.ac.jp/software/Ͱɺࠓ‫ޙ‬͸ MPI ϥΠϒϥϦΛ༻͍ͨίʔυͷฒྻԽΛ࣮ࢪ͠ɺҾ͖ଓ͖େ‫ن‬໛ฒྻͰͷ࣮ߦΛࢧԉ͢Δ༧
ఆͰ͋Δɻ