SC16 ࢀՃใࠂେౡ૱࢙ ాӜ݈࣍࿕ தౡ‫ޗݚ‬౦‫ژ‬େֶ৘ใ‫ج‬൫ηϯλʔ౦ ‫ ژ‬େ ֶ ৘ ใ ‫ ج‬൫ η ϯ λ ʔ ͷ ‫ ڭ‬һ ͕ 2016 ೥ 11 ݄ 13 ೔ ͔ Β 18 ೔ · Ͱ Ξ ϝ Ϧ Χ ߹ ऺ ࠃ Ϣ λ भιϧτϨΠΫγςΟʹͯ։࠵͞Εͨ SC16 (The International Conference for High Performance

Computing, Networking, Storage and Analysis) ʹࢀՃͨ͠ɻຊձٞ͸ɺߴੑೳ‫( ࢉܭ‬HPC) ෼໺Ͱ͸ஶ໊ͳࠃࡍձٞͰ͋Δͱͱ΋ʹɺ༷ʑͳ৘ใٕज़ؔ࿈‫ۀا‬΍‫ॴڀݚ‬ɾେֶ౳ͷٕज़లࣔձͰ΋͋Δɻຊߘ͸ͦͷࢀՃใࠂͱͯ͠ɺSC16 ʹࢀՃͨ͠ຊֶ‫ڭ‬һ͕‫ݱ‬஍Ͱ‫ݟ‬ฉ͖ͨ͠த͔Β‫Ͳͳͱͨͬ͜ͳʹؾ‬Λ‫͢ه‬ɻ

1͸͡Ίʹ
SC16 ͷձ৔ͱͳͬͨιϧτϨΠΫγςΟ͸ΞϝϦΧ߹ऺࠃϢλभͷதԝ෦ʹ͋Δभ౎Ͱ͋Δɻ‫ݴ‬Θͣͱ஌Εͨ 2002 ೥ౙ‫ྠޒق‬ͷձ৔ͱͳͬͨ౎ࢢͰ͋ΓɺSC16 ͕։࠵͞Εͨ Salt Palace

Convention Center ͸‫ྠޒ‬ͷࡍʹϝσΟΞηϯλʔͱͯ͠༻͍ΒΕͨ‫ݐ‬෺Ͱ͋Δɻ࠷ۙͰ͸ SC12ʹ ΋ · ͬ ͨ ͘ ಉ ͡ ձ ৔ Ͱ SC ͕ ߦ Θ Ε ͯ ͍ Δ ɻSC12 Ͱ ͸ ։ ࠵ લ ೔ ʹ ઇ ͕ ੵ ΋ Γ ۜ ‫ ܠ‬৭ ͷ SC ͱͳ͕ͬͨɺࠓճ͸‫ޙ‬൒ʹͳͬͯଟগͷੵઇ͕͋ͬͨఔ౓Ͱ͋Γɺલճͷ‫͔ݧܦ‬Β๷‫۩פ‬Λ͔ͬ͠Γ΋͍ͬͯͬͨࢀՃऀୡʹ͸ഥࢠൈ͚Ͱ͋ͬͨɻަ௨ʹ͍ͭͯ͸ɺSC12 ͷ࣌఺Ͱ΋ࢢ಺Λ૸Δ Light rail ͕ศརͰ͕͋ͬͨɺࠓճ͸ۭߓ΁ͷԆ৳͕‫͓ͯྃ͠׬‬Γɺۭߓͱձ৔ɺձ৔ͱϗςϧɺࢢ಺ͷΞΫηε͸͍ͣΕ΋շదͰ͋ͬͨɻͨͩ͠ձ৔΍ Light rail ఀཹॴ͔Βԕ͍ϗςϧͰ‫܁‬Γฦ͠ϛʔςΟϯάΛߦͬͨࢀՃऀΒ΋গͳ͔Βͣ‫ͨډ‬Α͏Ͱɺۤ࿑ͨ͠ͱ͍͏੠΋ฉ͔Εͨɻ

ਤ12

SC16 ձ৔ (Calvin L. Rampton Salt Palace Convention Center)

SC-XY ʹ͍ͭͯຊ ձ ٞ ͸ Ҏ લ ͸ Supercomputing-XY(XYɿ։ ࠵ ೥) ͱ ͍ ͏ ໊ শ ͕ ༻ ͍ Β Ε ͯ ͓ Γ ɺ1997 ೥ ʹ

SC-XY ͱ͍͏໊শʹมߋ͞Εͨɻ1988 ೥ϑϩϦμभΦʔϥϯυͰୈ 1 ճ͕։࠵͞Ε͔ͯΒɺຖ೥ 11 ݄ʹΞϝϦΧ֤஍Λసʑͱ͠ͳ͕Β։࠵͞Ε͓ͯΓɺࠓճ͸ Supercomputing-88 ͔Β਺͑1
スーパーコンピューティングニュース- 25 -

Vol.19,No.1

2017ͯ 28 ճ໨Ͱ͋Δɻຊձٞ͸ɺ‫ج‬ௐߨԋɺ‫ൃڀݚ‬දɺύωϧ౼࿦ɺBoF(Birds of a Feather: ಛఆͷτϐοΫΛఆΊͨখ‫ن‬໛ूձ)ɺओཁٕज़ͷཧղΛॿ͚ΔνϡʔτϦΞϧɺซઃ͞ΕΔଟ਺ͷϫʔΫγϣοϓͳͲͰߏ੒͞Ε͍ͯΔɻ‫ൃڀݚ‬දʹ͍ͭͯ͸ 81 ݅ߦΘΕɺ·ͨ 12 ݅ͷύωϧɺ138 ݅ͷϙελʔɺ37 ݅ͷνϡʔτϦΞϧɺ37 ݅ͷϫʔΫγϣοϓɺ12 ݅ͷট଴ߨԋɺ55 ݅ͷ BoF ͳͲ੝Γͩ͘͞Μͷ಺༰Ͱ͋ͬͨɻ·ͨɺ‫ۀا‬΍֤छ‫ʹؔػڀݚ‬ΑΔ࠷৽ͷ੡඼΍ٕज़ͷలࣔൃද΋஫໨͢΂͖಺༰Ͱ͋Δɻ
ओ࠵ऀൃදʹΑΔͱɺSC16 ͷདྷ৔ऀ਺ (ࢀՃొ࿥ऀ਺) ͸ 11,100 ਓΛӽ͑ͨɻ·ͨలࣔʹ͍ͭͯ͸ 349 ஂମ͕ࢀՃ͠ɺա‫࠷ڈ‬େͷలࣔ໘ੵͱͳͬͨɻॳճࢀՃͷஂମ͸ 44 ͋Γɺ·ͨถࠃ֎͔Β͸ 25 Χࠃ 120 ஂମ͕ࢀՃͨ͠ɻ3౦‫ژ‬େֶ৘ใ‫ج‬൫ηϯλʔʹΑΔలࣔ౦‫ژ‬େֶ৘ใ‫ج‬൫ηϯλʔ͸ʮITC/JCAHPC, The University of Tokyoʯͱ͍͏໊ٛʹΑΔ

