中田真秀(なかたまほ)のブログ

研究について、日常について、その他。

Tesla C2050とRADEON HD5970の性能はdgemmで大体同じ

2010-08-02 18:00:04 | 日記
最近大人気で品薄のnVidia C2050とRADEON HD5970でdgemmの比較してみたい。

C2050はもってないので、webからさがしたらTeslaC2050-Fermi-Performance.pdfというのがあったので、比較。

だいたい安定して180GFlopsでている。一方RADEONも170-200GFlops出ているが、性能はすこしブレがある。おそらく実装がmatureではないんだろう。dgemmだけのソースコードがACML-GPUに入っていたがGotoBLASのようにチューニングされているという印象はなかった。

おそらくちゃんとチューニングすればRADEONでは200Gflopsくらいでるような気がする。つまり、RADEON HD5970とTesla C2050とはほぼ同じ性能がだせるのだと思われる。

なお、Tesla C2050の倍精度の公称理論性能値は515Gflops、一方、RADEON HD5970は、928Gflopsとなっている。うーんどういうことだろうか。チューニングすればRADEONに有利なのか。今後が楽しみだなぁ。

RADEON HD5970: ACML-GPU: dgemm 176GFlops-200GFlops

2010-08-02 09:32:47 | 日記
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


以上

RADEON HD5970: AMD Core Math Library for GPU

2010-08-02 09:08:17 | 日記
dgemmをRADEON HD5970で動かすというのをやってみる。

AMD Core Math Library for Graphic Processors (ACML-GPU)
があるのでそこから、acmlgpu-1-1gfortran-64bit.tgz (16MB)をダウンロード。

以下のコマンド発行
$ tar tvfz acmlgpu-1-1-gfortran-64bit.tgz
...
$ sudo sh install-acml-1-1-gfortran-64bit.sh

質問等に適当に答える...

インストール先はデフォルトの
/opt/acml1-1/

done