並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用

 並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用

近年ではIoTでエッジ/フォグ・コンピューティングを行う事例が増えてきており,IoTにも計算パワーが求められるようになってきている.そこで,近年,アメリカを中心に注目を集めている開発プラットフォームNervesと,我々が研究開発を進めている並列処理ネイティブコード生成系である Pelemay Super-Parallelism を組合わせて,エッジ/フォグ・コンピューティングに用いることを提案する.現状の Pelemay は Clang / GCC を使って単一コアのSIMD命令を含むネイティブコードを生成する.本研究により,Raspberry Pi 3 Model B+ (ARM Cortex-A53ベース) と Raspberri Pi 4 Model B (ARM Cortex-A72ベース)の Nerves システム上と,Jetson Nano (ARM Cortex-A57ベース)の Ubuntu 上で動作することを確認した.実行時間を比較したところ,従来のEnumとくらべて,整数演算で2.31倍,浮動小数点数演算で5.16倍,文字列置換で3.51倍の性能向上を達成した.将来は,Jetson シリーズのGPUをPelemayで駆動できるようにする予定である.

83722380372c00bd75ac920f2089f6aa?s=128

Susumu Yamazaki (ZACKY)

June 26, 2020
Tweet

Transcript

  1. 2.

    എܠɾ໨త w ۙ೥Ͱ͸*P5ͰΤοδʗϑΥάɾίϯϐϡʔςΟϯάΛߦ͏ࣄྫ ͕૿͖͓͑ͯͯΓɼ*P5ʹ΋ܭࢉύϫʔ͕ٻΊΒΕΔΑ͏ʹ ͳ͖͍ͬͯͯΔ w ͦ͜Ͱɼۙ೥ɼ࣍ͷͭΛ૊Έ߹Θͤͯ ΤοδʗϑΥάɾίϯϐϡʔςΟϯάʹ༻͍Δ͜ͱΛఏҊ͢Δ w /FSWFT

    ΞϝϦΧΛத৺ʹ஫໨ΛूΊ͍ͯΔ։ൃϓϥοτϑΥʔϜ w 1FMFNBZ4VQFS1BSBMMFMJTN 1FMFNBZ  զʑ͕ݚڀ։ൃΛਐΊ͍ͯΔฒྻॲཧωΠςΟϒίʔυੜ੒ܥ 2 ˜4VTVNV:BNB[BLJ
  2. 3.

    /FSWFTͷར఺ w /FSWFTΛΤοδʗϑΥάɾίϯϐϡʔςΟϯάʹ࠾༻ͨ͠ͱ͖ͷར఺͸ ࣍ͷͱ͓ΓͰ͋Δ  ϑΝʔϜ΢ΣΞͷϑοτϓϦϯτɼ͢ͳΘͪඞཁͳετϨʔδͷ༰ྔ͕খ͍͞ ˢඞཁ࠷খݶͷϞδϡʔϧɾίϚϯυ౳ͷΈ૊ࠐΉ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛηοτ࣋ͭ͜ͱͰɼ ࣮ߦதʹγεςϜΛΞοϓσʔτ͢Δ͜ͱ͕Ͱ͖Δ

    ˢҰํΛΞΫςΟϒʹɼΞοϓσʔτ࣌ʹ΋͏ҰํΛॻ׵͑Δ ˠ/FSWFT)VC ɹγεςϜͷΞοϓσʔτΛϦϞʔτ͔ΒηΩϡΞ͔ͭҰ੪ʹ࣮ࢪՄೳ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛϦʔυΦϯϦʔʹ͢Δ͜ͱͰɼ ෆ༻ҙͳॻ׵͑ʹΑΔো֐Λະવʹ๷͗ɼϚΠάϨʔγϣϯ΍෮چɼ૿ઃͳͲΛ ͠΍͍͢ 3 ˜4VTVNV:BNB[BLJ
  3. 6.

    "3.ʹ͍ͭͯ w ࠓिɼಉ೔ʹൃදʹͳͬͨͭͷൃද w ෋ַ w εʔύʔίϯϐϡʔλϥϯΩϯάͷͭͰ͋Δ5PQʹͯੈքҰʹ w "3.ΞʔΩςΫνϟΛ࠾༻͠ɼϕΫλʔϓϩηοαͱ֦ͯ͠ு w

    "QQMF4JMJDPO w 88%$ʹͯɼ"QQMF͕.BDΛ"3.ϕʔεΞʔΩςΫνϟʹ೥͔͚ͯҠߦ w -JOVYͷ૑࢝ऀɼ-JOVT͕੠໌ w -JOVYͷιʔείʔυʹࢄࡏ͢Δɼอक͕ߦ͖ಧ͔ͳ͍֤छ"3.ΞʔΩςΫνϟ޲͚ίʔυΛͳΜͱ͔͍ͨ͠ w ͜͜਺೔Ͱٸ଎ʹ"3.ΞʔΩςΫνϟʹର͢Δ஫໨౓্͕͕͍ͬͯΔ w 5XJUUFSͰͷද໌ɼؔ࿈גՁͷ্ঢͳͲ w "3.ʹ͍ͭͯઌߦ஌ݟͷଟ͍૊ࠐΈγεςϜ෼໺ʹର͠ɼଞ෼໺͔ΒҾ͖߹͍͕ग़ͯ͘ΔʁˠΈͳ͞ΜɼνϟϯεͰ͢ʂ 6 ˜4VTVNV:BNB[BLJ
  4. 7.

    ຊൃදͷ͜ͷޙͷߏ੒  1FMFNBZίʔυྫ  1FMFNBZʹΑΔฒྻԽ  ੑೳධՁ  1FMFNBZͷ/FSWFTରԠ 

    ·ͱΊͱকདྷ՝୊ 㾎࿦จͱ͸ͱͷॱ൪ΛೖΕସ͑ 7 ˜4VTVNV:BNB[BLJ
  5. 9.

    1FMFNBZίʔυྫ w ӈਤ͸1FMFNBZΛ༻͍ͨ ίʔυྫ w ߦ໨͸1FMFNBZΛϥΠϒϥϦͱͯ͠ ಡࠐΉઃఆ w ʙߦ໨ͷEFGQFMFNBZ͸ɼEPʜ FOEͷൣғͷϓϩάϥϜίʔυΛ

    1FMFNBZॲཧܥʹ౉ͯ͠ίʔυ࠷ద Խ͢Δ w 1FMFNBZ͸EFGQFMFNBZEPʜFOEͷ ۠ؒͷίʔυϒϩοΫʹؔ͠ɼฒྻ ԽՄೳͳ෦෼͸શͯฒྻԽ͢Δํ਑ ΛͱΔ  ˜4VTVNV:BNB[BLJ
  6. 10.

    1FMFNBZίʔυྫ w ߦ໨ͷ ͸ୈҰҾ਺Ͱ༩͑ΒΕͨ஋ʹ ΛՃ͑Δແ໊ؔ਺Ͱ͋Δ w ແ໊ؔ਺ w ؔ਺ఆٛͷҰछͰɼؔ਺Λఆٛ͢Δ͕ؔ਺໊Λ ఆٛ͠ͳ͍

    w ແ໊ؔ਺Λ஋ͱ͍ͯ͠Δͱ͖ʹɼͦͷ஋ʹҾ਺ Λ༩͑ͯɼແ໊ؔ਺ʹఆٛ͞Εͨؔ਺Λݺͼग़ ͢͜ͱ͕Ͱ͖Δ w ؔ਺ܕݴޠͰ͸ϙϐϡϥʔ w $ݴޠͰݴ͑͹ɼιʔτ͢Δͱ͖ʹൺֱؔ਺Λ౉͢ ͜ͱ͕͋Δ͕ɼ͜ͷ৔߹ʹ͍ۙ w ແ໊ؔ਺ʹΑͬͯɼൺֱؔ਺Λ֎෦ʹఆٛ͢Δ ͜ͱͳ͘ɼιʔτΛར༻͢Δؔ਺ͷதʹఆٛͰ ͖Δͷ͕ར఺ͷͭ  ˜4VTVNV:BNB[BLJ
  7. 11.

    1FMFNBZίʔυྫ w ߦ໨ͷ ͸ ୈҰҾ਺Ͱ༩͑ΒΕͨ஋ʹ ΛՃ͑Δແ໊ؔ਺Ͱ͋Δ w c&OVNNBQ  

    ʹΑͬͯ ύΠϓϥΠϯԋࢉࢠͰ౉͞Εͨ Ϧετͷ֤ཁૉʹΛՃ͑Δ w ߦ໨͔Β̓ߦ໨ʹ͔͚ͯɼ ϦετMJTUͷ֤ཁૉʹΛՃ͑ͨ ϦετΛੜ੒ͯ͠ฦ͢ w ྫ͑͹<  >Λ౉͞Εͨ৔߹ɼ <  >Λฦ͢  ˜4VTVNV:BNB[BLJ
  8. 12.

    1FMFNBZίʔυྫ w ͜ͷͱ͖ɼ࠷େͰMJTUͷཁૉͷ਺͚ͩ ฒྻʹ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δ w ͳͥͳΒ͹ɼ֤ཁૉͷԋࢉ͸ଞͷཁૉͷ ԋࢉͱґଘؔ܎͕ͳ͍ͨΊͰ͋Δ w ྫ͑͹< 

    >Λ༩͑ͨ৔߹͸ɼ ࣍ͷͭʹϦετͷཁૉ਺͚ͩ ฒྻʹ࣮ߦͰ͖Δ w ʹՃ͑Δԋࢉ w ʹՃ͑Δԋࢉ w ʹՃ͑Δԋࢉ w Ϧετͷཁૉ਺͕େ͖͍΄Ͳɼ ฒྻԽͷޮՌ͕ߴ͍  ˜4VTVNV:BNB[BLJ
  9. 17.

    1FMFNBZʹΑΔฒྻԽ w ߦ໨͓Αͼߦ໨͸ɼ$MBOHʹର͠ "VUP7FDUPSJ[BUJPOΛࢦࣔ͢Δهड़ w ϕΫτϧԽΛ༗ޮʹ͢Δ w ϕΫλʔ෯ΛϚΫϩఆ਺ -001@7&$503*;&@8*%5)Ͱࢦఆ ͨ͠஋ʹ͢Δ

    w ϧʔϓΛ4*.%໋ྩΛؚΉωΠςΟ ϒίʔυʹม׵͢Δ w ࠷ۙͷ($$Ͱ͸ɼ͜ͷΑ͏ͳهड़͕ ͳ͘ͱ΋ɼίϯύΠϧΦϓγϣϯͰ 0΍0GBTUͳͲΛࢦఆͨ͠৔߹͸ɼ ࣗಈతʹϕΫτϧԽΛߦ͏  ˜4VTVNV:BNB[BLJ
  10. 18.

    1FMFNBZʹΑΔฒྻԽ w ߦ໨͓Αͼߦ໨͸ɼ$MBOHʹର͠"VUP 7FDUPSJ[BUJPOΛࢦࣔ͢Δهड़ w ϕΫλʔ෯ΛϚΫϩఆ਺ -001@7&$503*;&@8*%5)Ͱࢦఆͨ͠஋ ʹ͢Δ w ࠷ۙͷ($$Ͱ͸ɼ͜ͷΑ͏ͳهड़͕ͳ͘ͱ΋ɼ

    ίϯύΠϧΦϓγϣϯͰ0΍0GBTUͳͲΛࢦ ఆͨ͠৔߹͸ɼࣗಈతʹϕΫτϧԽΛߦ͏ ✴-001@7&$503*;&@8*%5)͸$MBOHͰίϯύ Πϧͨ࣌͠ͷΈ࡞༻͠($$ͷ࣌ʹ͸࡞༻͠ͳ͍ w ຊݚڀͷධՁͰ͸($$Λ༻͍ͨͷͰɼ ͲΜͳ஋Λઃఆͯ͠΋ੜ੒ͨ͠ίʔυʹࠩ ͸ੜ͡ͳ͍  ˜4VTVNV:BNB[BLJ
  11. 19.

    1FMFNBZʹΑΔฒྻԽ w ӈਤ͸ුಈখ਺఺਺ܕͷԋࢉΧʔ ωϧʹ͍ͭͯɼ"3.$PSUFY "޲͚ʹίϯύΠϧͨ͠Ξηϯ ϒϦίʔυ w ੔਺ܕʹ͍ͭͯ͸࿦จͷਤΛ ࢀরͷ͜ͱ w

    /&0/໋ྩ "3.ΞʔΩςΫνϟ ͷ4*.%໋ྩ ͕ੜ੒͞Ε͍ͯΔ w ੺ઢΛҾ͍ͨ෦෼ɼ͓Αͼ੺࿮ Ͱғͬͨ෦෼͕/&0/໋ྩ  ˜4VTVNV:BNB[BLJ
  12. 22.

    ಈ࡞֬ೝ w ࣍ͷγεςϜ্Ͱಈ࡞֬ೝΛߦͳͬͨ w /FSWFT w 3BTQCFSSZ1J.PEFM#  "3.$PSUFY"ϕʔε 

    w 3BTQCFSSZ1J.PEFM# "3.$PSUFY"ϕʔε  w 6CVOUV w +FUTPO/BOP "3.$PSUFY"ϕʔε  w ϋʔυ΢ΣΞ࢓༷͸࿦จͷදɼιϑτ΢ΣΞ࢓༷͸දΛࢀরͷ͜ͱ w γεςϜߏ੒ͷ౎߹্ɼ-JOVYΧʔωϧͱ($$ʹ͍ͭͯόʔδϣϯΛ׬શʹҰகͤ͞Δ ͜ͱ͸Ͱ͖ͳ͔ͬͨ 22 ˜4VTVNV:BNB[BLJ
  13. 23.

    ੑೳධՁ w +FUTPO/BOP "3.$PSUFY"ϕʔε ্Ͱɼ؆୯ͳੑೳධՁΛߦͳͬͨ w ੔਺ϕϯνϚʔΫ w ૉମͷϩδεςΟοΫࣸ૾Λճܭࢉ w

    ͜ΕΛ·ͱΊͯݺͼग़͢ճ෼ͷؔ਺ݺͼग़͠ʹཁ͢Δ࣌ؒΛܭଌ w ුಈখ਺఺਺ϕϯνϚʔΫ w Ϧετͷ֤ཁૉΛഒ͢Δॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ w จࣈྻஔ׵ϕϯνϚʔΫ w ୹͍จࣈྻͷҰׅஔ׵Λߦ͏ॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ 23 ˜4VTVNV:BNB[BLJ
  14. 25.

    ੑೳධՁ w ࣮ߦίʔυதͷ4*.%໋ྩׂ߹Λܭଌͨ͠ w ුಈখ਺఺਺ͷԋࢉΧʔωϧ w ࠷΋಺ଆͷϧʔϓͷ໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩ਺ w

    ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩͷׂ߹ w ੔਺ͷԋࢉΧʔωϧ w ࠷΋಺ଆͷϧʔϓͷ໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩͷׂ߹ 25 ˜4VTVNV:BNB[BLJ
  15. 27.

    1FMFNBZͷ/FSWFTରԠ w 1FMFNBZΛ/FSWFTʹରԠͤ͞Δͷʹඞཁͩͬͨ͜ͱ͸ɼ֓Ͷ࣍ͷͱ͓ΓͰ͋Δ ৄࡉ͸࿦จୈষΛࢀরͷ͜ͱ w ίʔυ࣮ߦλΠϛϯάͷ۠ผ w ίʔυΛ࣮ߦ͢ΔλΠϛϯά͕ίϯύΠϧ࣌ͳͷ͔ΞϓϦέʔγϣϯ࣮ߦ࣌ͳͷ͔Λݫີʹ۠ผ͠ɼॻ͖෼͚Δ w ඞཁ࠷খݶͷίϚϯυɼγεςϜϑΝΠϧར༻

    w σϑΥϧτঢ়ଶͷ/FSWFTͰ࣮ߦՄೳͳίϚϯυɼऔಘՄೳͳϑΝΠϧͷΈΛ࢖༻͢Δ w ੜ੒ίʔυͷ഑ஔ w /FSWFTͷίϚϯυɼNJYpSNXBSFͰϑΝʔϜ΢ΣΞʹΠϯετʔϧ͞ΕΔΑ͏ʹɼੜ੒ίʔυΛ഑ஔ͢Δ w ΫϩείϯύΠϧ؀ڥҾܧ͗ w /FSWFTͷίϚϯυɼNJYpSNXBSFͰىಈ͢ΔΫϩείϯύΠϧ؀ڥΛҾܧ͙ w ϚϧνλʔήοτରԠ w ϚϧνλʔήοτͷίʔυͱϏϧυεΫϦϓτΛੜ੒͢Δ 27 ˜4VTVNV:BNB[BLJ
  16. 29.

    ·ͱΊ w 1FMFNBZΛ/FSWFTʹରԠͤ͞Δͷʹඞཁͩͬͨ͜ͱ w ίʔυ࣮ߦλΠϛϯάͷ۠ผ w ඞཁ࠷௿ݶͷίϚϯυɼγεςϜϑΝΠϧར༻ w ੜ੒ίʔυͷ഑ஔ w

    ΫϩείϯύΠϧ؀ڥҾܧ͗ w ϚϧνλʔήοτରԠ w ࣍ͷϘʔυͰಈ࡞֬ೝΛͨ͠ w /FSWFT3BTQCFSSZ1J.PEFM# ɼ3BTQCFSSZ1J.PEFM# w 6CVOUV+FUTPO/BOP w +FUTPO/BOPͰੑೳධՁ͠ɼ࣍ͷੑೳ޲্Λୡ੒ͨ͠ w ੔਺ԋࢉഒɼුಈখ਺఺਺ԋࢉഒɼจࣈྻஔ׵ഒ 29 ˜4VTVNV:BNB[BLJ