Share
Embed
Programmable Interconnect Control Adaptive to Communication Pattern of Applications
Keichi Takahashi
February 04, 2019
Transcript
49 slides
-
Programmable Interconnect Control Adaptive to Communication Pattern of Applications େࡕେֶେֶӃใՊֶݚڀՊ
ϚϧνϝσΟΞֶઐ߈Ԡ༻ϝσΟΞֶߨ࠲ ∁ڮܛஐ ݄ -
ߴੑೳܭࢉ࠷ઌͷՊֶٕज़ͷݚڀ։ൃʹඞਢͷಓ۩ ‣ ࡐྉՊֶɺੜ໋ՊֶɺٿՊֶɺ֩ཧֶͳͲଟ͘ͷͰ׆༻ ‣ ΑΓେنͳΛղͨ͘Ίܭࢉੑೳͷཁٻߴ·Γଓ͚͍ͯΔ ‣ &YB'-014ͷ౸ୡΛࢦͯ͠ݚڀ͕ਪਐ͞Ε͍ͯΔ എܠߴੑೳܭࢉ 1IPUPCZ0BL3JEHF/BUJPOBM-BCPSBUPSZ$$#:
0SJHJOBMIUUQTXXXqJDLSDPNQIPUPTPBLSJEHFMBC ং -
ۙͷߴੑೳܭࢉγεςϜͷଟ͘ΫϥελΞʔΩςΫνϟʹجͮ͘ ‣ Ϋϥελ૬ޓ݁߹ʹΑΓଓ͞Εͨଟͷܭࢉػ͔Βߏ ‣ ֤ܭࢉػ૬ޓ݁߹Λհͯ͠σʔλΛަ͠ͳ͕Βฒྻܭࢉ ૬ޓ݁߹ͷ௨৴ੑೳͷॏཁੑ 0 1 2
3 4 5 ૬ޓ݁߹ ߴੑೳωοτϫʔΫ ܭࢉػ ૬ޓ݁߹Λհͨ͠௨৴ ϓϩηε ং 5PQ +VOF ͷ ΞʔΩςΫνϟ༁ $MVTUFS .11 ૬ޓ݁߹ͷ௨৴ੑೳΫϥελ શମͷܭࢉੑೳΛେ͖͘ࠨӈ͢Δ -
ूஂ௨৴ ʜ ର௨৴ )1$͚ϓϩηεؒ௨৴ϥΠϒϥϦ ‣ ϓϩηε/8ΞυϨεͷΘΓʹ ϥϯΫ ϓϩηε*% ʹΑͬͯࣝผ ‣
ฒྻϓϩάϥϛϯάʹ༗༻ͳ ର௨৴ͱूஂ௨৴Λఏڙ .FTTBHF1BTTJOH*OUFSGBDF .1* 0 1 4FOE *TFOE 3FDW *SFDW 0 2 3 1 #DBTU 1 2 3 0 3FEVDF 2 3 0 1 "MMUPBMM 5$1*1 .1*ϥΠϒϥϦ ΞϓϦέʔγϣϯ 4PDLFU 7FSCT 14. .1* *OpOJ#BOE 0NOJ1BUI ং ϓϩηε ϓϩηε -
ݻఆతͳ૬ޓ݁߹ ϓϩηεؒ௨৴ͷॴཁ͕࣌ؒ૿େ͠ɺ ΞϓϦέʔγϣϯͷ࣮ޮੑೳ͕Լ ૬ޓ݁߹ͷϦϯΫͰ௨৴ܦ࿏ͷিಥ͕ൃੜ ૬ޓ݁߹ͷઃܭ ߏங࣌ʹܾఆ͠ॊೈͳมߋ͕ ࠔ τϙϩδ ϧʔςΟϯά
ং ϓϩηεؒ௨৴ύλʔϯ ΞϓϦέʔγϣϯ͝ͱʹҟͳΓ ࣮ߦதʹมԽ͢Δ ΞϓϦ$ 0 1 2 3 ΞϓϦ# 0 1 2 3 ΞϓϦ" 0 1 2 3 -
ॊೈ͔ͭಈతͳωοτϫʔΫ੍ޚΛ࣮ݱ͢Δ/8ΞʔΩςΫνϟ ‣ ैདྷͷωοτϫʔΫʹ͓͚Δ੍ޚػೳͱసૹػೳΛ ‣ ωοτϫʔΫΛιϑτΣΞͷΑ͏ʹϓϩάϥϜՄೳʹ͢Δ ‣ 4%/ͷۀքඪ४త࣮0QFO'MPX 4PGUXBSF%FpOFE/FUXPSLJOH 4%/
ैདྷͷ/8ΞʔΩςΫνϟ 4%/ ੍ޚ ੍ޚ ੍ޚ సૹ సૹ సૹ సૹ సૹ సૹ ίϯτϩʔϥ ੍ޚ ੍ޚ ੍ޚ ং -
ؔ࿈ݚڀ ϓϩηεஔ ϓϩηεؒ௨৴ύλʔϯ 0 1 2 3 4 5
6 7 8 9 10 11 ૬ޓ݁߹ͱ௨৴ύλʔϯΛ ҙࣝͨ͠ϓϩηεஔ ૬ޓ݁߹ͷτϙϩδΛ ҙࣝͨ͠ूஂ௨৴ΞϧΰϦζϜ 0 1 2 3 4 5 6 7 8 9 10 11 ૬ޓ݁߹ ং ಈతมߋ ಈతมߋ ಈతมߋ ૬ޓ݁߹ͷϓϩάϥϚϏϦςΟΛ ׆༻ͨ͠ݚڀ͕ෆे -
తϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ ૬ޓ݁߹ ܭࢉػ ং ΞϓϦ" ΞϓϦ# ΞϓϦ$ 0 1
2 3 0 1 2 3 0 1 2 3 ಈత੍ޚ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త .1*ΞϓϦέʔγϣϯ -
՝ ং MPI_Bcast(…); for (i = 0; i <
N; i++) { … } … MPI_Allreduce(…); 4SD %TU *OTUSVDUJPOT A B Output to X A C Output to Y B D Output to Z .1*ΞϓϦέʔγϣϯ ϓϩηεؒ௨৴ύλʔϯ ૬ޓ݁߹੍ޚ໋ྩ ՝૬ޓ݁߹ͷύέοτϑϩʔ ͷղੳ 0 1 2 3 4 5 0 1 2 3 4 5 ՝௨৴ύλʔϯΛҙࣝͨ͠૬ޓ݁߹ͷ ಈత੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦέʔγϣϯͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త -
શମߏ ং ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ
ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త -
શମߏ ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ
ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ -
ϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷݚڀ։ൃ Ϋϥελͷߏ ௨৴ύλʔϯ 0 2 1 3 δϣϒηοτ K
K K K ૬ޓ݁߹ ߴੑೳωοτϫʔΫ ܭࢉػ ෳ߹త࡞༻ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ૬ޓ݁߹ͷύέοτϑ 0 1 2 3 ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δ ύέοτϑϩʔͷධՁڥ͕ෆՄܽ -
ষͷత Ϋϥελ্ͰΞϓϦέʔγϣϯΛ࣮ߦͨ͠ࡍʹɺ૬ޓ݁߹ʹ ൃੜ͢ΔύέοτϑϩʔΛղੳ͢ΔͨΊͷධՁڥΛߏங͢Δ త ௨৴ύλʔϯ Ϋϥελͷߏ 0 2 1
3 K K K K ෳ߹త࡞༻ ૬ޓ݁߹ ߴੑೳωοτϫʔΫ ܭࢉػ δϣϒηοτ ཁ࣮݅ΞϓϦέʔγϣϯͷ௨৴ύλʔϯͷநग़ ཁ݅૬ޓ݁߹ͷύέοτϑϩʔΛߴʹਪఆ ཁ݅Ϋϥελͷϓϩηεஔಛੑͷ࠶ݱ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ -
1'"OBMZ[FS૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ཁ࣮݅ΞϓϦέʔγϣϯͷ௨৴ύλʔϯͷநग़ ཁ݅૬ޓ݁߹ͷύέοτϑϩʔΛߴʹਪఆ ཁ݅Ϋϥελͷϓϩηεஔಛੑͷ࠶ݱ 1'1SPG ϓϩϑΝΠϥ .1*ؔʹΑͬͯൃੜͨ͠ϓϩηε ؒ௨৴Λܭଌɾه͢ΔͨΊͷࡉཻ.1*ϓϩϑΝΠϥ
1'4JN γϛϡϨʔλ ಈత੍ޚ͞Εͨ૬ޓ݁߹ͷ ύέοτϑϩʔΛղੳ͢ΔͨΊͷܰྔγϛϡϨʔλ -
ूஂ௨৴Λߏ͢Δݸผͷର௨৴·ͰิՄೳͳϓϩϑΝΠϥ ‣ طଘͷϓϩϑΝΠϥूஂ௨৴Λߏ͢Δର௨৴ΛิͰ͖ͳ͍ ‣ .1*1FSGPSNBODF3FWFBMJOH&YUFOTJPO*OUFSGBDF 1&364& Λ ༻͢Δ͜ͱͰɺݸผͷର௨৴·Ͱิ͢Δ͜ͱΛՄೳʹ͢Δ 1'1SPGࡉཻ.1*ϓϩϑΝΠϥ
࣮ࡍʹ࣮ߦ͞ΕΔ௨৴ #JOPNJBM5SFF ΞϧΰϦζϜ ΞϓϦέʔγϣϯ͔Βݟͨ.1*@#DBTU ͷڍಈ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ -
1'4JN૬ޓ݁߹ύέοτϑϩʔγϛϡϨʔλ 0 1 2 3 4 5 ϊʔυׂ ϓϩηεஔ
ϧʔςΟϯά K K K K ૬ޓ݁߹ͷ ύέοτϑϩʔྔ εέδϡʔϦϯά ௨৴ύλʔϯ Ϋϥελͷߏ 0 2 1 3 K K K K δϣϒηοτ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ϦϓϨΠ Ϛοϐϯά ࠶ݱ ग़ྗ ೖྗ 1'4JN ग़ྗ -
ධՁ࣮ݧ ߲ γϛϡϨʔγϣϯ݅ ܭࢉϊʔυ ܭίΞ τϙϩδ ஈ'BUUSFF PWFSTVCTDSJQUJPO
SBUJP ௨৴ύλʔϯ /"4$( ϧʔςΟϯά %NPE, ఏҊπʔϧ͕ɺΫϥελ্ͰΞϓϦέʔγϣϯΛ࣮ߦͨ͠ࡍͷ ૬ޓ݁߹ͷύέοτϑϩʔΛਖ਼֬ʹਪఆͰ͖͍ͯΔ͔ධՁ͢Δ త ௨৴ྔ͕ଟ͍ϕϯνϚʔΫ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ core1 core2 edge1 edge2 edge3 edge4 ܭࢉػ܈ ૬ޓ݁߹ -
$PSFεΠον&EHFεΠονؒͷύέοτϑϩʔͷྦྷੵྔΛγϛϡ Ϩʔγϣϯͱ࣮ଌͰൺֱ ‣ ޡࠩ࠷େͰ͋Γɺਖ਼֬ʹύέοτϑϩʔྔΛਪఆͰ͖͍ͯΔ DPSFˠ
FEHF DPSFˠ FEHF DPSFˠ FEHF DPSFˠ FEHF DPSFˠ FEHF DPSFˠ FEHF DPSFˠ FEHF DPSFˠ FEHF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF FEHFˠ DPSF ࣮ଌ γϛϡϨʔγϣϯ ධՁ݁Ռ ࠷େޡࠩ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ૬ޓ݁߹ ܭࢉػ܈ DPSF DPSF FEHF FEHF FEHF FEHF -
૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧΛఏҊ ‣ ଟ༷ͳ݅ԼͰΞϓϦέʔγϣϯΛ࣮ߦͨ͠ࡍͷ૬ޓ݁߹ͷ ύέοτϑϩʔྔΛৄࡉʹղੳՄೳ ఏҊπʔϧ͕ύέοτϑϩʔྔΛਖ਼֬ʹਪఆͰ͖͍ͯΔ͔ݕূ ‣ ࣮ଌͱൺֱ͠ޡࠩ࠷େͰ͋Γɺਖ਼֬ʹύέοτϑϩʔྔΛ ਪఆͰ͖͍ͯͨ ষͷ·ͱΊ
ଟ༷ͳΞϓϦέʔγϣϯͱΫϥελߏͷԼʹ͓͚Δ૬ޓ݁߹ ύέοτϑϩʔͷղੳखஈΛ࣮ݱ ߩݙ ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ -
શମߏ ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ
ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
ूஂ௨৴Ͱଟͷܭࢉػ͕ಉ࣌ଟൃతʹ௨৴͢ΔͨΊɺ ૬ޓ݁߹ͷෛՙ͕ߴ͍ ‣ ϦϯΫʹ͓͍ͯ௨৴ܦ࿏͕িಥ͢Δͱϓϩηεؒ௨৴ੑೳ͕Լ ‣ Ұ෦ͷϓϩηεؒ௨৴ͷੑೳԼ͕ूஂ௨৴શମͷੑೳʹӨڹ .1*ूஂ௨৴ʹ͓͚Δ௨৴ܦ࿏ͷিಥ 0 1
2 3 ௨৴ܦ࿏ͷিಥ ूஂ௨৴ͷ௨৴ύλʔϯ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
ఏҊͷجຊํ .1*ूஂ௨৴ؔͷ௨৴ύλʔϯΛߟྀ͠ɺ૬ޓ݁߹ͷύέοτ ϑϩʔΛෛՙࢄ͢Δ͜ͱʹΑΓɺ௨৴ܦ࿏ͷিಥΛܰݮ͠௨৴Λ ߴԽ 0 2 1 3 4
6 5 7 .1*ूஂ௨৴ؔͷ ௨৴ύλʔϯ ಈత੍ޚ ϦϯΫؒͷෛՙΛࢄ ೖྗ ૬ޓ݁߹ͷίϯτϩʔϥ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
4%/Λ׆༻ͨ͠.1*ूஂ௨৴ϑϨʔϜϫʔΫ ੍ޚ 4%/ίϯτϩʔϥ ܭࢉϊʔυ ૬ޓ݁߹ .1*ϥΠϒϥϦ .1*ΞϓϦέʔγϣϯ 4%/.1*ϥΠϒϥϦ τϙϩδݕग़
εΠον੍ޚ "MMSFEVDF #DBTU ੍ޚΞϧΰϦζϜ ֎෦*' ʜ িಥΛܰݮ͢Δ੍ޚΞϧΰϦζϜ ूஂ௨৴ͷ։࢝ ϓϩηεஔ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
"MMSFEVDF༻ύέοτϑϩʔ੍ޚΞϧΰϦζϜ 0 2 1 3 1 3 0 1
2 3 0 2 1 3 .1*@"MMSFEVDFͷ ϓϩηεؒ௨৴ύλʔϯ ૬ޓ݁߹ͷτϙϩδ 0 2 .1*@"MMSFEVDFͷϓϩηεؒ௨৴ʹΑͬͯൃੜ͢Δܭࢉػؒͷ ύέοτϑϩʔΛᩦཉ๏ʹΑΓܦ࿏ؒʹࢄ త 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
ධՁ࣮ݧ .1*@"MMSFEVDFͷ࣮ߦ࣌ؒ ஈ'BUUSFFτϙϩδ ϊʔυ ఏҊ.1*@"MMSFEVDFͷ 0QFO.1*ʹର͢ΔߴԽ ௨৴ύλʔϯΛߟྀͨ͠ύέοτϑϩʔ੍ޚʹΑΓɺ௨৴ܦ࿏ͷ িಥΛܰݮ͠ɺ.1*@"MMSFEVDFؔΛߴԽͰ͖͔ͨධՁ͢Δ త
࣮ߦ࣌ؒ<T> ϝοηʔδαΠζ<.#> 0QFO.1* දతͳ.1*࣮ ఏҊ ߴԽ ϝοηʔδαΠζ<.#> ͷߴԽ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
4%/Λ༻͍ͨύέοτϑϩʔ੍ޚʹΑΓ.1*ूஂ௨৴ΛߴԽ ‣ ௨৴ύλʔϯΛߟྀ͠ɺ૬ޓ݁߹ͷύέοτϑϩʔΛࢄ͢Δ ͜ͱʹΑΓɺ௨৴ܦ࿏ͷিಥΛܰݮ ‣ දతͳ.1*ूஂ௨৴ؔͰ͋Δ.1*@"MMSFEVDFΛରͱͯ͠ ϓϩτλΠϓ࣮Λ։ൃ ‣ ैདྷͷ.1*@"MMSFEVDFʹൺͯ࠷େͰͷߴԽΛ࣮ݱ
ষͷ·ͱΊ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽΛ֓೦࣮ূ͠ɺ ूஂ௨৴ͷߴԽͷجૅͱͳΔϑϨʔϜϫʔΫΛߏங ߩݙ 4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ -
ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ؔ࿈ۀ ‣ ,FJDIJ5BLBIBTIJFUBM l6OJTPO'MPX"4PGUXBSF%FpOFE$PPSEJOBUJPO.FDIBOJTNGPS.FTTBHF 1BTTJOH$PNNVOJDBUJPOBOE$PNQVUBUJPOz *&&&"DDFTT WPM OP QQ
‣ ,FJDIJ5BLBIBTIJFUBM l$PODFQUBOE%FTJHOPG4%/FOIBODFE.1*'SBNFXPSLz 5IFGPVSUI FEJUJPOPGUIF&VSPQFBO8PSLTIPQPO4PGUXBSF%FpOFE/FUXPSLT &84%/ QQ 4FQ -
શମߏ ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ
ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త .1*௨৴ͱܭࢉͷ࿈ػߏ -
࣮ࡍͷ)1$ΞϓϦέʔγϣϯͷ࣮ߦͷ༷ࢠ 0 1 2 3 ܭࢉ ௨৴ ϓϩηε 0
1 2 3 0 1 2 3 0 1 2 3 .1*@"MMSFEVDF ܭࢉ ௨৴ ʜ ʜ ʜ ʜ ʜ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 .1*@"MMUPBMM 0 1 2 3 .1*@"MMSFEVDFͷ ௨৴ύλʔϯ 0 1 2 3 .1*@"MMUPBMMͷ ௨৴ύλʔϯ ϛϦඵͷΦʔμͰมԽ .1*௨৴ͱܭࢉͷ࿈ػߏ -
ষͷత #include <mpi.h> int main() { MPI_Init(&argc, &argv); MPI_Bcast(buf,
count, …); /* … */ MPI_Allreduce(buf, count, …); MPI_Finalize(); } ࣌ؒมԽ͢Δ ௨৴ύλʔϯ ૬ޓ݁߹ ύέοτϑϩʔͷ੍ޚ ࿈ ࣮ߦ ੍ޚ 4SD."$ %TU."$ ʜ *OTUSVDUJPOT aa:aa:aa: … ff:ff:ff: … Flood bb:bb:bb: … aa:aa:aa: … Output to Port X aa:aa:aa: … bb:bb:bb: … Set Dst IP to Y,… 4SD."$ %TU."$ ʜ *OTUSVDUJPOT aa:aa:aa: … ff:ff:ff: … Flood bb:bb:bb: … aa:aa:aa: … Output to Port X aa:aa:aa: … bb:bb:bb: … Set Dst IP to Y,… 4SD."$ %TU."$ ʜ *OTUSVDUJPOT aa:aa:aa: … ff:ff:ff: … Flood bb:bb:bb: … aa:aa:aa: … Output to Port X aa:aa:aa: … bb:bb:bb: … Set Dst IP to Y,… ΞϓϦέʔγϣϯͷ࣮ߦͱ૬ޓ݁߹ͷύέοτϑϩʔ੍ޚΛ ΦʔόʔϔουͰ࿈͢Δػߏͷ࣮ݱ త .1*௨৴ͱܭࢉͷ࿈ػߏ -
࿈ػߏͷجຊతΞΠσΟΞ .1*ؔΛ࣮ߦ͢Δʹίϯτϩʔϥ ͱ௨৴͢ΔͱΦʔόʔϔουେ .1*ͷใ ੍ޚ ίϯτϩʔϥ εΠον ܭࢉػ .1*ؔͷใΛݸʑͷ
ύέοτࣗମʹλάͱͯ͠ຒΊࠐΉ .1*ύέοτ ੍ޚ .1*ͷใ .1*௨৴ͱܭࢉͷ࿈ػߏ -
֤ύέοτʹ.1*ΤϯϕϩʔϓΛූ߸Խͯ͠λάͱͯ͠ຒΊࠐΉ ‣ εΠονͰλάͷΛݩʹύέοτΛ੍ޚ ‣ طଘͷ4%/εΠονͷύέοτॲཧύΠϓϥΠϯ͕ಡΈऔΕΔ &UIFSOFUϔομΛར༻͢Δ͜ͱͰɺΦʔόʔϔουΛ࣮ݱ λάͷ༰ͱຒΊࠐΉॴ 5$1 ϔομ
*1 ϔομ &UIFSOFU ϔομ *1 ϔομ .1* Τϯϕϩʔϓ .1* ϝοηʔδ - - - - εΠον)8Ͱ ॲཧՄೳ ԆЖT 4%/ίϯτϩʔϥ సૹ͕ඞཁ ԆNT .1* ϝοηʔδ .1* ϝοηʔδ .1* ϝοηʔδ .1* Τϯϕϩʔϓ .1* Τϯϕϩʔϓ .1* Τϯϕϩʔϓ 5$1 ϔομ 5$1 ϔομ ѼઌϥϯΫɺίϛϡχέʔ λɺूஂ௨৴ͷछྨ .1*௨৴ͱܭࢉͷ࿈ػߏ -
6OJTPO'MPXܭࢉͱ௨৴ͷ࿈ػߏ .1*ΞϓϦέʔγϣϯ .1*ϥΠϒϥϦ Ϣʔβۭؒ 5$1ϨΠϠ *1ϨΠϠ &UIFSOFUϨΠϠ /*$υϥΠό /*$
Χʔωϧۭؒ 4%/ίϯτϩʔϥ ੍ޚ 4PDLFU λά͚ -,. ΧελϜ.1*ϥΠϒϥϦ JPDUM .1* 5BH *OTUSVDUJPOT " 0VUQVUUPQPSU9 # 0VUQVUUPQPSU: ʜ ʜ 4%/ίϯτϩʔϥ ։ൃͨ͠ιϑτΣΞ .1*ύέοτ λά .1*ύέοτ .1*ύέοτ .1*௨৴ͱܭࢉͷ࿈ػߏ -
DPSF DPSF FEHF FEHF FEHF FEHF .1*ͱ࿈ͨ͠૬ޓ݁߹ͷ੍ޚͷ֬ೝ int main()
{ … MPI_Allreduce(…); … MPI_Alltoall(…); … } .1*@"MMSFEVDF .1*@"MMUPBMM 0 5.0*105 1.0*106 1.5*106 2.0*106 2.5*106 3.0*106 0 50 100 150 200 250 300 350 400 Bandwidth (bps) Elapsed Time (s) core1 (port1) core2 (port41) ఏҊख๏ͳ͠ 0 5.0*105 1.0*106 1.5*106 2.0*106 2.5*106 3.0*106 3.5*106 4.0*106 4.5*106 5.0*106 0 50 100 150 200 250 300 350 400 Bandwidth (bps) Elapsed Time (s) core1 (port1) core2 (port41) ఏҊख๏͋Γ .1*@"MMSFEVDF .1*@"MMUPBMM MPI_Alltoall MPI_Allreduce ࿈ ༻සɾ૬ޓ݁߹ͷෛՙߴ "MMSFEVDF࣮ߦதDPSFͷΈ༻ "MMUPBMM࣮ߦதDPSFͷΈ༻ DPSFͱʹ༻ .1*௨৴ͱܭࢉͷ࿈ػߏ -
ఏҊख๏ʹΑΓɺର௨৴ʹൃੜ͢ΔΦʔόʔϔουΛධՁ ‣ .1*ͷ֤ؔͷύϑΥʔϚϯεΛଌఆ͢Δ046.JDSP#FODINBSLΛ ༻͍ɺϊʔυؒͰͷ.1*@4FOE3FDWͷεϧʔϓοτͱԆΛܭଌ ର௨৴ͷΦʔόʔϔουͷܭଌ .1*௨৴ͱܭࢉͷ࿈ػߏ Ԇͷൺֱ Ԇ<ЖT> &
& & & & ϝοηʔδαΠζ<#> & & & 6OJTPO'MPX͋Γ 6OJTPO'MPXͳ͠ εϧʔϓοτͷൺֱ εϧʔϓοτ<.#T> & & & & & & ϝοηʔδαΠζ<#> & & & 6OJTPO'MPX͋Γ 6OJTPO'MPXͳ͠ -
.1*௨৴ͱܭࢉͷ࿈ػߏΛఏҊ ‣ ࣮ΞϓϦͰϓϩηεؒ௨৴ύλʔϯ࣌ؒมԽ͢Δ ‣ ΞϓϦέʔγϣϯͷ࣮ߦͱɺ૬ޓ݁߹ͷύέοτϑϩʔͷ੍ޚ Λ࿈͢ΔػߏΛఏҊ ‣ ఏҊ͢Δػߏطଘͷ4%/εΠονͰಈ࡞͠ɺΦʔόʔϔου͕ খ͍͞
ষͷ·ͱΊ ௨৴ͱܭࢉ͕ύέοτ୯ҐͰ࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩς ΫνϟΛཱ֬ ߩݙ .1*௨৴ͱܭࢉͷ࿈ػߏ -
ষͷ·ͱΊ ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ
ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త ݁ -
શମߏ ষ.1*௨৴ͱܭࢉͷ࿈ػߏ ௨৴ͱܭࢉ͕࿈ಈ࡞͢Δ৽ͨͳΫϥελΞʔΩςΫ νϟΛཱ֬ ষ4%/ʹΑΔ.1*ूஂ௨৴ͷߴԽ .1*ूஂ௨৴ΛߴԽ͢Δύέοτϑϩʔ੍ޚΞϧΰ ϦζϜΛඋՄೳͳϑϨʔϜϫʔΫΛߏங ষ૬ޓ݁߹ύέοτϑϩʔͷղੳπʔϧ ΞϓϦέʔγϣϯ͕૬ޓ݁߹ʹੜ͢Δύέοτ
ϑϩʔͷղੳखஈΛ࣮ݱ ՝૬ޓ݁߹ͷ ύέοτϑϩʔͷղੳ ՝૬ޓ݁߹ͷಈత ੍ޚʹΑΔ௨৴ͷߴԽ ՝ΞϓϦͷ࣮ߦͱ ૬ޓ݁߹ͷ੍ޚͷ࿈ ΞϓϦέʔγϣϯͷϓϩηεؒ௨৴ύλʔϯΛߟྀͯ͠ύέοτ ϑϩʔΛ੍ޚ͢ΔϓϩάϥϚϒϧͳ૬ޓ݁߹੍ޚٕज़ͷ࣮ݱ త ݁ -
0QFO'0". ྲྀମྗֶιϧό ͷϕϯνϚʔΫ݁Ռ ‣ ϊʔυͰɺΞϓϦέʔγϣϯશମͷ͕.1*௨৴ɺͦͷ ͕.1*@"MMSFEVDFʹඅ͞Ε͍ͯΔ ‣ "MMSFEVDFΛߴԽ͢Δͱɺ.1*௨৴ΛɺΞϓϦέʔγϣϯ શମΛߴԽ
.1*@"MMSFEVDFͷ༻ྫ )1$"EWJTPSZ$PVODJM 0QFO'0".1FSGPSNBODF#FODINBSLBOE1SPpMJOH +VMZΑΓൈਮ -
‣ Defined as a matrix T of which element Tij
is equal to the volume of traffic sent from rank i to rank j ‣ Implies that the volume of traffic between processes as constant during the execution of a job Representation of Communication Pattern 0 50 100 Sender Rank 0 25 50 75 100 125 Receiver Rank 0.0 0.2 0.4 0.6 0.8 1.0 Sent Bytes £108 An example obtained from running the NERSC MILC benchmark with 128 processes The communication pattern of an application is represented using its traffic matrix -
1'4JN"SDIJUFDUVSF Event Event Event Queue j1 j2 j3 j4
Job Submitted Event Handlers … Job Started Job Finished Job Queue Simulator State Update Interconnect Computing Nodes Event Dispatch Customized via Plugins