Changes between Version 30 and Version 31 of CALによるGPUプログラミング


Ignore:
Timestamp:
Apr 18, 2009 11:50:05 AM (16 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CALによるGPUプログラミング

    v30 v31  
    66= RV770の基本 = 
    77 * RV770アーキテクチャ(正確にはアーキテクチャの名前はR700)のGPUチップは、Radeon HD4850, HD4870, HD4890として売られているボードに搭載されている。 
    8   * Stream Coreと呼ばれる単精度浮動小数点演算器が800個搭載されており、それぞれが単精度でMultiply-Addが可能なprocessorである。Stream Coreには2種類あり、片方は単純に単精度演算ができるStream Core(SC)で、他方は三角関数なども可能なT-Stream Core(T-SC)である。 
    9  * 4組のSCとひとつのT-SCが組になり、5 wayのVLIW processorを構成している。このThread Processor(TP)は、内部に128個(?)の128 bit汎用レジスタとそのた一時レジスタなどをもつ。TPの命令実行には様々なパターンがあり、最大で5個の単精度または32 bit整数演算、あるいは4個の単精度/整数演算+1個の関数演算、あるいは2個の倍精度加算、または1個の倍精度乗算が実行できる。RV770は合計で160個のTPを持つ。 
     8 
     9 * 性能まとめ表 
     10|| board  || arch  || clock || memory || SPの数 || 単精度性能 || 倍精度加算性能 || 倍精度乗算性能 || 
     11|| HD4850 || RV770 || 650 MHz || DDR3 || 800 || 1040 GFLOPS || 208 GFLOPS || 104 GFLOPS || 
     12|| HD4870 || RV770 || 750 MHz || DDR5 || 800 || 1200 GFLOPS || 240 GFLOPS || 120 GFLOPS || 
     13|| HD4890 || RV770 || 850 MHz || DDR5 || 800 || 1360 GFLOPS || 272 GFLOPS || 136 GFLOPS || 
     14 x2のボードは単純に2倍の性能 
     15  
     16 * Stream Coreと呼ばれる単精度浮動小数点演算器が800個搭載されており、それぞれが単精度でMultiply-Addが可能なprocessorである。Stream Coreには2種類あり、片方は単純に単精度演算ができるStream Core(SC)で、他方は三角関数なども可能なT-Stream Core(T-SC)である。 
     17 
     18 * 4組のSCとひとつのT-SCが組になり、5 wayのVLIW processorを構成している。このThread Processor(TP)は、内部に128個(?)の128 bit汎用レジスタとその他一時レジスタなどをもつ(はず)。TPの命令実行には様々なパターンがあり、最大で5個の単精度または32 bit整数演算、あるいは4個の単精度/整数演算+1個の関数演算、あるいは2個の倍精度加算、または1個の倍精度乗算が実行できる。RV770は合計で160個のTPを持つ。 
     19 
    1020 * TPが16組集まってSIMD engineとよばれるユニットを構成する。SIME engineには共有メモリ(Local Data Store;LDS)と外部メモリへのtwo-levelのキャッシュがある。SIMD engine内では、LDSを利用することでTP間のデータのやりとりをおこなうことができる。SIMD engine内のTPは同一の命令を実行する。RV770は合計で10個のSIMD engineを持つ 
     21 
    1122 * SIMD engineへの命令の供給と制御はUltra-threaded Dispatch Processor(UTDP)というユニットがおこなう。UTDPは、異なるSIMD engineに別々の命令を供給することが可能。そのためRV770全体ではSIMD実行ではなくMPMD実行になる場合がある。また、名前からするとひとつのSIMD engineに供給する命令流を複数切り替えることで、メモリの読み込み隠蔽などをおこなったりもするのだろう。 
     23 
    1224 * HD4870とHD4850の違いはRV770チップの動作クロック(750 MHz vs. 625 MHz)だけでなく、外部メモリへのインターフェイスも違う。4870はDDR5メモリと接続され、メモリ帯域幅は115.2 GB/sec (256 bit bus, data clock rate 3600 MHz)である。4850はDDR3メモリと接続され、メモり帯域幅はX GB/sec (256 bit bus, data clock rate X MHz)である。HD4890はHD4870のクロックをさらにあげて850 MHzとしたもの。メモリクロックもあがってる? 
    1325 
     
    2234   * 除算は単精度の初期値をつかってどうにか 
    2335 のように実行されるようだ。単精度での理論性能は全ての命令がmultiply-addの時に達成されるものであるため、結果的に倍精度加算は単精度性能の2/5の半分で1/5の性能となり、乗算はさらにその半分の1/10の性能になる。 
    24  
    25  * 性能まとめ表 
    26 || board  || arch  || clock || memory || SPの数 || 単精度性能 || 倍精度加算性能 || 倍精度乗算性能 || 
    27 || HD4850 || RV770 || 650 MHz || DDR3 || 800 || 1040 GFLOPS || 208 GFLOPS || 104 GFLOPS || 
    28 || HD4870 || RV770 || 750 MHz || DDR5 || 800 || 1200 GFLOPS || 240 GFLOPS || 120 GFLOPS || 
    29 || HD4890 || RV770 || 850 MHz || DDR5 || 800 || 1360 GFLOPS || 272 GFLOPS || 136 GFLOPS || 
    30  x2のボードは単純に2倍の性能 
    3136 
    3237= Linuxにおける利用方法 =