ATI Streamとは?

ATI Streamについて、簡単に解説しておこう。

「ATI StreamはプラットフォームではなくGPGPUテクノロジの一形態である」とTerry Makedon氏(Software Product Management Manager, Graphics Product Group, AMD)は解説するが、広義としてはNVIDIA CUDAと同じような「GPUメーカーが提供する独自のGPGPUソリューション」ということになる。

Terry Makedon氏(Software Product Management Manager, Graphics Product Group, AMD)

ATI StreamではGPUハードウェアのネイティブな命令セットを抽象化するCAL(Compute Abstraction layer)を持ち、ここがドライバ部分に含まれることになる。

ATI Streamの階層図

ATI Streamの開発キット「ATI Stream SDK」は2008年12月にリリースされるバージョン1.3を最新版としており、スタンフォード大学で開発されたGPGPU専用言語「Brook」のATI Stream向け拡張試用版「Brook+」を標準開発言語とする。NVIDIAのCUDAにもC言語をGPGPU向けに拡張した言語が含まれるが、ATI Streamにおいては、それがBrook+ということになる。Brook+もC言語にストリームデータ処理のための仕様拡張と関数を追加した仕様になっており、この点はCUDAとよく似ている。

プログラムは、このBrook+によってCALコードに変換されて初めて実行形態となる。

Brook言語サンプルコードの一例。ストリームデータは"<>"で定義する。ただし、配列のようにインデックスによる読み出しはできない。カーネルの駆動にはFORループは不要

以前、ATI(AMD)がらみのGPGPU関連話題に上ったGPUネイティブ命令コードのClose To Metal(CTM)はGPUのローレベルにアクセスできたが、GPUごとのネイティブの仕様を理解する必要があったために、公開は一部のミドルウェアやアプリケーション開発者向けに留まる見込みだ。つまり、一般アプリケーション開発者はBrook+で開発することが基本スタイルになる。

階層図の右上端の「ツール、ライブラリ、ミドルウェア」があるが、半分ちょっとはCALに差し掛かっていて、残りはATI GPU HARDWAREに掛かっているが、これはソフトウェアの種類によってはCALを利用したり、CTMを利用したりすることがある……と言うことを指し示している。

さて、ここで気になるのは先代Radeon HD 3000の取り扱いだが、AMDは「Radeon HD 3000も見捨ててはいない」というコメントを筆者の取材に対して出している。Catalyst 8.12では、まだRadeon HD 3000シリーズはサポートしないが、将来的に対応させる予定だとのことだ。