= 基本情報 = * 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における利用方法 = * [wiki:"Ubuntuにインストール"] : Ubuntu 8.04 LTSへインストール = CALプログラムの基本 = 以下は2008年度卒研用に中里が作成したものである。SDKのバージョンが1.2.1betaの時点での情報である。 利用しているGPUボードは、HD4850 512MBのもの。HD4870 1GBのボードでも同様に利用できている。 * CALを説明したプレゼンファイル(2008年8月作成) : CAL200808.pdf (Ubuntuで見ると字がずれます) * [wiki:"CALプログラミング(0)"] : 準備 * [wiki:"CALプログラミング(1)"] : 簡単なプログラム * [wiki:"CALプログラミング(2)"] : 簡単なプログラムの拡張 * [wiki:"CALプログラミング(3)"] : ループ * [wiki:"CALプログラミング(4)"] : 倍精度