はじめに
ZACKYこと山崎進です。
季節外れのアドベントカレンダーは終わりましたが,今後も不定期だが割と頻繁に開発の進捗をレポートしたいと思います。
「ZEAM開発ログ 目次」はこちら
情報処理学会にて研究発表してきました!
Hastega: Elixirプログラミングにおける超並列化を実現するためのGPGPU活用手法
Nodeプログラミングモデルを活用したC++およびElixirの実行環境の実装
さて本題
今回は iMac Pro (2017) を入手できたので,さっそくロジスティック写像のGPU駆動ベンチマークを走らせてみました。 Elixir と Rust です。
使用した機材の仕様
Mac Pro (Mid 2010)
-
- Processor: 2.8 GHz Quad-Core Intel Xeon (プロセッサ数 1,物理コア数 4,論理コア数8)
-
- Memory: 16 GB 1066 MHz DDR3
-
- Graphics: ATI Radeon HD 5770 1024MB
-
- SSD (BlackMagic)
Write 473.9MB/s
Read 507.4MB/s
近日中にアップグレードする予定です。
iMac Pro (2017)
-
- Processor: 2.3 GHz Intel Xeon W (プロセッサ数 1,物理コア18,論理コア36)
-
- Memory: 32 GB 2666 MHz DDR4
-
- Graphics: Radeon Pro Vega 64 16368MB
-
- SSD (BlackMagic)
Write 2980.3MB/s
Read 2465.1MB/s
CPUとGPUは最高性能の構成,メモリとSSDは標準構成です。
ベンチマーク結果
Mac Pro (Mid 2010)
pure Elixirpure ElixirElixir/Rustler
loopinlining inside of Flow.maploop, passing by list, with Window147.90471336.5584847.690833222.64005819.06741124.836797413.70183512.30896522.318805812.14991413.06387219.5506251612.25277211.19658721.6620093212.40766310.57851023.7496376412.27378810.78451229.40224712812.17749211.05248238.949820
iMac Pro (2017)
pure Elixirpure ElixirElixir/Rustler
loopinlining inside of Flow.maploop, passing by list, with Window123.29363316.3141114.488194210.5976768.44821513.36521446.1672455.16639811.18532483.8221163.9462769.242530163.4850683.6307949.967291323.9965123.71017512.547183644.1263384.81267015.3664541284.0665354.09880822.587284
iMac Pro は最もナイーブなbenchmarks1の最速で4秒切っちゃうんだから,ものすごいスピードです。最も速いRust rayon は0.25秒台ということで,凄まじ過ぎます。
比較考察
Mac Pro / iMac Probenchmarks1ElixirCPU(m)3.486benchmarks3ElixirCPU(m)3.084benchmarks8RustlerCPU(1)1.714benchmarks_g2RustlerGPU2.563benchmarks_t1RustlerCPU(m)2.723emptyRustler
1.729Rust CPURustCPU(1)2.412Rust OpenCLRustGPU2.186Rust rayonRustCPU(m)2.656
速度向上の恩恵は,Rust よりも Elixirの方が大きいようです。Elixir の方がコア数が増えた時に伸びるということなので,Elixir の方が並列処理でかかる同期・通信や排他制御のオーバーヘッドが少ないのだろうと考えられます。
おわりに
研究費で iMac Pro を購入させていただいたので,これまで以上に Elixir の開発に邁進したいと思います!
次回ですが,「Elixir 1.7.2 でGPU駆動ベンチマークを実行してみた」をお送りします。お楽しみに。
というわけで…
fukuoka.ex #13 夏のfukuoka.ex祭=技術のパラダイムシフトは,現在,参加者を募集しています! 私も 「Pythonを捨ててElixirに移行する日」というタイトルで発表します!