CUDA(Compute unified device architecture)とは、NVIDIAが提供するGPGPU開発環境である。
概要
CPUからNVIDIAのGPUに対して超並列処理の命令を送り、実行処理を可能にするためのソフトウェア開発環境。C言語での開発環境に、GPUとCPU間での通信機能や、単純な繰り返し命令を超並列処理に置き換える機能を加えている。[1]
NVIDIAは2006年にCUDAアーキテクチャに基づいたGPU「GeForce8800GTX」を発表しており、これ以降のNVIDIAのGPUがCUDAに対応している。[2]
GPU向けのプログラミング環境としてはCg(C for Graphics)を用いたものもあるが、汎用的なプログラムの記述は困難である。CUDAでは、C言語ライクな言語を採用しているため、汎用コンピューティングに適している。
現状
主にエンコード処理を行うパッケージソフトウェアで多く採用されているが、GPUが得意とするデータ(ピクセル)独立性が高い計算は限らており、全てをGPUで処理すればCPUよりも高速になるわけではない。そのため、一般用途ではそれほど普及はしていない。
ただし、コンピューターグラフィックスとの親和性はとても高いので、そちらの分野では今後も発展が見込まれている。
利用方法
2014年8月時点、CUDA 6.0を利用した開発を行うには次の環境が必要になる。
対応OS | Windows XP以降(32bit版及び64bit版) Fedora 19 Red Hat Enterprise Linux 5以降 SUSE Linux Enterprise Desktop 11-SP2&3 OpenSUSE 12.3 Ubuntu 12以降 Mac OS X 10.8以降 |
対応GPU | 2014年8月現在NVIDIAから発売されているGPU製品のほぼ全てでCUDAを利用することができる。 詳細はこちらから確認すること。 |
上記の環境があれば、このページから自分のOSに対応するCUDAパッケージをインストールすることでCUDAを利用した開発を行うことが出来る。(環境変数などの設定は割愛)
また、C/C++言語の開発環境は別に必要なので、Visual StudioやEclipse、Vimなど好みに合わせて用意すること。
関連項目
脚注
- *NVIDIAはなぜAI用途で独走中?牙城は崩せるか 2023.12.7
- *「CUDA by Example 汎用GPUプログラミング入門」 Jason Sanders / Edward Kandrot インプレス 2011 p.6
- 2
- 0pt