LoginSignup
7
2

More than 5 years have passed since last update.

ZEAM開発ログ v.0.3.4 iMac Pro でGPU駆動ベンチマークを実行してみた

Last updated at Posted at 2018-08-02

はじめに

ZACKYこと山崎進です。

季節外れのアドベントカレンダーは終わりましたが,今後も不定期だが割と頻繁に開発の進捗をレポートしたいと思います。

「ZEAM開発ログ 目次」はこちら

情報処理学会にて研究発表してきました!

Hastega: Elixirプログラミングにおける超並列化を実現するためのGPGPU活用手法

GPU-SWoPP-2018.png

Nodeプログラミングモデルを活用したC++およびElixirの実行環境の実装

LCB-SWoPP-2018.png

さて本題

今回は 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)

stages benchmarks1 benchmarks3 benchmarks8
pure Elixir pure Elixir Elixir/Rustler
loop inlining inside of Flow.map loop, passing by list, with Window
1 47.904713 36.558484 7.690833
2 22.640058 19.067411 24.836797
4 13.701835 12.308965 22.318805
8 12.149914 13.063872 19.550625
16 12.252772 11.196587 21.662009
32 12.407663 10.578510 23.749637
64 12.273788 10.784512 29.402247
128 12.177492 11.052482 38.949820
benchmarks_g2 benchmarks_t1 benchmarks_empty
Elixir/Rustler Elixir/Rustler Elixir/Rustler
OpenCL(GPU), inlining rayon Ruslter empty
2.388171 1.748167 1.859177
Rust CPU Rust OpenCL Rust rayon
Rust Rust Rust
CPU(1), loop OpenCL(GPU), inlining CPU(multi), loop
2.926270 1.545693 0.669060

iMac Pro (2017)

stages benchmarks1 benchmarks3 benchmarks8
pure Elixir pure Elixir Elixir/Rustler
loop inlining inside of Flow.map loop, passing by list, with Window
1 23.293633 16.314111 4.488194
2 10.597676 8.448215 13.365214
4 6.167245 5.166398 11.185324
8 3.822116 3.946276 9.242530
16 3.485068 3.630794 9.967291
32 3.996512 3.710175 12.547183
64 4.126338 4.812670 15.366454
128 4.066535 4.098808 22.587284
benchmarks_g2 benchmarks_t1 benchmarks_empty
Elixir/Rustler Elixir/Rustler Elixir/Rustler
OpenCL(GPU), inlining rayon Ruslter empty
0.931936 0.642010 1.075443
Rust CPU Rust OpenCL Rust rayon
Rust Rust Rust
CPU(1), loop OpenCL(GPU), inlining CPU(multi), loop
1.212508 0.707200 0.251875

iMac Pro は最もナイーブなbenchmarks1の最速で4秒切っちゃうんだから,ものすごいスピードです。最も速いRust rayon は0.25秒台ということで,凄まじ過ぎます。

比較考察

Mac Pro / iMac Pro
benchmarks1 Elixir CPU(m) 3.486
benchmarks3 Elixir CPU(m) 3.084
benchmarks8 Rustler CPU(1) 1.714
benchmarks_g2 Rustler GPU 2.563
benchmarks_t1 Rustler CPU(m) 2.723
empty Rustler 1.729
Rust CPU Rust CPU(1) 2.412
Rust OpenCL Rust GPU 2.186
Rust rayon Rust CPU(m) 2.656

速度向上の恩恵は,Rust よりも Elixirの方が大きいようです。Elixir の方がコア数が増えた時に伸びるということなので,Elixir の方が並列処理でかかる同期・通信や排他制御のオーバーヘッドが少ないのだろうと考えられます。

おわりに

研究費で iMac Pro を購入させていただいたので,これまで以上に Elixir の開発に邁進したいと思います!

次回ですが,「Elixir 1.7.2 でGPU駆動ベンチマークを実行してみた」をお送りします。お楽しみに。

というわけで...

fukuoka_ex.png

fukuoka.ex #13 夏のfukuoka.ex祭=技術のパラダイムシフトは,現在,参加者を募集しています! 私も 「Pythonを捨ててElixirに移行する日」というタイトルで発表します!

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2