並列プログラミング処理系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. ฒྻϓϩάϥϛϯάॲཧܥ1FMFNBZͷ "3.ΞʔΩςΫνϟͱ *P5ϓϥοτϑΥʔϜ/FSWFT΁ͷద༻ ๺۝भࢢཱେֶࢁ࡚ਐ 1 ˜4VTVNV:BNB[BLJ

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

    ΞϝϦΧΛத৺ʹ஫໨ΛूΊ͍ͯΔ։ൃϓϥοτϑΥʔϜ w 1FMFNBZ4VQFS1BSBMMFMJTN 1FMFNBZ  զʑ͕ݚڀ։ൃΛਐΊ͍ͯΔฒྻॲཧωΠςΟϒίʔυੜ੒ܥ 2 ˜4VTVNV:BNB[BLJ
  3. /FSWFTͷར఺ w /FSWFTΛΤοδʗϑΥάɾίϯϐϡʔςΟϯάʹ࠾༻ͨ͠ͱ͖ͷར఺͸ ࣍ͷͱ͓ΓͰ͋Δ  ϑΝʔϜ΢ΣΞͷϑοτϓϦϯτɼ͢ͳΘͪඞཁͳετϨʔδͷ༰ྔ͕খ͍͞ ˢඞཁ࠷খݶͷϞδϡʔϧɾίϚϯυ౳ͷΈ૊ࠐΉ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛηοτ࣋ͭ͜ͱͰɼ ࣮ߦதʹγεςϜΛΞοϓσʔτ͢Δ͜ͱ͕Ͱ͖Δ

    ˢҰํΛΞΫςΟϒʹɼΞοϓσʔτ࣌ʹ΋͏ҰํΛॻ׵͑Δ ˠ/FSWFT)VC ɹγεςϜͷΞοϓσʔτΛϦϞʔτ͔ΒηΩϡΞ͔ͭҰ੪ʹ࣮ࢪՄೳ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛϦʔυΦϯϦʔʹ͢Δ͜ͱͰɼ ෆ༻ҙͳॻ׵͑ʹΑΔো֐Λະવʹ๷͗ɼϚΠάϨʔγϣϯ΍෮چɼ૿ઃͳͲΛ ͠΍͍͢ 3 ˜4VTVNV:BNB[BLJ
  4. 1FMFNBZͷར఺ w 1FMFNBZ4VQFS1BSBMMFMJTNͱ૊߹ΘͤΔ͜ͱͰɼ͞Βʹ ࣍ͷར఺͕ੜ͡Δ  *P5ΠϯϑϥετϥΫνϟʹͱͬͯॏཁͰ͋ΔฒྻԽΛɼ Մಡੑͷߴ͍ϓϩάϥϛϯάݴޠͰ༰қʹهड़Ͱ͖Δ  $ݴޠϓϩάϥϛϯάฒΈͷॲཧੑೳΛಘΒΕΔ ‎ηϯα͔ΒಘΒΕΔσʔλ΍ωοτϫʔΫʹྲྀΕΔ

    ετϦʔϜΛߴ଎ʹॲཧͰ͖Δ 4 ˜4VTVNV:BNB[BLJ
  5. ຊൃදͷߩݙ w 1FMFNBZ4VQFS1BSBMMFMJTNΛ/FSWFT΍༷ʑͳ "3.ΞʔΩςΫνϟ্Ͱ࣮ߦͰ͖ΔΑ͏ʹͨ͜͠ͱ w ͦͷੑೳΛධՁͨ͜͠ͱ w /FSWFTʹରԠͤ͞ΔͨΊʹඞཁͳ͜ͱΛྫࣔͨ͜͠ͱ 5 ˜4VTVNV:BNB[BLJ

  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
  7. ຊൃදͷ͜ͷޙͷߏ੒  1FMFNBZίʔυྫ  1FMFNBZʹΑΔฒྻԽ  ੑೳධՁ  1FMFNBZͷ/FSWFTରԠ 

    ·ͱΊͱকདྷ՝୊ 㾎࿦จͱ͸ͱͷॱ൪ΛೖΕସ͑ 7 ˜4VTVNV:BNB[BLJ
  8. 1FMFNBZίʔυྫ 8 ˜4VTVNV:BNB[BLJ

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

    1FMFNBZॲཧܥʹ౉ͯ͠ίʔυ࠷ద Խ͢Δ w 1FMFNBZ͸EFGQFMFNBZEPʜFOEͷ ۠ؒͷίʔυϒϩοΫʹؔ͠ɼฒྻ ԽՄೳͳ෦෼͸શͯฒྻԽ͢Δํ਑ ΛͱΔ  ˜4VTVNV:BNB[BLJ
  10. 1FMFNBZίʔυྫ w ߦ໨ͷ ͸ୈҰҾ਺Ͱ༩͑ΒΕͨ஋ʹ ΛՃ͑Δແ໊ؔ਺Ͱ͋Δ w ແ໊ؔ਺ w ؔ਺ఆٛͷҰछͰɼؔ਺Λఆٛ͢Δ͕ؔ਺໊Λ ఆٛ͠ͳ͍

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

    ʹΑͬͯ ύΠϓϥΠϯԋࢉࢠͰ౉͞Εͨ Ϧετͷ֤ཁૉʹΛՃ͑Δ w ߦ໨͔Β̓ߦ໨ʹ͔͚ͯɼ ϦετMJTUͷ֤ཁૉʹΛՃ͑ͨ ϦετΛੜ੒ͯ͠ฦ͢ w ྫ͑͹<  >Λ౉͞Εͨ৔߹ɼ <  >Λฦ͢  ˜4VTVNV:BNB[BLJ
  12. 1FMFNBZίʔυྫ w ͜ͷͱ͖ɼ࠷େͰMJTUͷཁૉͷ਺͚ͩ ฒྻʹ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δ w ͳͥͳΒ͹ɼ֤ཁૉͷԋࢉ͸ଞͷཁૉͷ ԋࢉͱґଘؔ܎͕ͳ͍ͨΊͰ͋Δ w ྫ͑͹< 

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

  14. 1FMFNBZʹΑΔฒྻԽ w ͜ͷͱ͖࠷େͰMJTUͷཁૉͷ਺ ͚ͩฒྻʹ࣮ߦͰ͖Δ w 1FMFNBZ͸͜ͷ͜ͱΛར༻͠ ฒྻԽΛਤΔ w ݱঢ়Ͱ͸$MBOH·ͨ͸($$ͷ "VUP7FDUPSJ[BUJPOͱ͍͏

    ػೳΛ༻͍ͯ4*.%໋ྩΛؚΉ ωΠςΟϒίʔυ΁ίϯύΠ ϧ͢Δ  ˜4VTVNV:BNB[BLJ
  15. 1FMFNBZʹΑΔฒྻԽ w ӈਤΛ1FMFNBZͰίʔυੜ੒͢Δͱࠨਤͷ$ݴޠίʔυʹͳΔ  ˜4VTVNV:BNB[BLJ

  16. 1FMFNBZʹΑΔฒྻԽ w ӈਤͷίʔυ͸ɼϦετͷཁૉͱͯ͠ɼුಈখ਺఺਺ܕͱ੔਺ܕͷ͍ͣΕ΋ड͚෇͚Δ w $ݴޠʹίϯύΠϧͨ͠ͱ͖΋ුಈখ਺఺਺ܕ ʙߦ໨ ͱ੔਺ܕ ʙߦ໨ ͷͭͷؔ਺Λ ੜ੒͢Δ

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

    w ϧʔϓΛ4*.%໋ྩΛؚΉωΠςΟ ϒίʔυʹม׵͢Δ w ࠷ۙͷ($$Ͱ͸ɼ͜ͷΑ͏ͳهड़͕ ͳ͘ͱ΋ɼίϯύΠϧΦϓγϣϯͰ 0΍0GBTUͳͲΛࢦఆͨ͠৔߹͸ɼ ࣗಈతʹϕΫτϧԽΛߦ͏  ˜4VTVNV:BNB[BLJ
  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
  19. 1FMFNBZʹΑΔฒྻԽ w ӈਤ͸ුಈখ਺఺਺ܕͷԋࢉΧʔ ωϧʹ͍ͭͯɼ"3.$PSUFY "޲͚ʹίϯύΠϧͨ͠Ξηϯ ϒϦίʔυ w ੔਺ܕʹ͍ͭͯ͸࿦จͷਤΛ ࢀরͷ͜ͱ w

    /&0/໋ྩ "3.ΞʔΩςΫνϟ ͷ4*.%໋ྩ ͕ੜ੒͞Ε͍ͯΔ w ੺ઢΛҾ͍ͨ෦෼ɼ͓Αͼ੺࿮ Ͱғͬͨ෦෼͕/&0/໋ྩ  ˜4VTVNV:BNB[BLJ
  20. 1FMFNBZʹΑΔฒྻԽ w 1FMFNBZ͸ݩͷϓϩάϥϜίʔυ͔ΒฒྻԽͰ͖Δύλʔϯ ӈਤͷ੺࿮ Λೝࣝ͠ɼ$ݴޠͰॻ͔ΕͨςϯϓϨʔτʹ౰ͯ͸Ίͯίʔυੜ੒͢Δ  ˜4VTVNV:BNB[BLJ

  21. ੑೳධՁ 21 ˜4VTVNV:BNB[BLJ

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

    ͜ΕΛ·ͱΊͯݺͼग़͢ճ෼ͷؔ਺ݺͼग़͠ʹཁ͢Δ࣌ؒΛܭଌ w ුಈখ਺఺਺ϕϯνϚʔΫ w Ϧετͷ֤ཁૉΛഒ͢Δॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ w จࣈྻஔ׵ϕϯνϚʔΫ w ୹͍จࣈྻͷҰׅஔ׵Λߦ͏ॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ 23 ˜4VTVNV:BNB[BLJ
  24. ੑೳධՁ w ैདྷͷ&OVNΛͦͷ··࣮ߦ͢ Δͷͱൺ΂ͯ࣍ͷΑ͏ͳੑೳ ޲্Λୡ੒ͨ͠ w ੔਺ԋࢉͰഒ w ුಈখ਺఺਺ԋࢉͰഒ w

    จࣈྻஔ׵Ͱഒ  ˜4VTVNV:BNB[BLJ
  25. ੑೳධՁ w ࣮ߦίʔυதͷ4*.%໋ྩׂ߹Λܭଌͨ͠ w ුಈখ਺఺਺ͷԋࢉΧʔωϧ w ࠷΋಺ଆͷϧʔϓͷ໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩ਺ w

    ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩͷׂ߹ w ੔਺ͷԋࢉΧʔωϧ w ࠷΋಺ଆͷϧʔϓͷ໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩ਺ w ࠷΋಺ଆͷϧʔϓͷ4*.%໋ྩͷׂ߹ 25 ˜4VTVNV:BNB[BLJ
  26. 1FMFNBZͷ/FSWFTରԠ 26 ˜4VTVNV:BNB[BLJ

  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
  28. ·ͱΊͱকདྷ՝୊ 28 ˜4VTVNV:BNB[BLJ

  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
  30. কདྷ՝୊ w ݱࡏɼ/FSWFT1SPKFDUͱ/7*%*"ͷڠಇʹΑΓ/FSWFT Λ+FUTPOγϦʔζͰ࣮ߦͰ͖ΔΑ͏ʹҠ২࡞ۀ͕ਐΊΒ Ε͍ͯΔ w কདྷ͸ɼ+FUTPOγϦʔζͷ(16Λ1FMFNBZͰۦಈͰ͖Δ Α͏ʹ͢Δ 30 ˜4VTVNV:BNB[BLJ

  31. কདྷ՝୊ w ੔਺ԋࢉʹ͍ͭͯ͸ɼݱࡏ͸Ϗοτ௕ͷ··4*.%໋ྩ ʹ͍ͯ͠Δ w ΋͠஋ͷൣғΛࣄલʹௐ΂ͯɼྫ͑͹Ϗοτ௕Ͱ ऩ·Δ͜ͱ͕֬ೝͰ͖Ε͹ɼͭͷϨδελͷϏοτ௕Λ Ϗοτʹ཈͑Δ͜ͱͰɼʹഒͷฒྻԽΛਤΕΔ w ͦ͜Ͱɼ੔਺ԋࢉͷ஋ͷൣғΛࣄલʹௐ΂ͯɼͭͷ

    ϨδελͷϏοτ௕Λ཈͑Δ͜ͱͰ͞ΒͳΔฒྻԽΛਤΔ 31 ˜4VTVNV:BNB[BLJ