機種名: iMac
機種 ID: iMac14,3
プロセッサ名: Intel Core i5
プロセッサ速度: 2.9 GHz
プロセッサの個数: 1
コアの総数: 4
二次キャッシュ(コア単位): 256 KB
三次キャッシュ: 6 MB
メモリ: 16 GB
チップセットのモデル: NVIDIA GeForce GT 750M
種類: GPU
バス: PCIe
PCIe レーン幅: x16
VRAM(総量): 1024 MB
製造元: NVIDIA (0x10de)
この環境で、ViennaCLのベンチマークを走らせてみる。
まず、CPUから。
./examples/benchmarks/dense_blas-bench-cpu
Benchmark : BLAS
----------------
sCOPY : 3.07 GB/s
sAXPY : 3.74 GB/s
sDOT : 3.02 GB/s
sGEMV-N : 0.431 GB/s
sGEMV-T : 0.767 GB/s
sGEMM-NN : 0.591 GFLOPs/s
sGEMM-NT : 0.541 GFLOPs/s
sGEMM-TN : 0.574 GFLOPs/s
sGEMM-TT : 0.543 GFLOPs/s
----
dCOPY : 5.83 GB/s
dAXPY : 7.02 GB/s
dDOT : 5.7 GB/s
dGEMV-N : 0.82 GB/s
dGEMV-T : 1.46 GB/s
dGEMM-NN : 0.557 GFLOPs/s
dGEMM-NT : 0.51 GFLOPs/s
dGEMM-TN : 0.579 GFLOPs/s
dGEMM-TT : 0.573 GFLOPs/s
OpenMP版
Benchmark : BLAS
----------------
sCOPY : 9.14 GB/s
sAXPY : 10.3 GB/s
sDOT : 9.33 GB/s
sGEMV-N : 1.28 GB/s
sGEMV-T : 2.34 GB/s
sGEMM-NN : 2.01 GFLOPs/s
sGEMM-NT : 1.97 GFLOPs/s
sGEMM-TN : 2.04 GFLOPs/s
sGEMM-TT : 1.97 GFLOPs/s
----
dCOPY : 12.7 GB/s
dAXPY : 18.1 GB/s
dDOT : 15.4 GB/s
dGEMV-N : 2.15 GB/s
dGEMV-T : 3.75 GB/s
dGEMM-NN : 2.02 GFLOPs/s
dGEMM-NT : 1.99 GFLOPs/s
dGEMM-TN : 2.06 GFLOPs/s
dGEMM-TT : 2.07 GFLOPs/s
コア分だけ速くなってる。
次はOpenCL
./examples/benchmarks/dense_blas-bench-opencl
----------------------------------------------
Device Info
----------------------------------------------
Name: GeForce GT 750M
Vendor: NVIDIA
Type: GPU
Available: 1
Max Compute Units: 2
Max Work Group Size: 1024
Global Mem Size: 1073741824
Local Mem Size: 49152
Local Mem Type: 1
Host Unified Memory: 0
Benchmark : BLAS
----------------
sCOPY : 19.3 GB/s
sAXPY : 46.8 GB/s
sDOT : 41.6 GB/s
sGEMV-N : 25.5 GB/s
sGEMV-T : 23.7 GB/s
sGEMM-NN : 31.6 GFLOPs/s
sGEMM-NT : 33.9 GFLOPs/s
sGEMM-TN : 29.5 GFLOPs/s
sGEMM-TT : 31 GFLOPs/s
----
dCOPY : 48.4 GB/s
dAXPY : 55.2 GB/s
dDOT : 44.9 GB/s
dGEMV-N : 23.5 GB/s
dGEMV-T : 23.2 GB/s
dGEMM-NN : 14.8 GFLOPs/s
dGEMM-NT : 14.9 GFLOPs/s
dGEMM-TN : 14.2 GFLOPs/s
dGEMM-TT : 14.6 GFLOPs/s
そして、CUDA。
./examples/benchmarks/dense_blas-bench-cuda
Benchmark : BLAS
----------------
sCOPY : 24.5 GB/s
sAXPY : 52.1 GB/s
sDOT : 37.5 GB/s
sGEMV-N : 40.8 GB/s
sGEMV-T : 26.4 GB/s
sGEMM-NN : 38.2 GFLOPs/s
sGEMM-NT : 38 GFLOPs/s
sGEMM-TN : 39.6 GFLOPs/s
sGEMM-TT : 38.1 GFLOPs/s
----
dCOPY : 56.3 GB/s
dAXPY : 52.8 GB/s
dDOT : 47.1 GB/s
dGEMV-N : 37.4 GB/s
dGEMV-T : 27.1 GB/s
dGEMM-NN : 22.5 GFLOPs/s
dGEMM-NT : 23 GFLOPs/s
dGEMM-TN : 22.5 GFLOPs/s
dGEMM-TT : 22.4 GFLOPs/s
GPUの圧勝。ただ、CPU版の単精度計算と倍精度計算でFLOPS値が同じくらいなのは、AVX2の命令系を使っていないのだろう。まあ、使っても単精度が倍になるくらいか。それともSIMDは使ってないのか。それならば最大16倍速くなる。