AMD Core Math Library for Graphic Processors (ACML-GPU)を使ってRADEON HD5970/Core i7 920上でdgemmパフォーマンスを見たら、176G-200GFlopsであった。
Core i7 920のGotoBLASでのパフォーマンスは42G-43GFlops
なので、5倍弱高速ということがわかった。ただし、公称理論ピークは
# Processing power (double precision): 928 GigaFLOPS であり、19%-21%の性能しかでていない。まだまだ改善の余地があるように見受けられた。
以下手順と詳細
$ cp -r /opt/acml1-1/GPGPUexamples /work/
$ cd /work/GPGPUexamples/
makefileを少し変更
$ diff -u makefile~ makefile
--- makefile~ 2010-08-02 09:33:49.462846364 +0900
+++ makefile 2010-08-02 09:36:02.024094978 +0900
@@ -2,7 +2,7 @@
# To run these programs, set the environment var:
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(ACMLHOME)/lib:/usr/X11R6/lib64
-ACMLHOME = ../gfortran64
+ACMLHOME = /opt/acml1-1/gfortran64
GFORT_ACML = $(ACMLHOME)/lib/libacml.a
CINCLUDE = $(ACMLHOME)/include
LIBCALBLAS := $(ACMLHOME)/lib/libCALBLAS.a
LD_LIBRARY_PATHの設定: .bashrc
#added for ATI Stream SDK
export ATISTREAMSDKROOT=/work/ati-stream-sdk-v2.1-lnx64
export ATISTREAMSDKSAMPLESROOT=/work/ati-stream-sdk-v2.1-lnx64
export LD_LIBRARY_PATH=/opt/acml1-1/gfortran64/lib:$ATISTREAMSDKROOT/lib/x86_64:$LD_LIBRARY_PATH
とした。
dgemm_c_example.exeの結果
$ ./dgemm_c_example.exe
ACML-GPU example: DGEMM call
--------------------------------------------------------------
Matrix A (3000 x 3000):
1.6416 1.7286 1.1754 1.4190
1.5516 1.1218 1.9234 1.8641
1.2852 1.0358 1.9557 1.2583
1.3752 1.7974 1.8278 1.4440
Matrix B (3000 x 3000):
1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 1.0000
Matrix C:
5.4629 5.7522 3.9114 4.7221
5.1634 3.7330 6.4005 6.2033
4.2767 3.4469 6.5079 4.1874
4.5763 5.9813 6.0825 4.8052
Time: 4 calls in 1.23 seconds, 176040 MFlops
$ ./time_dgemm.exe
Matrix Time in Performance
Size Seconds in Megaflops
------ ------------ ------------
400 1.183310 108
600 0.065349 6610
800 0.090280 11342
1000 0.114665 17442
1200 0.143894 24017
1400 0.170633 32162
1600 0.206152 39737
1800 0.245170 47575
2000 0.274377 58314
2200 0.312106 68233
2400 0.334794 82582
2600 0.382656 91863
2800 0.411575 106673
3000 0.461166 117094
3200 0.615762 106430
3400 0.677728 115987
3600 0.751929 124096
3800 0.875048 125414
4000 0.911168 140479
4200 1.026378 144367
4400 1.167961 145867
4600 1.135128 171497
4800 1.337227 165404
5000 1.382554 180824
5200 1.606940 175000
5400 1.670715 188498
5600 1.936595 181365
5800 2.129199 183272
6000 2.281671 189334
6200 2.471613 192852
6400 2.818247 186033
6600 2.933346 196019
6800 3.155271 199305
7000 3.248984 211142
7200 4.753251 157049
7400 4.847725 167181
7600 5.349863 164107
7800 5.567497 170472
8000 5.867420 174523
以上