ϒʔεలࣔΛߦͬͨɻࠓճ͸ɺྫ೥ಉ༷ʹ৘ใ‫ج‬൫ηϯλʔͷఏ‫͢ڙ‬Δ‫ݯࢿࢉܭ‬ʢεʔύʔίϯϐϡʔλͳͲʣ΍‫ྫࣄڀݚ‬Λ঺հ͢ΔϙελʔͷలࣔΛߦ͏ͷʹՃ͑ͯɺϒʔε໊ʹʮJCAHPCʯͱೖ͍ͬͯΔ͜ͱ͔ΒΘ͔ΔΑ͏ʹɺஜ೾େֶ‫ࢉܭ‬Պֶ‫ڀݚ‬ηϯλʔͱ‫ڞ‬ಉͰઃཱͨ͠࠷ઌ୺‫ڞ‬ಉ HPC ‫ج‬൫ࢪઃ (JCAHPC) ʹϑΥʔΧεͨ͠లࣔ΋࣮ࢪͨ͠ɻࠓճ͸ஜ೾େֶ‫ࢉܭ‬Պֶ‫ڀݚ‬ηϯλʔʹΑΔʮCCS/JCAHPC, University of Tsukubaʯϒʔεͱ௨࿏Λ‫ڬ‬ΜͰྡΓ߹ΘͤͷϒʔεΛ֬อͰ͖ͨͨΊɺϒʔεͷ৭ௐΛ߹ΘͤΔͳͲҰମ‫ײ‬Λԋग़ͨ͠ɻ྆ϒʔεʹ͸࠷৽ͷεʔύʔίϯϐϡʔλγεςϜ Oakforest-PACS ͷϊʔυͱγϟʔγΛ੩ଶలࣔ͠ɺؔ܎͢ΔύϯϑϨοτɾνϥγɾάοζͷ഑෍Λߦͬͨɻ·ͨ߃ྫͱͳ͍ͬͯΔϒʔεͰͷϓϨθϯςʔγϣϯ΋྆ϒʔεͰ‫ͨ͠ࢪ࣮ͯ͠ྗڠ‬ɻ‫ޙ‬ड़ͷΑ͏ʹ Oakforest-PACS ͕ TOP500 ౳ͷϥϯΩϯάʹ্ͯҐೖ৆ͨ͜͠ͱ΋͋Γɺଟ͘ͷདྷ৔ऀ͕྆ϒʔεΛ๚Εͨɻ4֤छͷϥϯΩϯάʹ͍ͭͯຖ೥ͷ SC Ͱ͸εʔύʔίϯϐϡʔλͷੑೳʹؔ͢Δ༷ʑͳϥϯΩϯά͕ߋ৽͞ΕΔɻࠓճ

͸ JCAHPC ʹͯ 12 ݄ʹਖ਼ࣜӡ༻Λ։࢝ͨ͠ Oakforest-PACS ʹؔ͢Δ৘ใΛத৺ʹ঺հ͢Δɻ

