CUDA
[Wikipedia|▼Menu]
□記事を途中から表示しています
[最初から表示]

CUDA Toolkit 7.5では命令レベルでのプロファイリングがサポートされた[32]。Nsight (旧称Parallel Nsight) と呼ばれる統合開発環境向けのアドインも提供されている。
メリット・デメリット

ここでは従来のCPUベースのプログラミングとの比較ではなく、類似のGPGPU関連技術とCUDAとの比較を行なう。
メリット

CUDAはNVIDIAが独自に開発を進めているGPGPU技術であり、NVIDIA製のハードウェア性能を最大限引き出せるように設計されている[33]。CUDAを利用することで、NVIDIA製GPUに新しく実装されたハードウェア機能をいち早く活用することができる。例えばKepler世代以降のGPUで使用可能なWarpシャッフル命令を使用することで、共有メモリを介するよりもさらに高速な並列リダクションを実行することができる[34] [35]。CUDA同様の類似GPGPU技術として代表的なものはOpenCLDirectComputeが挙げられるが、いずれもハードウェアアーキテクチャを標準化しベンダーの違いを吸収するAPI層であるため、CUDAと比較すると抽象化の度合いは低いローレベルAPIではあるものの、ハードウェア特有の先進的機能を使った細やかなチューニングによりそのハードウェアの限界性能を引き出すのは難しい[36]

また、OpenCLやDirectComputeでは、カーネルと呼ばれるデバイス用並列処理プログラムコード片(並列実行の最小単位)を専用のOpenCL-CやHLSLといった言語で記述した上で、OpenCL APIやDirect3D APIを使用してカーネルを発行する必要があるため、準備のための手間が必要となるが、CUDAの場合はより抽象化されており、カーネルコードの発行をC/C++における通常の関数呼び出しに近い形で記述できるなど、より本質的なアプリケーションコードやアルゴリズムの実装のみに注力できるようになっている。
デメリット

ハードウェアベンダーに依存しないOpenCLやDirectComputeと比較すると、CUDAはNVIDIA製のGPUでしか使えないという制約がある。このため、CUDAの機能に過度に依存したプログラムを書くと、アプリケーションのポーティング・移植が困難になる可能性がある(ベンダーロックイン[37]。AMDはCUDAアプリケーションをAMDおよび他のGPUプラットフォーム向けにソースコードレベルで移植しやすくするためのC++用APIとして、HIP (Heterogeneous-Compute Interface for Portability) の提供を開始した[38][39]が、CUDAと完全な互換性を持っているわけではない。

また、最初からグラフィックス連携用途を想定して設計されたDirectComputeと比較すると、(相互運用APIが用意されているとはいえ)GPU演算結果をグラフィックス用途に直接利用する場合はオーバーヘッドが大きくなる[40]
対応環境
ハードウェア

DirectX 10世代(G80世代)以降の統合型シェーダーアーキテクチャを採用したNVIDIA製GPUがCUDAに対応している[注釈 1]

NVIDIA GeForce 8シリーズ以降(一般/ゲーミング向け)

NVIDIA Quadro G80ベース以降(ワークステーション向け)

NVIDIA Tesla(ハイパフォーマンスコンピューティング/データセンター向け)

NVIDIA Jetson(組み込み用)

NVIDIA Tegra K1[注釈 2]以降(モバイル向けの統合型プロセッサ)

NVIDIA ION(ネットブック/ネットトップデバイス用、サポート終了)

実行には専用のデバイスドライバーを必要とする。詳細は、CUDA GPUs 。NVIDIA Developer Zone を参照。なお、ハードウェアの世代/アーキテクチャ(Compute Capability, CC)によって利用可能なGPU命令やリソースサイズ上限、倍精度浮動小数点対応可否などの制約が異なる。また、上位のCCを持つハードウェアでは、下位のCC向けにコンパイルされたCUDAコードを実行できるが、その逆は不可能となっている。
PTX (Parallel Thread Execution)

CUDAは実行環境デバイスの世代(Compute Capability)に応じた専用バイナリコードを生成できるほかに、PTX (Parallel Thread Execution) と呼ばれるNVIDIA独自のGPU中間命令(中間言語)を生成することができる。PTXを利用することで、実行時にCUDAドライバーによって実行環境に合わせた最適なコードを生成することができるようになる[41]
OS

CUDA Toolkit 6.5の対応OSは、Windows XP (32bit版のみ)、Windows 7Windows 8.1Windows Server 2008 R2Windows Server 2012 R2Fedora 20、OpenSUSE 13.1、RHEL (Red Hat Enterprise Linux) 5/6、CentOS 5/6、SLES (SUSE Linux Enterprise Server) 11-SP3、Ubuntu 12.04/14.04、Mac OS X 10.8/10.9/10.10である[42]

CUDA Toolkit 7.0の対応OSは、Windows 7、Windows 8.1、Windows Server 2008 R2、Windows Server 2012 R2、Fedora 21、OpenSUSE 13.1/13.2、RHEL 6/7、CentOS 6/7、SLES 11/12、Ubuntu 12.04/14.04/14.10、OS X 10.9/10.10である[43]

CUDA Toolkit 7.5の対応OSは、Windows 7、Windows 8.1、Windows 10、Windows Server 2008 R2、Windows Server 2012 R2、Fedora 21、OpenSUSE 13.2、RHEL 6/7、CentOS 6/7、SLES 11/12、SteamOS 1.0-beta、Ubuntu 14.04/15.04、OS X 10.9/10.10/10.11である[44]

CUDA Toolkit 8.0 GA2の対応OSは、Windows 7、Windows 8.1、Windows 10、Windows Server 2008 R2、Windows Server 2012 R2、Windows Server 2016、Fedora 23、OpenSUSE 13.2、RHEL 6/7、CentOS 6/7、SLES 11/12、Ubuntu 14.04/16.04、OS X 10.11/10.12である[45]

CUDA Toolkit 9.2の対応OSは、Windows 7、Windows 8.1、Windows 10、Windows Server 2012 R2、Windows Server 2016、Fedora 27、OpenSUSE Leap 42.3、RHEL 6/7、CentOS 6/7、SLES 12、Ubuntu 16.04/17.10、OS X 10.13である[46]

CUDA Toolkit 10.2の対応OSは、Windows 7、Windows 8.1、Windows 10、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、Fedora 29、OpenSUSE 15、RHEL 6/7/8、CentOS 6/7/8、SLES 1512 SP4、Ubuntu 16.04/18.04、OS X 10.13である[47]

CUDA Toolkit 11.8の対応OSは、Windows 10、Windows 11、Windows Server 2016、Windows Server 2019、Windows Server 2022、Fedora 35、OpenSUSE 15、RHEL 7/8/9、CentOS 7、SLES 15、Ubuntu 18.04/20.04/22.04、Debian 11、KylinOS(英語版) 10、Rocky 8/9、WSL-Ubuntu 2.0である[48]。CUDA Toolkit 11.0以降、macOSはサポート対象外となった[49][50][注釈 3]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:58 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef