はじめに
ZACKYこと山崎進です。ようやく採点の祭典が終わりました。「採点の祭典」って何かって? 大学教員の間で流行っているキーワードで,成績評価のことです。大人数なので,なかなか大変なのですよ。私の勤務校である北九州市立大学では,お盆直前まで期末試験をやっていて,お盆明けに成績評価を提出するというスケジュールなので,お盆休み返上で成績評価するのです。
インタビューを受けました
forkwell press にてインタビュー記事が掲載されました!
「何を成したいのか」を、できる限り早く見つける手伝いを。山崎進(北九州市立大学准教授)〜Forkwellエンジニア成分研究所
Personal Vision Co-Creator への想いが色濃く現れる記事の仕上がりになりました。
さて本題
今回は Elixir 1.7.2 がリリースされたので,さっそくインストールして GPU 駆動ベンチマークを実行してみました。結論からいうと,ソースコードを変更することなく実行可能で,実行時間に大差はないです。
使用した機材の仕様
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は標準構成です。
ベンチマーク結果
Elixir 1.7.2 での実行結果です。
Mac Pro (Mid 2010)
$ elixir -v
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
Elixir 1.7.2 (compiled with Erlang/OTP 21)
stages | benchmarks1 | benchmarks3 | benchmarks8 |
---|---|---|---|
pure Elixir | pure Elixir | Elixir/Rustler | |
loop | inlining inside of Flow.map | loop, passing by list, with Window | |
1 | 47.653314 | 37.392453 | 7.726425 |
2 | 23.946650 | 19.162682 | 25.177824 |
4 | 13.690849 | 12.417391 | 19.870013 |
8 | 12.361272 | 13.123296 | 18.489603 |
16 | 12.178206 | 11.210884 | 19.965729 |
32 | 12.540539 | 10.591330 | 22.487094 |
64 | 12.470190 | 10.878797 | 28.189323 |
128 | 12.262785 | 11.103630 | 38.555434 |
benchmarks_g2 | benchmarks_t1 | benchmarks_empty |
---|---|---|
Elixir/Rustler | Elixir/Rustler | Elixir/Rustler |
OpenCL(GPU), inlining | rayon | Ruslter empty |
2.423294 | 1.784261 | 1.313502 |
iMac Pro (2017)
$ elixir -v
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:36:36] [ds:36:36:10] [async-threads:1] [hipe] [sharing-preserving]
Elixir 1.7.2 (compiled with Erlang/OTP 21)
stages | benchmarks1 | benchmarks3 | benchmarks8 |
---|---|---|---|
pure Elixir | pure Elixir | Elixir/Rustler | |
loop | inlining inside of Flow.map | loop, passing by list, with Window | |
1 | 22.823357 | 17.263715 | 4.577052 |
2 | 11.232475 | 8.647210 | 13.938190 |
4 | 5.954148 | 5.409378 | 10.471390 |
8 | 3.954989 | 4.129163 | 9.647276 |
16 | 4.225692 | 4.130425 | 10.081226 |
32 | 4.311388 | 3.965232 | 11.729024 |
64 | 4.157024 | 3.902033 | 15.635729 |
128 | 4.008359 | 4.323282 | 23.133601 |
benchmarks_g2 | benchmarks_t1 | benchmarks_empty |
---|---|---|
Elixir/Rustler | Elixir/Rustler | Elixir/Rustler |
OpenCL(GPU), inlining | rayon | Ruslter empty |
1.23860 | 0.67441 | 0.81719 |
速度変化は誤差の範囲内ではないかと思います。
おわりに
iMac Pro での Elixir のコンパイルは凄まじく速かったです!
Elixir 1.7.2 を使用してみましたが,ソースコードを特に変更する必要はなかったです。ベンチマークの実行速度の差はほぼ誤差の範疇でした。
次回は「ZEAM開発ログ v.0.3.6 Mac Pro (Mid 2010) をグレードアップしてGPU駆動ベンチマークを実行してみた」をお送りします。
というわけで...
fukuoka.ex #13 夏のfukuoka.ex祭=技術のパラダイムシフトは,現在,参加者を募集しています! 私も 「Pythonを捨ててElixirに移行する日」というタイトルで発表します!