プログラミングの最近のブログ記事
NVIDIA主催のOpenCLセミナー、OpenCL seminar〜GPUコンピューティングがもたらすもの〜に行ってきた。
その際の次世代GPU"Fermi"やOpenCLの概要のメモを公開
※個人的なメモなため、内容の正確性は保証できません
先ずは次世代GPU、コードネーム"Fermi"の話、
倍精度の性能が高くなれば、今私の単精度を用いた疑似倍精度の必要性なくなるし、ECCがサポートされれば東工大の某研究室のチームも笑うしかないだろう。
次にOpenCLの話、
Open CLの規格統一で複数のプラットフォームに対応したことは良いことだけど、HPCの分野にはまだまだこれから伸びしろがあると感じた。
プログラミングセミナーはカメラが無くて記録できなかった(涙)
後日、資料くれたりしないかしら
ホストからの呼び出し
その際の次世代GPU"Fermi"やOpenCLの概要のメモを公開
※個人的なメモなため、内容の正確性は保証できません
先ずは次世代GPU、コードネーム"Fermi"の話、
| 開発コード名 | GT200 | Fermi |
|---|---|---|
| 構成トランジスタ数 | 14億Tr | 30億Tr |
| 倍精度浮動小数点演算能力 | 30FMA Ops/clk | 256FMA Ops/clk |
| 単精度浮動小数点演算能力 | 240MAD Ops/clk | 512MAD Ops/clk |
| Warpスケジューラ(SMあたり) | 1 | 2 |
| 特別機能ユニット(SFU、SMあたり) | 2 | 4 |
| シェードメモリ(SMあたり) | 16KB | 48KB or 16KB |
| 1次キャッシュ(SMあたり) | - | 16KB or 48KB |
| 2次キャッシュ(SMあたり) | - | 768KB |
| ECCメモリサポート | - | ○ |
| コンカレントカーネル | - | 16個まで |
| ロード/ストアアドレス幅 | 32bit | 64bit |
- 次世代CUDAアーキテクチャ”Fermi”
- 30億Tr、コア数倍増512(SMあたり32コア)
- 倍精度浮動小数点演算ピーク性能8倍(単精度の1/2)、従来は1/8
- 2個のThread Cchedular(コンテキストスイッチ最適化、複数カーネルの起動、Dual DMAエンジン)、より効率的なタスク並列とデータ並列が可能
- IEEE754-2008準拠(最新CPUを凌駕)、非正規数サポート、Fused multiply add(FMAD)命令を倍精度・単精度でサポート、新設計の全命令32bitサポート整数ALU (64bitへの最適化、24bit divが消えた笑)
- オンチップ・シェアードメモリともに本格的なキャッシュ階層構造、各SMにL1キャッシュ
- GDDR5メモリインターフェイス、ECCサポート(レジスタ,L1,L2)、SECDECサポート
- C/C++ポインタのフルサポート
- NVIDIA Nexus IDE(統合化開発環境), Nexus IDE 1.0 (Visual Studio 2008 SP1)
倍精度の性能が高くなれば、今私の単精度を用いた疑似倍精度の必要性なくなるし、ECCがサポートされれば東工大の某研究室のチームも笑うしかないだろう。
次にOpenCLの話、
- OpenCL概要
- ヘテロジニアス並列コンピューティング環境のためのフレームワーク
- Open CL C言語、Open CL Runtime API
- ハイブリッドシステム CPU+DSP, PPE+SPE(Cell/B.E.), CPU+GPU
- 統一された言語による記述、統一されたAPIによる演算デバイス制御が可能
- C99ベースの言語
Open CL Version 1.0 Revision 48
各種プロセッサに対応するOpen CLは今年中にリリース
CUDAとOpenCLは同等程度のパフォーマンス(?)
Porting/Optimization サービス、コンパイラは開発中
EclipseベースのOpenCLプラグイン
拡張:ベクタ・ベクタ演算、組み込み関数、修飾子、Reinterpreting
厳密な定義:型のビット幅 演算子の意味
CUDAにはないDMA:グローバル(デバイスメモリ)ローカル(シェアード)間
制限:関数ポインタが使えない、可変長配列が使えない、再帰ができない
タスク並列とデータ並列は双方選択できる。CUDAと比較して高速になるかはものによる
Open CLの規格統一で複数のプラットフォームに対応したことは良いことだけど、HPCの分野にはまだまだこれから伸びしろがあると感じた。
プログラミングセミナーはカメラが無くて記録できなかった(涙)
後日、資料くれたりしないかしら
- Openclの.clソースコードを一部抜粋
ホストからの呼び出し
