グラフィックスカード¶
グラフィックスカードあれこれ¶
最近のグラフィックスカードは画面表示のための周辺機器というよりも画面表示がおまけで高性能演算処理機器(画面表示機能付きのものあり)といってもいいほど高度化し複雑になっています。
そこで、理解のためグラフィックスカードの技術について調べたことなどをメモします。
製品の種類について¶
OpenGLカードとDirectXカードとの違い¶
NVIDIA製品では、OpenGLカードとされるQuadro製品系列とDirectXカードとされるGeForce製品系列があります。
この違いについて、ネット等をあさって断片情報を集めてみました。
- 一般的には
- GeForceがDirectX系処理向きで演算処理は精度より速さ重視
- QuadroがOpenGL系処理向きで演算処理は速さより精度重視
- Quadroは倍精度で演算
- よって、アプリケーションによってはQuadroでは正常動作するがGeForceではダメなものがある。
- 例)一部テクスチャが落ちる、辺を共有する面の共有辺のあいだに隙間がある、辺を共有する面が共有辺において交差している、辺を共有する面と直線が完全には重ならない
- GeForceでAutodesk実行時、パンやズームを行ったとき一瞬描画が飛ぶ
- GeForce系列もOpenGL ICDを含むのでOpenGLアプリケーションが動くが、Quadro系列はドライバの動作検証が追加されている。
業務用途のQuadroでは描画が正しく意図通りになっているかを検証しているし、OpenGLアプリケーションのベンダー各社が自社アプリケーションの動作検証を実施したドライババージョンを公開している。 - GeForce系列では、バージョンによって出力画像に微妙な違いがあることが多い
- QuadroでOpenGLが速い理由
- 解釈として業務用途OpenGLアプリケーションは表示品質を確保するため、QuadroではOpenGLを呼ぶがGeForceではソフトウェアエミュレーションしているため、一部のアプリケーションでQuadroが速い結果となる。
- 菱洋エレクトロの解説
- プロフェッショナル用途にはQuadro。
- 長時間のCADでの設計業務、CAEでの解析業務、CG作成でのレンダリングなど、高い安定性、信頼性が求められる用途。
- フリーズが許され難い使用環境。
- QuadroはNVIDIA社自身が設計、製造、検査している。長期間(18~24ヶ月)の製品提供と3年間の保証、企業向けサポート体制
- 大手ソフトウェア・パートナー各社と協力しアプリケーションの最適なパフォーマンス、安定性を確保する体制、ISV各社がテスト実施と認証を行う
- 10/12ビットグレースケール出力、30ビットカラー出力
- プロフェッショナル用途にはQuadro。
NVIDIA Keplerアーキテクチャ¶
GPC(Graphics Processing Cluster)¶
- SMX×2基
- ROPパーティション、L2キャッシュ、メモリインタフェースとクロスバー接続
SMX(Streaming Multiprocessor eXtreme)ユニット¶
- 単精度CUDAコア×192個を持ちます。
- ワープスケジューラ×4個
32本の並列スレッドをグループ化した「ワープ」単位にスケジューリングされます。 - 命令ディスパッチユニット×8個(ワープスケジューラにつき2個)
1ワープにつき1サイクルに独立した命令を2つ発行できます。 - 1スレッドからアクセス可能なレジスタ数が最大255個
- L1キャッシュ
単精度CUDAコア¶
- 浮動小数点演算ユニット
- 整数演算ユニット
GPGPU観点の情報整理¶
シェーダーユニット¶
グラフィックスカードが3D描画を担うようになった頃、3D描画において頂点の計算、光源と形状から画素の陰影・色などの計算をCPUではなくグラフィックスカードに計算ユニットを搭載して実行させるようになりました。これらの計算はベクトル・行列計算が主で、複数のデータ(ベクトルや行列の要素)同士に対して同じ演算をするものです。
この計算ユニットをプログラミング可能としたシェーダーユニットへと発展してきました。このプログラミング可能なシェーダーユニットを画面描画の処理ではなく汎用的な計算処理に使用するのがGPGPU(General-Purpose computing on Graphics Processing Units)です。
一方、CPU側もSIMD(Single Instruction, Multiple Data)演算器を搭載してベクトル演算能力を高めてきましたが、グラフィックスカードにはシェーダーユニットが数百~数万個とハードウェアレベルで大規模な並列演算能力をもっており、特定の演算であれば圧倒的にグラフィックスカードのシェーダーユニットによる処理が高速です。
CUDAコア¶
NVIDIA製グラフィックスカード(GPU)において、シェーダーユニットを用いて汎用的な掲載を行う CUDAの実装です。SIMD方式の演算処理により複数のデータに対して同一命令を同時に実行することで、ベクトル・行列・フィルター計算を並列処理して高速に行います。
個々のデータをFP32/INT32(32bit浮動小数点数/32bit整数)としてCUDAコアに割り当て、複数のCUDAコアに同じ命令を与えて計算をさせることでベクトル計算を並列に処理します。
ここでいうCUDAコアは、CPUでいえば算術論理演算装置(ALU: Arithmetic and Logic Unit)に相当します。CPUの世界でのコアとCUDAコアとは示す対象が全く異なります。CPUに相当するのは、SMであり、一つのSMは128個のCUDAコアを抱えています(RTX 40系)。
RTコア¶
レイトレーシング処理に特化した計算ユニットです。
テンソルコア¶
テンソル(Tensor)コアは、AI(深層学習)などの用途で行列の積和演算( A × B + C)を行う専用の計算ユニットです。初期のテンソルコアでは、 A, B, C は4×4行列で、それぞれの要素はFP16(16bit浮動小数点数)の計算を1サイクルで実行するものでした。その後、要素をFP8、FP6、FP4と小さなbit数とし、行または列の数を増やした演算やスパース性を考慮した計算の効率化が図られています。また、AIの深層学習を用いたLLMで使われるTransformerモデルの計算を最適にするTransmformer Engineの搭載などの進化が進んでいます。
- 混合精度演算
計算過程でFP16を用い、結果をFP32で保持することで畳み込み・行列演算の効率化と結果の精度を共存させるもの。 - FP4
AIの推論計算では学習時ほどデータの精度に影響を受けないので、重みを6bitや4bit幅のデータで表現して精度を下げることで演算性能を高めるのに用いる。
参考情報¶
ドライバーソフトウェア¶
NVIDIA¶
参考情報¶
- NVIDIA グラフィックス ドライバーの入れ直し - Display Driver Uninstaller(DDU)の使い方
NVIDIAドライバーをきれいに再インストールする2つの方法を紹介しているブログです。1つ目はNVIDIAドライバーのインストール時に「カスタム(詳細)」を選び、次の画面で「クリーンインストールの実行」にチェックを付け、インストール対象要素は最低限「PhsyXシステム」を選ぶ。もうひとつはDisplay Driver Uninstallerを使う方法。
製品情報¶
NVIDIA Quadroシリーズ¶
| 型式 | CUDA | メモリ | 消費電力 | 出力 | CINEBENCH R15 | 備考 |
|---|---|---|---|---|---|---|
| K600 | Kepler 192 | DDR3 1GB 128bit | 41W | DVI-I×1, DP×1 | 28.0 | ロープロファイル |
| K620 | Maxwell 384 | DDR3 2GB 128bit | 45W | DVI-I×1, DP×1 | 77.42 | ロープロファイル |
| K1200 | Maxwell 512 | GDDR5 4GB 128bit | 46W | MiniDP×4 | ロープロファイル、実売5万円 | |
| K2000 | Kepler 384 | GDDR5 2GB 128bit | 51W | DVI-I×1, DP×2 | 73.54 | |
| K2200 | Maxwell 640 | GDDR5 4GB 128bit | 68W | 121.53 | ||
| K4000 | Kepler 768 | GDDR5 3GB 192bit | 80W | DVI-I×1, DP×2 | ||
| K4200 | Maxwell 1344 | GDDR5 4GB 256bit | 108W | 147.59 | ||
| K5000 | Kepler 1536 | GDDR5 4GB 256bit | 122W | DVI-I×1, DVI-D×1, DP×2 | 144.55 | |
| K5200 | Maxwell 2304 | GDDR5 8GB 256bit | 150W | 148.8 | ||
| K6000 | Keper 2880 | GDDR5 12GB 384bit | 225W | DVI-I×1, DVI-D×1, DP×2 | 190.31 |
- Intel HD Graphics 4000のCINEBENCH R15は、9.0