wiki:CALによるGPUプログラミング

Version 17 (modified by nakasato, 16 years ago) (diff)

--

基本情報

  • AMD/ATi社のGPUをプログラムするための環境のひとつがCALである
  • 仮想的なアセンブラによりGPUで実行するためのプログラムを作成できる

R770の基本

  • R770アーキテクチャのGPUチップは、HD4850, HD4870として売られているボードに搭載されている。

  • 二つのボードの違いは、動作クロックとメモリインターフェイス
  • Shader Processorが800個搭載されており、それぞれが単精度でMultiply-Addが可能なprocessorである。実際には、単純に単精度演算ができるprocessor(Stream Core)が4個と関数演算もできるprocessor(T-Stream Core)が一緒になって、128 bitレジスタをもつ5 wayのVLIW processor(Thread Processor)になっているらしい。さらに、このTPが、X個づつまとまって、メモリを共有している(shared buffer)と思われる。

  • 以上のことから単精度での理論性能は以下の式で計算される:
     単精度性能 = (Number of SP) * 5 (ways) * 2 (FP ops) * clock (MHz) = X MFLOPS
    
  • 倍精度については、生成されたR770のアセンブラソースを見ると:
    • 加算はStream Coreを2個利用
    • 乗算はStream Coreを4個利用
    • 除算は単精度の初期値をつかってどうにか

のように実行されるようだ。結果的に倍精度加算の性能は単精度性能の1/5となり、乗算は1/10になる。

  • 性能まとめ表
board arch clock memory SPの数 単精度性能 倍精度加算性能 倍精度乗算性能
HD4850 R770 650 MHz DDR3 800 1040 GFLOPS 208 GFLOPS 104 GFLOPS
HD4870 R770 750 MHz DDR5 800 1200 GFLOPS 240 GFLOPS 120 GFLOPS

x2のボードは単純に2倍の性能

Linuxにおける利用方法

CALプログラムの基本

以下は2008年度卒研用に中里が作成したものである。SDKのバージョンが1.2.1betaの時点での情報である。 利用しているGPUボードは、HD4850 512MBのもの。HD4870 1GBのボードでも同様に利用できている。

Attachments (1)

Download all attachments as: .zip