Top500 (http://www.top500.org/) ͸ੈքͷεʔύʔίϯϐϡʔλͷੑೳΛ LINPACK ͱ͍͏܎਺ߦྻ͕ີͷ࿈ཱҰ࣍‫ํݩ‬ఔࣜΛղ͘ϕϯνϚʔΫͷॲཧ଎౓ʹΑͬͯ‫͏ڝ‬΋ͷͰ͋Δɻ

1993 ೥ͷ։࢝Ҏདྷɺ6 ݄ʹϤʔϩούͰߦΘΕΔձٞͰ͋Δ ISC ͱɺຊձٞ SC ʹͯ೥ 2 ճͷߋ৽Λଓ͚͍ͯΔɻ͔͜͜͠͠਺ճͷ Top500 ͸ϥϯΩϯά্ҐͷมԽ͕๡͘͠ɺಛʹ Top5 ͸ୈ

41 ճ (2013 ೥ 6 ݄) ͔ Β લ ճ · Ͱ · ͬ ͨ ͘ ೖ Ε ସ Θ Γ ͕ ͳ ͍ ঢ় ଶ Ͱ ͋ ͬ ͨ ɻࠓ ճ ͸ ɺTop4 γ ες Ϝ ͜ ͦ લ ճ ͱ ม Θ Β ͵ ঢ় ଶ Ͱ ͋ ͬ ͨ ΋ ͷ ͷ ɺ5 Ґ ʹ ถ ࠃ NERSC ͷ Coriɺ6 Ґ ʹ JCAHPC ͷOakforest-PACS ͕ ϥ ϯ Ϋ Π ϯ ͠ ͨ ɻ͜ Ε Β 2 γ ε ς Ϝ ͸ Intel ࣾ ͷ ࠷ ৽ ੈ ୅ ͷ Xeon Phi ϝ χ ʔίΞϓϩηοα (ί ʔ υ ω ʔ Ϝ Knights Landing) Λ ౥ ࡌ ͠ ͨ γ ε ς Ϝ Ͱ ͋ Δ ɻ· ͨ೔ ຊ ͷ γ εςϜʹͷΈ஫໨͢Δͱɺ2011 ೥ 6 ݄͔Β೔ຊͰҰ൪ߴ଎ͳγεςϜͰ͋ͬͨʮ‫ژ‬ʯίϯϐϡʔλ͕͍ͭʹटҐ͔Βୀ͍ͨ͜ͱʹͳΔɻ
ࠓճͷ Top500 Ͱ΋தࠃͷ੎͍͸‫͘ڧ‬ɺલճͷ 109 γεςϜΛେ্͖͘ճΔ 171 γεςϜ͕ϥϯΫΠϯͨ͠ɻҰํɺલճ 199 γεςϜΛϥϯΫΠϯ͍ͤͯͨ͞ถࠃ͸தࠃͱಉ਺ͷ 171 γες

2
スーパーコンピューティングニュース- 26 -

Vol.19,No.12017

ਤ2ϒʔεలࣔͷ༷ࢠ 1 (ήετʹΑΔϒʔεϓϨθϯςʔγϣϯɺలࣔ෺Λ঺հ͢Δ༷ࢠ)Ϝ΁ͱ‫ݮ‬গͨ͠ɻ·ͨ೔ຊͷϥϯΫΠϯ਺͸લճͷ 37 γεςϜ͔Β͞Βʹ‫ݮ‬গ͠ɺ27 γεςϜͰ͋ͬͨɻͨͩ͠ Top100 ʹ‫ݟͯͬݶ‬Ε͹ɺถࠃͷ 40 γεςϜʹରͯ͠தࠃ͸ 8 γεςϜɺ೔ຊ΋ 10 γ ε ς Ϝ ͕ ϥ ϯ Ϋ Π ϯ ͠ ͯ ͍ Δ ɻ௒ େ ‫ ن‬໛ γ ε ς Ϝ ʹ ͭ ͍ ͯ ͸ ɺࠓ ճ ΋ ถ ࠃ ͷ ‫ࡍ ͕ ͞ ڧ‬
ཱ͍ͬͯΔͱ‫͑ݴ‬Δɻ
ͳ͓ࠓճ೔ຊ͔Β৽‫ʹن‬ϥϯΫΠϯͨ͠γεςϜ͸ɺJCAHPC ͷ Oakforest-PACS γεςϜ(6 Ґ)ɺ‫౎ژ‬େֶֶज़৘ใϝσΟΞηϯλʔͷ Camphor 2 γεςϜ (33 Ґ)ɺ౦‫ژ‬େֶ৘ใ‫ج‬൫ηϯλʔͷ Reedbush-U γεςϜ (361 Ґ)ɺҎ্ 3 γεςϜͰ͋ͬͨɻͪͳΈʹ Oakleaf-FX γεςϜ͸ 104 Ґ·Ͱ‫ޙ‬ୀ͓ͯ͠Γɺ1PFLOPS Λӽ͑ΔγεςϜ͸ 117 Λ਺͍͑ͯΔɻ

Top500 ͷ ݁ Ռ Λ ‫ ྗ ి ʹ ݩ‬౰ ͨ Γ ͷ LINPACK ੑ ೳ Λ ൺ ֱ ͠ ͨ ϥ ϯ Ω ϯ ά ͱ ͠ ͯ Green500(http://www.gree500.org/) ΋࣮ࢪ͞Ε͍ͯΔɻۙ೥ͷ Green500 Ͱ͸೔ຊͷ Pezy Computing ࣾʹΑΔγεςϜ͕ 3 ࿈೼͍͕ͯͨ͠ɺࠓճ͸ NVIDIA ࣾʹΑΔ࠷৽ GPU(Pascal ΞʔΩςΫνϟ)Λ౥ࡌͨ͠ DGX SATURNV γεςϜ͕टҐΛ֫ಘͨ͠ɻ͜ͷγεςϜ͸࠷৽ GPU Ͱ͋Δ TeslaP100 Λେྔʹ౥ࡌͨ͠γεςϜͰ͋ΓɺTop500 Ͱ͸ 3.307PFLOPS Ͱ 28 ҐʹϥϯΫΠϯ͍ͯ͠Δɻ2 Ґͷ Piz Daint ΋ಉ༷ʹ P100 Λ౥ࡌͨ͠γεςϜͰ͋Γɺͪ͜Β͸ 9.779PFLOPSɺTop500
Ͱ ͸ 8 Ґ Ͱ ͋ Δ ɻDGX SATURNV γ ε ς Ϝ ͸ ి ྗ ͋ ͨ Γ ੑ ೳ ͕ 9462.1 MFLOPS/W ͱ ඇ ৗ ʹߴ͍ɻԾʹ͜ͷγεςϜΛ͞Βʹଟ͘ฒ΂ͨ৔߹ɺ‫Ͱ্ࢉܭ‬͸ 1ExaFlops ͕ 106MW Ͱୡ੒ՄೳͰ͋Γɺ‫࣮ݱ‬తͳফඅిྗ (40MW ఔ౓) ʹΑΔ ExaFlops ౸ୡͷՄೳੑ͕‫͑ݴͱ͖ͨͯ͑ݟ‬Δɻͳ͓ɺલճ 1 ҐͰ͋ͬͨཧԽֶ‫ॴڀݚ‬ͷ Shoubu(়‫ )ו‬͸ 3 ҐͰ͋ͬͨɻҎ্ͷΑ͏ʹɺࠓճͷ Green500 Ͱ͸ NVIDA ࣾͷ GPU ͕ͦͷফඅిྗ͋ͨΓੑೳͷߴ͞Λ‫ݟ‬͚ͤͭͨ֨޷ͱͳͬͨɻͦͷҰํͰɺIntel ࣾͷϝχʔίΞϓϩηοαΛ౥ࡌͨ͠γεςϜ΋ɺυ3
スーパーコンピューティングニュース- 27 -

Vol.19,No.12017

ਤ3ϒʔεలࣔͷ༷ࢠ 2 (ʮITC/JCAHPC, The University of Tokyoʯϒʔεͷू߹ࣸਅɺ౦‫ژ‬େֶ৘ใ‫ج‬൫ηϯλʔͱஜ೾େֶ‫ࢉܭ‬Պֶ‫ڀݚ‬ηϯλʔ߹ಉͰͷू߹ࣸਅ)Ππࠃ಺Ͱ෋࢜௨͕ࣾೲೖͨ͠ QPACE3 γεςϜ͕ 5 Ґ (5806.3MFLOPS/W)ɺOakforest-PACS͕ 6 Ґ (4985.7MFLOPS/W) ͳ Ͳ ɺTop10 ͷ ͏ ͪ 5 γ ε ς Ϝ Λ ઎ Ί ͯ ͓ Γ ɺେ ͖ ͳ ଘ ࡏ ‫ ײ‬Λ ‫ͤ ݟ‬͍ͯͨɻTop500 ͸εύίϯͷϥϯΩϯάͱͯ͠޿͘஌ΒΕͨϥϯΩϯάͰ͋Δ͕ɺLINPACK ͰߴੑೳΛಘΔͨΊʹ͸େ‫ن‬໛ͳ໰୊Λղ͘ඞཁ͕͋ΔɻͦͷͨΊେ‫ن‬໛γεςϜͰߴ͍ LINPACKείΞΛಘΔͨΊʹ͸਺े࣌ؒ΋ͷ࣮ߦ͕࣌ؒඞཁͳ͜ͱ΋͋Γɺ࣮ߦͷෛ୲͕େ͖͍͜ͱ͕໰୊ͱͳ͍ͬͯΔɻ͞Βʹ LINPACK ͕ߦ͏‫ࢉܭ‬ͷ಺༰͸εύίϯ্ͰՔಇ͍ͯ͠Δ࣮ΞϓϦέʔγϣϯͱେ͖ͳִͨΓ͕͋ΔͨΊɺΑΓ࣮ΞϓϦέʔγϣϯʹ࣮ۙ͘ߦ͢Δෛ୲ͷখ͍͞ϕϯνϚʔΫ͕ඞཁͰ͋Δͱ͍͏ٞ࿦͕ߦΘΕ͖ͯͨɻHPCG (High Performance Conjugate

Gradients, https://software.sandia.gov/hpcg/) ͸ͦͷΑ͏ͳഎ‫͔ܠ‬Β 2013 ೥ʹఏҊ͞Εͨ৽͍͠ϕϯνϚʔΫͰ͋ΔɻHPCG ͸༗‫ݶ‬ཁૉ๏͔ΒಘΒΕΔૄߦྻΛର৅ͱͨ͠ઢ‫ܗ‬ιϧόʔͰ͋Γɺେ‫ن‬໛໰୊޲͚ͷϚϧνάϦου๏Λલॲཧͱͯ͠࠾༻͓ͯ͠ΓɺLINPACK ΑΓ΋࣮ΞϓϦέʔγϣϯʹ͍ۙͱߟ͑ΒΕΔɻ·ͨ࠷௿ 30 ෼‫ࢉܭ‬Λ࣮ߦͯ͠ղ͕ऩଋ͍ͯ͠Δ͜ͱΛࣔͤ͹ྑ͍ͨΊɺ୹࣌ؒͰͷଌఆ͕ՄೳͰ͋Δɻ

HPCG ΋ 2014 ೥͔Β͸ ISC ͓Αͼ SC ʹͯϥϯΩϯά͕ߋ৽͞Ε͍ͯΔɻલճ (2016 ೥ 6 ݄) ͷϥϯΩϯάͰ͸ 1 Ґ͕ Tianhe-2ɺ2 Ґ͕ʮ‫ژ‬ʯίϯϐϡʔλɺ3 Ґ͕ Sunway TaihuLight ͱ͍͏ॱং Ͱ ͋ ͬ ͨ ͕ ɺࠓ ճ ͸ʮ ‫ ژ‬ʯί ϯ ϐ ϡ ʔ λ ͕ ͞ Β ͳ Δ ࠷ ద Խ ʹ Α ͬ ͯ ॳ Ί ͯ 1 Ґ Λ ֫ ಘ ͠ ͨ ɻ

4スーパーコンピューティングニュース- 28 -

Vol.19,No.1

2017

·ͨ Oakforest-PACS ΋ Sunway TaihuLight Λӽ͑ͯ 3 ҐʹϥϯΫΠϯͨ͠ɻHPCG ͸ LINPACKͱ ൺ ΂ ͯ 1% ͔ Β 3% ఔ ౓ ͠ ͔ ੑ ೳ ͕ ग़ ͳ ͍ ͜ ͱ ͕ ଟ ͍ ໰ ୊ Ͱ ͋ Δ ͕ ɺTop500 7 Ґ ͷʮ ‫ ژ‬ʯίϯϐϡʔλ͸ 5.30% ͱ͍͏ߴ͍ੑೳΛୡ੒͓ͯ͠Γɺ·ͨ Top500 1 Ґͷ Sunway TaihuLight ͸0.40% ະຬͱ͍͏௿͍ੑೳʹཹ·͍ͬͯΔɻ͜ͷΑ͏ʹ HPCG ͸ Top500 (LINPACK) ͱ͸ໟ৭ͷҟͳΔϥϯΩϯάͱͳ͍ͬͯΔ͜ͱ͕Θ͔Δɻ

HPCG ͷ͞ΒͳΔ಺༰΍ Oakforest-PACS ͷ 3 Ґೖ৆ʹ͍ͭͯͷ৘ใ͸‫ʹط‬ຊ෦໳ͷ Web ϖʔδʹ‫͞ࡌܝ‬Ε͍ͯΔͨΊɺͦͪΒ΋ࢀর͞Ε͍ͨ*1 *2 ɻ

ਤ4HPCG BoF ʹ͓͚Δදজͷ༷ࢠେ‫ن‬໛άϥϑͷղੳʹؔ͢ΔੑೳΛ‫ ͏ڝ‬Graph500 (http://www.graph500.org/) Ͱ͸ Top5 γεςϜ͕લճ 6 ݄͔Βมಈແ͠Ͱ͋ͬͨɻGraph500 ͸ͦͷ೉͔͠͞Β Top500 ΑΓ΋஗Εͯ࠷దԽ͕ਐΉ܏޲͕͋ΔͨΊɺ࣍ճҎ߱ʹ Knigths Landing ΍ Pascal ͕ͲΕ্͚ͩҐʹϥϯΫΠ
ϯͯ͘͠Δ͔‫ͳʹؾ‬Δͱ͜ΖͰ͋Δɻ

5ϝΠϯτϥοΫ࿦จʹ͍ͭͯ

5.1 An Ephemeral Burst-Buﬀer File System for Scientiﬁc Applications by Teng Wang,Kathryn Mohror, Adam Moody, Kento Sato, and Weikuan Yu
Florida State University ͱ Lawrence Livermore National Laboratory ͷ ஶ ऀ Β ʹ Α Δ “AnEphemeral Burst-Buﬀer File System for Scientiﬁc Applications” ͱ୊͞Εͨ࿦จɽBurst-Buﬀerͱ͸ɼΞϓϦέʔγϣϯͱϑΝΠϧγεςϜͷؒʹೖΓɼI/O Λߴ଎Խ͢Δ‫ߏػ‬ͷ͜ͱͰ͋Δɽ࣮ࡍʹઐ༻ͷϊʔυΛαʔόͱͯ͠഑ஔ͢Δ৔߹΋͋Δ͠ɼΫϥΠΞϯτϊʔυʹ഑ஔ͞ΕΔ৔߹΋͋ΔɽΫϥΠΞϯτ͕௚઀ϑΝΠϧγεςϜ΁ I/O Λൃߦ͢Δ৔߹ͱൺ΂ɼ(1) ॻ͖ࠐΈΛϩʔΧϧ΋͘͠͸ۙ͘ʹ͋ΔϊʔυͰ‫ٵ‬ऩ͢Δɼ(2) ϑΝΠϧγεςϜ͕ۤखͱ͢ΔΞΫλεύλʔϯʢྫ: ଟ਺ͷখ͞ͳ I/OʣΛ੔‫ͯ͠ܗ‬ϑΝΠϧγεςϜʹൃߦ͢Δ͜ͱͰΞΫηεΛߴ଎Խ͢ΔɼͳͲͷޮՌ͕͋Δɽຊ‫ڀݚ‬ͷ Burst-Buﬀer ϑΝΠϧγεςϜʢBurstFSʣ͸ΫϥΠΞϯτϊʔυʹ഑ஔ͞ΕΔ΋ͷͰɼ֤‫ࢉܭ‬ϊʔυͷϩʔΧϧ SSD Λ༻͍Δɽॻ͖ࠐΈͷࡍɼσʔλ͸͢΂ͯϩʔΧϧ SSD ʹॻ͖ࠐ·ΕΔɽϝλσʔλʢϑΝΠϧͱͦͷΦϑηοτ͔Βɼ

*1 Oakforest-PACS ϦϦʔεΞφ΢ϯε http://www.cc.u-tokyo.ac.jp/system/ofp/release-20161118.html*2 HPCG ʹ͍ͭͯͷ͞Βʹৄ͍͠ࢿྉ http://www.cc.u-tokyo.ac.jp/system/ofp/KN_HPCG-3.pdf

5スーパーコンピューティングニュース- 29 -Vol.19,No.1

2017C00 C01+=

C10 C11
ਤ5A00 A01

B00 B01

A10 A11B10 B11খߦྻ΁ͷ෼ղ‫ͦࡏݱ‬ΕΛอ࣋͢ΔϊʔυΛฦ͢σʔλߏ଄ʣ͸ɼ෼ࢄΩʔόϦϡʔετΞʢMDHIMʣΛ༻͍ͯ؅ཧ͞ΕΔɽಡΈࠐΈͷࡍ͸͜ͷϝλσʔλΛࢀর͢ΔɽಡΈࠐΉൣғʢΦϑηοτͷൣғʣʹରͯ͠ൣғ‫ࡧݕ‬ʢrange queryʣΛൃߦͯ͠ɼσʔλͷҐஔΛ‫ٻ‬ΊΔɽMDHIM ͸ैདྷൣғ‫ࡧݕ‬Λαϙʔτ͠ ͯ ͍ ͳ ͍ ͕ ɼຊ ‫ Ͱ ڀ ݚ‬͸ ͦ ͷͨΊʹ MDHIM Λ֦ு͍ͯ͠ΔɽN-1 writeʢଟ਺ͷϓϩηε͕ 1 ϑΝΠϧ΁ॻ͖ࠐΉύλʔϯʣͰ 1024 ϓϩηεʢ64 ϊʔυʣ·Ͱ΄΅ઢ‫ܗ‬ʹॻ͖ࠐΈ଎౓͕εέʔϧ͠ɼฒྻϑΝΠϧγεςϜ OrangeFS ΁௚઀ಡΈॻ͖Λߦͬͨ৔߹ͱͷൺֱͰ͸ɼ8 ഒఔ౓ߴ଎Խ͍ͯ͠ΔɽຊηϯλʔͰӡ༻͢Δ Oakforest-PACS Ͱ΋ Burst-Buﬀer ͕ಋೖ͞ΕΔɽͦͷੑೳಛੑͳͲʹ͍ͭͯ΋ࠓ‫ޙ‬ใࠂ͍ͯ͘͠༧ఆͰ͋Δɽ

5.2 Strassen’s Algorithm Reloaded by Jianyu Huang, Tyler M. Smith, Greg M. Henry,Robert A. van de Geijn
The University of Texas at Austin ͷஶऀʹΑΔɼ“Strassen’s Algorithm Reloaded” ͱ୊͢Δ࿦จɽೋͭ n × n ߦྻ A, B ͷີߦྻੵʢਖ਼֬ʹ͸ɼC+ = AB ʣ͸ɼ௨ৗ Θ(n3 ) ͷ‫ࢉܭ‬ίετΛཁ͢Δ͕ɼStrassen ͷΞϧΰϦζϜ͸͜ΕΛ Θ(nlog 7 ) ≈ Θ(n2.807 ) Ͱ࣮ߦ͢ΔΞϧΰϦζϜͰɼ1969 ೥ʹൃ໌͞Εͨɽͦͷ‫ݪ‬ཧ͸ɼߦྻ A, B, C Λ n/2 × n/2 ͷখߦྻʹ෼͚ʢਤ 5ʣҎԼͷ‫ࢉܭ‬Λ࣮ߦ͢Δ͜ͱͰ͋Δɽ

1234567

M0 = (A00 + A11) (B00 + B11); C00 += M0; C11 += M0;
M1 = (A10 + A11) B00;
C10 += M1; C11 ʵ= M1;
M2 =A00 (B01 ʵ B11); C01 += M2; C11 += M2;
M3 =A11 (B10 ʵ B00); C00 += M3; C10 += M3;
M4 = (A00 + A01) B11;
C01 += M4; C00 ʵ= M4;
M5 = (A10 ʵ A00) (B00 + B01); C11 += M5;
M6 = (A01 ʵ A11) (B10 + B11); C00 += M6;

ਤ6Strassen ͷΞϧΰϦζϜϙΠϯτ͸ n × n ͷߦྻੵΛ࣮ߦ͢Δͷʹɼn/2 × n/2 ͷߦྻੵ͕ 7 ճ (M0 ʙ M6 ͷ‫ͦࢉܭ‬ΕͧΕҰճͣͭʣͰ͢ΜͰ͍Δ͜ͱͰɼ͜ͷ෼ׂΛ࠶‫ؼ‬తʹ࣮ߦ͢ΔͱɼΘ(nlog 7 ) ͷ‫Ͱྔࢉܭ‬ɼn × n ͷߦྻੵ͕࣮ߦͰ͖Δɽ௨ৗͷΞϧΰϦζϜͰ͸ҎԼͷ௨Γ n/2 × n/2 ͷߦྻੵ͕ 8 ճඞཁʹͳΓɼ123
4

for (i = 0; i < 2; i++)for (j = 0; j < 2; j++)for (k = 0; k < 2; k++)Cij += Aik * Bkj;

Θ(nlog 8 ) = Θ(n3 ) ͷ‫ͳͱྔࢉܭ‬Δɽ
6
スーパーコンピューティングニュース- 30 -

Vol.19,No.12017

Strassen ͷΞϧΰϦζϜ͸ߦྻੵͷ‫ࢉܭ‬ͷΦʔμʔΛԼ͛Δ͜ͱ͕Ͱ͖Δɼ‫͖΂͘ڻ‬ΞϧΰϦ ζ Ϝ ͩ ͕ ɼߴ ੑ ೳ ʹ ࣮ ૷ ͢ Δ ʹ ͸ ໰ ୊ ͕ ͋ Δ ɽ· ͣ খ ͞ ͍ ߦ ྻ ʹ ର ͠ ͯ ͷ ԋ ࢉ ਺ Λ ߟ ͑ Δͱɼֻ͚ࢉ͸‫ݮ‬Β͢͜ͱ͕Ͱ͖Δ͕଍͠ࢉɾҾ͖ࢉ͸૿͍͑ͯΔɽ௨ৗͷΞϧΰϦζϜ͸ɼඞཁ ͳ ֻ ͚ ࢉ ͱ ଍ ͠ ࢉ ͷ ਺ ͕ Ұ க ͠ ͯ ͍ Δ ɽ࣮ ࡍ ͷ Ϛ γ ϯ ͷ ϐ ʔ Ϋ ੑ ೳ ͸ ֻ ͚ ࢉ ͱ ଍ ͠ ࢉ ͦ ΕͧΕʹ‫ݶ‬ք͕͋Δ্ɼfmadd ͳͲ଍͠ࢉͱֻ͚ࢉΛҰ౓ʹߦ͏໋ྩΛ༻͍ͯॳΊͯϐʔΫੑೳΛൃ‫͢ش‬Δ͜ͱ͕ଟ͍ͨΊɼখ͍͞ߦྻʹରͯ͠ Strassen Λ༻͍Δͱɼ଍͠ࢉɾҾ͖ࢉͷଟ͞ʢֻ͚ࢉͱͷෆ‫ߧۉ‬ʣ͕໰୊ͱͳΔɽ͜ͷ໰୊͸௨ৗɼ͋Δఔ౓େ͖ͳߦྻʹରͯ͠͸ Strassen Λద༻͠ɼ͋Δͱ͜ΖͰ௨ৗͷߦྻੵʹ੾Γସ͑Δ͜ͱͰճආ͞ΕΔɽେ ͖ ͳ ߦ ྻ ʹ ର ͠ ͯ ΋ ໰ ୊ ͕ ͋ Δ ɽͦ Ε ͸ ɼ࠶ ‫ ؼ‬త ʹ ֻ ͚ ࢉ ͞ Ε Δ খ ߦ ྻʢ ਤ 6 ͷ (A00 +A11), (B00 + B11) ͳͲʣ΍ɼ෦෼ղʢM0, M1 ͳͲʣͷͨΊʹɼҰ࣌ྖҬ͓Αͼͦ͜΁ͷίϐʔ͕ඞཁʹͳΔ͜ͱͰ͋ΔɽҰํɼ௨ৗͷΞϧΰϦζϜͰ͸ɼ෼ׂ‫ޙ‬ͷখߦྻ͸΋ͱ΋ͱͷߦྻ(A, B) ͷҰ෦ʹա͗ͣɼ‫݁ࢉܭ‬Ռ΋΋ͱ΋ͱͷߦྻ C ʹ௚઀஝ੵ͢Ε͹Α͔ͬͨɽେ͖ͳߦྻʹରͯ͜͠ͷίϐʔΛผ్ߦ͏ͱɼେྔͷΩϟογϡϛε͕ൃੜ͢Δɽ
ैͬͯɼStrassen ͕ɼͦͷཧ࿦తͳੑ࣭͔Β‫ظ‬଴͞ΕΔ௨ΓͷੑೳΛൃ‫͖Ͱش‬Δͷ͸ɼඇৗʹେ͖ͳߦྻʹରͯ͠ͷΈɼͱ͍͏ͷ͕͜Ε·Ͱͷ conventional wisdom Ͱ͋ͬͨʢຊ࿦จʹΑΔͱɼx86 ্Ͱ͸ n ≥ 2000 ఔ౓ʣɽຊ࿦จ͸ͦΕΛࠀ෰͠ɼn ≈ 500 ఔ౓ͷߦྻͰ΋ɼ௨ৗͷ࠷దԽ͞ΕͨߦྻੵΛ্ճΔ͜ͱʹ੒ޭ͍ͯ͠Δɽ‫ج‬ຊతͳΞΠσΞ͸ίϩϯϒεͷཛతͳ΋ͷͰɼ࠷దԽ͞Εͨߦྻੵʹ͍ͭͯ஌͕ࣝ͋Ε͹ɼૉ௚ʹೲಘͰ͖Δɽ࠷దԽ͞ΕͨߦྻੵͰ͸ɼTLB ϛεΛ‫ݮ‬Β͢ɼϋʔυ΢ΣΞʹΑΔઌಡΈΛൃಈͤ͞ΔͨΊɼখߦྻΛదٓ࿈ଓྖҬʹίϐʔ͔ͯ͠Β࠷಺ϧʔϓΛ࣮ߦ͢Δɽ*3 ຊ࿦จͰ͸ͦͷ࿈ଓྖҬ΁ͷίϐʔͷҰ‫ͯ͠ͱ؀‬ɼ্‫Ͱه‬໰୊ͱͳΔૢ࡞Λ࣮ߦ͢Δɽ۩߹తʹ͸ɼ

1M0 = (A00 + A11) (B00 + B11); C00 += M0; C11 += M0;ͷΑ͏ͳɼ(ߦྻ + ߦྻ)(ߦྻ + ߦྻ) Λ࣮ߦ͢Δͷʹඞཁͳ଍͠ࢉΛɼ࿈ଓྖҬ΁ͷίϐʔͷҰ‫ͯ͠ͱ؀‬ʢখߦྻ͝ͱʹʣ࣮ߦ͢Δɽ·ͨɼֻ͚ࢉΛ࣮ߦͨ݁͠Ռ΋Ұ࣌ྖҬʢ্‫ه‬ͷ M0ʣʹॻ͖ࠐΉ୅ΘΓʹɼখߦྻੵΛ࣮ߦ͠ͳ͕Βෳ਺ͷࠨลͷߦྻʢ্‫ه‬ͷ C00 ͓Αͼ C11ʣʹ஝ੵ͢Δɽ݁Ռͱͯ͠ɼn ≈ 500 ఔ౓ͷେ͖͞ͷߦྻͰɼ௨ৗͷߦྻੵͷ࣮૷ (BLIS) Λ্ճΔ͜ͱ͕֬ೝ͞Εͨɽ

5.3 High Performance Emulation of Quantum Circuits by Thomas Häner, Damian
S. Steiger, Mikhail Smelyanskiy, and Matthias Troyer
ETH Zurich, Intel, Microsoft ͷஶऀʹΑΔɼHigh Performance Emulation of Quantum Circuits
ͱ୊͢Δ࿦จɽྔࢠ‫ػࢉܭ‬Λ‫ݹ‬యతͳ‫ߴͰػࢉܭ‬଎ʹ emulate ͢Δํࣜʹؔ͢Δ‫ڀݚ‬ɽྔࢠ‫ػࢉܭ‬Λ‫ݹ‬యతͳ‫Ͱػࢉܭ‬୅ସͤ͞Δ͜ͱ͸ɼྔࢠ‫͢ݱ࣮͕ػࢉܭ‬Δ·ͰͷؒɼϓϩάϥϜΛ։ൃɾσόοά͢*3 ίϐʔ͠ͳ͍৔߹ɼߦྻཁૉʹର͢ΔΞΫηε͕େ͖ͳετϥΠυͰͷΞΫηεͱͳΓϋʔυ΢ΣΞઌಡΈ͕ൃಈ͞Εͳ͍ɽ·ͨɼখߦྻ͕ TLB ͷಧ͘ൣғͰΧόʔͰ͖ͳ͘ͳΓɼTLB ϛε͕ൃੜ͢ΔɼߦྻαΠζʹΑͬͯ͸ΩϟογϡͷίϯϑϦΫτϛε͕‫͖ى‬ΔՄೳੑ΋͋Δɽ

7
スーパーコンピューティングニュース- 31 -

Vol.19,No.12017

Δ‫ͯ͠ͱڥ؀‬ɼ͓Αͼɼ։ൃ్্ͷྔࢠ‫ʹػࢉܭ‬ର͢Δਖ਼͍͠ੑೳൺֱର৅ͱͯ͠ɼॏཁͰ͋Δɽ‫ݹ‬యతͳ‫ػࢉܭࢠྔͰػࢉܭ‬Λ໛ٖ͢Δ͜ͱ͸͜Ε·Ͱ΋ߦΘΕ͖͕ͯͨɼ͜ͷ࿦จͰ͸ɼैདྷߦΘΕ͖ͨɼ“simulation” ʹରͯ͠ɼ‫ݹ‬యత‫Ͱػࢉܭ‬ΑΓޮ཰తʹ࣮ߦͰ͖Δ “emulation”
ΛఏҊ͢Δɽ྆ऀͷҧ͍ʹ͍ͭͯઆ໌͢ΔͨΊɼ·ͣྔࢠ‫ػࢉܭ‬ͷ‫ࢉܭ‬ϞσϧΛઆ໌͢Δɽn ‫ ݸ‬ͷ ྔ ࢠ Ϗ ο τ ͔ Β ͳ Δ ‫ ܥ‬ͷ ঢ় ଶ ͸ ɼͦ Ε Β n ྔ ࢠ bit ͕ औ Γ ͏ Δ 2n ‫ ݸ‬ͷ ঢ় ଶ ͷ ॏ Ͷ ߹ ΘͤͰ͋Γɼ2n ཁૉΛ࣋ͭෳૉ਺ͷϕΫτϧʢୠͦ͠ͷϊϧϜ͸ 1ʣͱͯ͠ϞσϧԽͰ͖ΔɽͦΕΛঢ়ଶϕΫτϧͱ͍͏ɽྔࢠ‫ ͕ػࢉܭ‬1 εςοϓͰߦ͏‫ࢉܭ‬͸ɼঢ়ଶϕΫτϧͷϊϧϜΛ 1ʹอͭม‫׵‬ʢϢχλϦม‫׵‬ʣͰ͋ΓɼྔࢠΞϧΰϦζϜ͸ɼ‫࢝ݪ‬తͳϢχλϦม‫׵‬Λ‫܁‬Γฦ͢͜ͱͰ‫ه‬ड़͞ΕΔɽ‫࢝ݪ‬తͳϢχλϦม‫׵‬͸ɼগ਺ʢ1 ‫ ͔ݸ‬2 ‫ݸ‬ʣͷྔࢠϏοτʹରͯ͠࡞༻͢Δɼྔࢠήʔτͱ‫ݺ‬͹ΕΔม‫͋Ͱ׵‬Δɽͨͩ͜͠ͷ৔߹΋ঢ়ଶϕΫτϧʹର͢ΔେҬతͳ࡞༻ͱͳΔɽ೚ҙͷ 1 ྔࢠϏοτʹର͢ΔྔࢠήʔτͱɼCNOT ͱ‫ݺ‬͹ΕΔಛผͳ 2 ྔࢠϏοτʹର͢ΔྔࢠήʔτͰɼn ྔࢠϏοτʹର͢Δ೚ҙͷϢχλϦม‫ߏ͕׵‬੒Ͱ͖Δ͜ͱ͕ࣔ͞Εͯ
͍Δɽ͜ͷࣄ࣮͸ɼྔࢠ‫ػࢉܭ‬Λ࣮‫͢ݱ‬ΔࡍɼCNOT ͱɼ1 ྔࢠϏοτʹର͢Δྔࢠήʔτ͕࣮‫͖Ͱݱ‬Ε͹ྑ͍ͱ͍͏໨ඪΛ༩͑ͯ͘ΕΔɽྔ ࢠ ‫ ػ ࢉ ܭ‬ͷ simulation ͱ ͸ ɼΞ ϧ ΰ Ϧ ζ Ϝ Λ จ ࣈ ௨ Γ ɼྔ ࢠ ή ʔ τ ͷ ૊ Έ ߹ Θ ͤ ͱ ͠ ͯ໛ ٖ ͢ Δ ΋ ͷ Ͱ ͋ Δ ɽ‫ ݹ‬య త ͳ ‫ ͚ ͓ ʹ ࢉ ܭ‬Δ Ξ φ ϩ δ ʔ ͱ ͠ ͯ ͸ ɼ೚ ҙ ͷ ૊ Έ ߹ Θ ͤ ճ ࿏ ͕NAND ή ʔ τ ͷ ૊ Έ ߹ Θ ͤ Ͱ ࣮ ‫ ͖ Ͱ ݱ‬Δ ͷ Ͱ ɼ༩ ͑ Β Ε ͨ ࿦ ཧ ࣜ ͷ ஋ Λ ‫ ͢ ࢉ ܭ‬Δ ͷ ʹ ɼҰ ୴NAND ήʔτͷ૊Έ߹Θͤͱͯ͠ॻ͖Լ͠ɼ͋ͱ͸ NAND ήʔτͷ࡞༻Λ໛ٖ͍ͯ͠Δͷͱಉ
͡Ͱ͋Δɽผͷྫ͑࿩Λ͢ΔͳΒ͹ɼεΫϦϓτ‫ޠݴ‬ͷ࣮ߦΛ͢ΔͷʹɼεΫϦϓτΛҰ୴‫ػ‬ց‫ޠ‬ͷྻʹม‫͔ͯ͠׵‬Βɼ͋ͱ͸ͦͷ‫ػ‬ց‫ޠ‬ΛҰ໋ྩͣͭ໛ٖ࣮ߦ͍ͯ͠Δ͜ͱʹࣅ͍ͯΔɽ͜Εʹରͯ͠ྔࢠճ࿏ͷ emulation ͱ͸ɼ࣮‫͍ͨ͠ݱ‬ϢχλϦม‫׵‬Λɼͦͷ··ঢ়ଶϕΫτϧʹ࡞༻ͤ͞Δ‫ํࢉܭ‬๏Ͱ͋ΔɽεΫϦϓτ‫ޠݴ‬ͷͨͱ͑Λଓ͚ΔͳΒ͹ɼεΫϦϓτ‫ʹޠݴ‬ߦ ྻ ‫ ͕ ࢉ ܭ‬ग़ ͯ ͖ ͨ Β ɼͦ ͷ ‫ ࣗ ࢉ ܭ‬਎ Λ · Δ ͝ ͱ ઐ ༻ ͷ ؔ ਺ ‫ ͼ ݺ‬ग़ ͠ Ͱ ࣮ ‫ ͢ ݱ‬Δ ͷ ͱ ࣅ ͯ ͍
ΔɽEmulation ͕༗༻ͳ৔໘ͱͯ͠ɼଟ͘ͷΞϧΰϦζϜͰ࢖ΘΕ͍ͯΔɼྔࢠ FFT ΍ྔࢠҐ૬ਪఆ͕͋Δɽྔࢠ FFT ͸ϢχλϦม‫͋Ͱ׵‬Γɼͦͷ݁ՌΛಘΔʹ͸ɼঢ়ଶϕΫτϧʹରͯ͠จࣈ௨ΓɼFFT Λ࣮ߦ͢Ε͹ྑ͍ɽ͜Ε͕ emulation ʹ૬౰͢ΔɽҰํ simulation ͸ɼྔࢠ FFTΛ݁Ռతʹ࣮‫͢ݱ‬Δྔࢠήʔτͷྻʢ໿ n2 /2 ‫ݸ‬ͷྻʣΛɼঢ়ଶϕΫτϧʹॱʑʹ࡞༻ͤ͞Δ͜
ͱͰɼFFT Λ࣮‫͢ݱ‬Δɽલऀͷํ͕ߴ଎Ͱ͋Δ͜ͱ͸௚‫ײ‬తʹᰐ͚ΔͰ͋Ζ͏ɽ࣮ ‫ Ͱ ݧ‬͸ ɼঢ় ଶ ϕ Ϋ τ ϧ ʹ ؔ ͢ Δ ֻ ͚ ࢉ ΍ ׂ Γ ࢉ ͳ Ͳ ͷ ૢ ࡞ Ͱ ͸ ɼ਺ ඦ ഒ ͷ ߴ ଎ Խ ɼྔ ࢠFFT Ͱ΋ 6ʙ16 ഒͷߴ଎Խ͕ಘΒΕΔ͜ͱ͕֬ೝ͞ΕͨɽΞΠσΞࣗ਎͸ɼ‫࢝ݪ‬తͳૢ࡞ʢྔࢠήʔτʣΛଟ਺૊ΈΘ࣮ͤͯ‫͞ݱ‬Εͨʮߴਫ४ͳʯૢ࡞ʢྫ͑͹ྔࢠ FFTʣΛɼήʔτ·Ͱ෼ղͤͣʹͦͷ··࣮ߦ͢Ε͹ɼԋࢉྔ΋ϕΫτϧΛߋ
৽͢ΔͨΊͷτϥϑΟοΫ΋࡟‫͖Ͱݮ‬Δͱ͍͏ɼ‫ݴ‬ΘΕͯΈΕ͹ࢸ‫ۃ‬౰વͷ΋ͷͰ͋ΔɽΉ͠Ζ͜ΕΛࠓ·Ͱ΍ͬͯ͜ͳ͔ͬͨͷ͕ෆࢥٞͱ‫͑ݴ‬Δɽ͕ͩɼྔࢠ‫༻࣮͕ػࢉܭ‬Խ͢Δ·Ͱɼͦ ͷ ൺ ֱ ର ৅ Ͱ ͋ Δ ‫ ݹ‬య త ͳ Ξ ϧ ΰ Ϧ ζ Ϝ ΍ ɼ‫ ݹ‬య త ‫ Ͱ ػ ࢉ ܭ‬ͷ ྔ ࢠ ‫ ࢉ ܭ‬Τ ϛ ϡ Ϩ ʔ γ ϣ ϯΛɼे෼ߴ଎Խͯ͠ɼਖ਼͍͠ൺֱର৅Λઃఆ͓ͯ͘͜͠ͱ͸ॏཁͰ͋Ζ͏ͱࢥΘΕΔɽ

8
スーパーコンピューティングニュース- 32 -

Vol.19,No.1

2017

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1617



#pragma dno kernel
void func(float ***a, float ***b, ..) {#pragma dno data domName(i, j, k)a, b;#pragma dno timeloop
for(int t; t< TIME_MAX;t++) {for(int i; i<NX; i++) {for(int j; i<NY; j++) {... // comput. not related to a and bfor(int k; k<NZ; k++) {a[i][j][k] = c * (b[i-1][j][k] + b[i+1][j][k] + b[i][j][k]+b[i][j+1][k] + b[i][j-1][k]);
}
}
}
}}

ਤ7Daino ͷίʔυྫ

5.4 Daino: A High-level Framework for Parallel and Eﬃcient AMR on GPUs by
Mohamed Wahib, Naoya Maruyama and Takayuki Aokiཧ‫ͱݚ‬౦޻େͷஶऀʹΑΔɼ“Daino: A High-level Framework for Parallel and Eﬃcient AMRon GPUs” ͱ୊͢Δ࿦จͰɼ࠷༏ल࿦จ৆Λड৆ͨ͠ɽ
AMR ͸ adaptive mesh reﬁnement ͷུͰɼภඍ෼ํఔࣜͷ‫ٻ‬ղʹ͓͍ͯɼࡉ͔͍ϝογϡ͕ඞཁͳͱ͜Ζ͚ͩΛࡉ͔͍ϝογϡͰɼͦ͏Ͱͳ͍ͱ͜Ζ͸ߥ͍ϝογϡͷ··‫ࢉܭ‬Λ͢Δํ
๏Ͱ͋ΔɽྲྀମͰ͋Ε͹଎౓৔ͷมԽ͕ܹ͍͠ͱ͜Ζ͕લऀʹ֘౰͢Δɽ

AMR ͸‫ͱྔࢉܭ‬ϝϞϦ࢖༻ྔΛɼ௿͘อͬͨ··ৄࡉͳγϛϡϨʔγϣϯΛՄೳͱ͢Δॏཁͳ‫ํࢉܭ‬๏Ͱ͋Δ͕ɼϝϞϦ؅ཧɼෛՙ෼ࢄͳͲޮ཰తʹ࣮૷͢Δͷ͕ࠔ೉Ͱ͋Δɽͦ͜Ͱຊ࿦จ͸ɼϓϩάϥϚ͕Ұ༷ͳϝογϡΛԾఆͨ͠୯७ͳίʔυʢྫ: ਤ 7ʣʹɼΞϊςʔγϣϯ (pragma) ΛՃ͑Δ͚ͩͰɼ࢒ΓͷॲཧΛߦͬͯ͘ΕΔߴਫ४‫ ޠݴ‬Daino Λઃ‫ܭ‬ɼ࣮૷ͨ͠ɽϑΣʔζϑΟʔϧυ๏ɼྲྀମɼshallow-water ͷ 3 ͭͷΞϓϦέʔγϣϯͰɼҰ༷ϝογϡͱൺ΂ͯ 1.9 ഒ͔Β 9.6 ഒͷߴ଎ԽΛୡ੒͢Δͱͱ΋ʹɼखಈͰ AMR ΛίʔσΟϯάͨ͠৔߹ͱಉ౳ ͷ ੑ ೳ Λ ୡ ੒ ͠ ͯ ͍ Δ ɽϑ Σ ʔ ζ ϑ Ο ʔ ϧ υ ๏ ͷ Ұ ༷ ϝ ο γ ϡ ί ʔ υ ͸ ɼ2011 ೥ ʹ ΰ ʔ υϯɾϕϧ৆Λड৆ͨ͠ίʔυͰ͋Δɽ

5.5 Merge-based Parallel Sparse Matrix-Vector Multiplication by Duane Merrill andMichael Garland
NVIDIA ͷஶऀʹΑΔɼ “Merge-based Parallel Sparse Matrix-Vector Multiplication” ͱ୊͢Δ࿦จɽૄߦྻ-ϕΫτϧੵͷෛՙ෼ࢄΛୡ੒͢Δ࿦จɽૄߦྻ-ϕΫτϧੵʢSpMV; y = Ax; x
͸ m-ϕΫλ, y ͸ n-ϕΫλͰɼA ͸ૄߦྻʣ͸ɼ

9スーパーコンピューティングニュース- 33 -Vol.19,No.1

2017

1
2
34



for (i = 0; i < n; i++)y[i] = 0.0;
for each ͷඇྵཁૉ A A_{i,j}y[i] += Ai,j * x[j];ਤ8SpMV ٖࣅίʔυͰୡ੒Ͱ͖Δ୯७ͳૢ࡞Ͱ͋Δɽͨͩ͠΋ͪΖΜ Ai,j Λ 2 ࣍‫ݩ‬ͷ഑ྻͱͯ͠ද͢Θ͚Ͱ͸ͳ͘ɼ࠷΋Α͘࢖ΘΕΔͷ͸ɼCompressed Sparse Row (CSR) ͱ‫ݺ‬͹ΕΔ‫͋Ͱࣜܗ‬Δɽ͜Ε͸ɼA ͷඇྵཁૉ͚ͩΛߦ༏ઌͰͳΒ΂ͨҰ࣍‫ݩ‬ͷ഑ྻ values ͱɼ֤ߦͷཁૉ͕഑ྻ values ʹ͓͍ ͯ Ͳ ͜ ͔ Β ࢝ · Δ ͔ Λ อ ࣋ ͢ Δ ิ ॿ ഑ ྻ row offsets Ͱ ද ͢ ɽ values[row offsets[i]],values[row offsets[i]+1], ..., values[row offsets[i + 1]] ͕ i ߦ ໨ ͷ ඇ ྵ ཁ ૉ ͱ ͳ Δ ɽ͞ΒʹͦΕΒͷ֤ཁૉ͕Կྻ໨ͷཁૉͰ͋Δ͔Λࣔ͢ิॿ഑ྻ colum indices ΋ඞཁʹͳΔɽͦΕΒΛ༻͍ͯɼCSR ‫ʹࣜܗ‬ର͢Δ SpMV ͸ҎԼͰ࣮‫͖Ͱݱ‬Δɽ

12345678for (int i = 0; i < n; i++) {y[i] = 0.0;
for (int nz = row_offsets[i]; nz < row_offsets[i+1]; nz++) {int j = colum_indices[nz];double a = values[nz]; // a = Ai,jy[i] += a * x[j];}}ਤ9SpMV CSR ‫ࣜܗ‬՝୊͸͜ΕΛͲ͏ෛՙ෼ࢄͤ͞Δ͔Ͱ͋Δɽ্‫ه‬ͷ CSR Λ‫ͨ͠ʹݩ‬ίʔυ͸ɼߦΛ୯Ґͱͨ͠ෛՙ෼ࢄ͕ࣗવͰ͋Γɼ࣮ࡍ Intel Math Kernel Library ͳͲͰ΋༻͍ΒΕ͍ͯΔɼ͔͠͠Ұ෦ͷߦ͕ଞͱൺ΂ͯѹ౗తʹଟ͘ͷඇྵཁૉ਺Λ࣋ͭߦྻʹରͯ͠͸ྑ͍ෛՙ෼ࢄ͕ಘΒΕͳ͍ɽ͜ͷ࿦จͰ͸ͦΕΛཪ෇͚Δσʔλͱͯ͠ɼUniversity of Florida ͷߦྻίϨΫγϣϯશͯʹ ର ͠ ͯ ಘ Β Ε Δ ࣮ ߦ ੑ ೳ Λ Մ ࢹ Խ ͠ ɼಉ ͡ ߦ ྻ α Π ζ Ͱ ΋ ࣮ ߦ ੑ ೳ ͕ Ұ ܻ Ҏ ্ ҧ ͏ Α ͏ ͳέʔε͕͋Δ͜ͱΛࣔ͠ɼ໰୊Λཪ෇͚͍ͯΔɽ͜ ͷ ໰ ୊ Λ ղ ܾ ͢ Δ Ұ ͭ ͷ ํ ๏ ͸ ɼඇ ྵ ཁ ૉ Λ ౳ ෼ ͢ Δ ͜ ͱ Ͱ ɼ࠷ ΋ ୯ ७ ʹ ͸ Coordinate(COO) ‫ྻߦ—ࣜܗ‬ͷ֤ཁૉ Ai,j ʹରͯ͠ɼߦ (i)ɼྻ (i)ɼ஋ (Ai,j ) ͷ 3 ͭ૊Λ࣋ͭ—ͰߦྻΛ֨ೲ͢Ε͹ɼ༰қʹඇྵཁૉΛ౳෼ׂ͢Δ͜ͱ͕Ͱ͖Δɽ͜ͷํࣜͰ͸ϕΫτϧͷಉ͡ཁૉΛෳ਺ͷεϨου͕ߋ৽͠͏Δ͕ɼ֤εϨου͕୲౰͢Δ࠷ॳͷߦ͚ͩ͸ผͷม਺Λ༻ҙͯͦ͜͠Λߋ৽ͯ͠ɼ࠷‫ʹޙ‬࿨ΛऔΕ͹‫߹ڝ‬ঢ়ଶ΋ճආͰ͖Δɽ

COO ‫ࣜܗ‬͸ CSR ʹൺ΂ͯྖҬͷར༻ޮ཰΋ѱ্͍ɼಉ͡ཁૉʹର͢Δॻ͖ࠐΈΛϨδελ্ Ͱ · ͱ Ί Δ ͜ ͱ ΋ ೉ ͠ ͍ ɽͦ ͜ Ͱ ɼCSR ‫ ࣜ ܗ‬ͷ · · ඇ ྵ ཁ ૉ Λ ౳ ෼ ׂ ͢ Δ ͜ ͱ ͕ ‫ ٻ‬Ί Β ΕΔ ɽ· ͣ ඇ ྵ ཁ ૉ Λ ౳ ෼ ׂ ͢ Δ ͱ ɼ֤ ε Ϩ ο υ ͕ values ഑ ྻ ͷ த Ͱ ୲ ౰ ͢ Δ ൣ ғ ͕ ܾ · Δ ɽ͋ͱ͸ͦΕʹରԠ͢ΔߦͷൣғΛ‫ٻ‬ΊΕ͹Α͘ɼͦΕ͸ row offsets ഑ྻʹରͯ͠ೋ෼୳ࡧΛ࣮ߦ͢Δ͜ͱͰ‫·ٻ‬Δɽ௕͍લஔ͖ͷ͋ͱɼΑ͏΍͘ຊ࿦จͷ৽‫ͳن‬෦෼ͷઆ໌ʹೖΔɽຊ࿦จ͕໰୊ͱ͍ͯ͠Δͷ͸ɼ্‫ه‬ͷํ๏ͰඇྵཁૉΛ౳෼ׂͯ͠΋ɼ֤εϨου͕୲౰͢Δߦ਺ʹภΓ͕ੜͣΔ͜ͱ͕͋Γ͏Δɼͱ͍͏఺Ͱ͋Δɽ͜Ε͸‫࣮ݱ‬ͷߦྻͰසൟʹੜͣΔ໰୊Ͱ͸ͳ͍͕ɼඇྵཁૉ͕Ұͭ ΋ ͳ ͍ ߦ ͕ ଟ ਺ ͋ Δ ৔ ߹ ͳ Ͳ ʹ ੜ ͡ ͏ Δ ɽWeb ϖ ʔ δ ͷ ά ϥ ϑ ߏ ଄ ͳ Ͳ Ͱ ͕ ɼ͜ ͷ Α ͏ ͳ10
スーパーコンピューティングニュース- 34 -Vol.19,No.12017έʔεʹ֘౰͢ΔΒ͍͠ɽͦ͜Ͱຊ࿦จͰ͸ɼ֤εϨου͕୲౰͢Δʮߦͷ਺ + ඇྵཁૉ਺ʯΛ౳෼͢Δɽ͜ͷ໨ඪ͞
͑ఆ·Ε͹࢒Γ͸͞΄Ͳ೉͘͠ͳ͍ɽ΍͸Γೋ෼୳ࡧΛ࢖ͬͯɼ֤εϨου͕୲౰͢ΔඇྵཁૉͷൣғΛ‫ٻ‬ΊΕ͹ྑ͍ɽ۩ମతʹ͸ɼεϨου t ͕୲౰͢Δ࠷ॳͷඇྵཁૉ͕ j ൪໨ͷඇྵཁૉͰɼͦΕ͕ i ߦ໨ͷཁૉͩͬͨͱ͢Δɽ͢ΔͱεϨου 0, . . . , t − 1 ·ͰͰ߹Θͤͯ୲౰͢Δߦͷ਺ + ඇྵཁૉͷ਺͸ i + j Ͱɼ͜Εׂ͕߹ʹͯ͠શମͷ t/T ʹͳΔΑ͏ʹௐઅ͢Ε͹Α͍ɽ͢ͳΘͪɼ

i+j =(n + nnz)t.
T(1)͜͜Ͱ j ͸ɼͦΕ͕ i ߦ໨ͷཁૉͰ͋Δ͜ͱ͔Βɼ

row oﬀsets[i] ≤ j < row oﬀsets[i + 1]
Λຬͨ͢ɽ͢ͳΘͪɼ

i + row oﬀsets[i] ≤(n + nnz)t< i + row oﬀsets[i + 1]
TͱͳΔΑ͏ͳ i Λɼ΍͸Γೋ෼୳ࡧͰ‫ٻ‬Ίɼ͋ͱ͸ࣜ (1) ʹैͬͯ j Λ‫ٻ‬ΊΕ͹Α͍ɽ࣮‫݁ݧ‬Ռͱͯ͠ɼߦ୯ҐͰͷෛՙ෼ࢄΛߦ͏ Intel MKL ΍ cuSPARSE library ͱൺֱͯ͠࠷େ
Ͱ 15 ഒఔ౓ʢௐ࿨ฏ‫ Ͱۉ‬20% ఔ౓ʣͷߴ଎Խ͕ಘΒΕͨɽߦؒͷෛՙ෼ࢄΛղܾͨ͠ଞͷΞϓϩʔνͱൺֱ͢ΔͱɼΩϟογϡʹऩ·Δখ͞ͳߦྻʹରͯ͠͸େ෯ͳߴ଎Խʢௐ࿨ฏ‫Ͱۉ‬໿11 ഒʣ͕ಘΒΕ͍ͯΔɽେ͖ͳߦྻʹରͯ͠͸΄΅ಉ౳ͷੑೳͰ͋Δɽ

6͓ΘΓʹ
࣍ճɺSC17 ͸ 2017 ೥ 11 ݄ 12 ೔͔Β 17 ೔ͷ೔ఔͰίϩϥυभσϯόʔʹͯ։࠵͞ΕΔ༧ఆͰ

͋Δɻ

11
スーパーコンピューティングニュース- 35 -

Vol.19,No.1

2017