OpenCLはCUDAやDirectComputeと競合するのか

データパラレルコンピューティングを取り扱うプラットフォームとして、KhronosのOpenCL、NVIDIAのCUDA、MicrosoftのDirectComputeという3つが掲げられ、これらが同列に比較されてきた。「一体どれが生き残るのか」、と。

結論を言えば、それぞれは微妙に立ち位置が違うので、専門的な視点で見れば「比べられない」ということになる。

CUDAはNVIDIAのGPU環境下において、GPUが主役を務め、CPUはマネージメントに徹した脇役的活用を想定している。

DirectComputeはGPUメーカーの種類は問わない特徴はあるが、CUDAと同じで主役はGPUとしている。

CUDAはリソースの管理を、グラフィックスを取り扱うDirect3Dとは論理的に違えている。このため、CUDAの結果を3Dグラフィックスレンダリングに直接利用する用途にはDirectComputeと比べてオーバーヘッドが大きいという弱点がある。ただ、NVIDIAは自社GPUとして、当然DirectComputeもサポートするので、アプリケーション側がDirectComputeを使う以上はその弱点は隠蔽されてしまうので問題はない。

OpenCLは、その視線がWindows環境下のPCだけに向いていないのが特徴となる。Mac OSにてOpenCLは標準的なデータパラレルコンピューティング・プラットフォームとして採用されていることからも分かるように、OpenCLはOSの種類やハードウェアの種類に限定されない適応能力の幅を持っている。OpenCLにおいては、能力差はあれどCPUもGPUも同列の演算リソースとして取り扱える強みがある。

OpenCLは、CUDAやDirectComputeと比較すると、この自由度が高すぎる利点が、アプリケーション開発の難しさに繋がってくる嫌いはあるが、これを克服して完成されたOpenCLアプリケーションは、潜在的にポータビリティに優れることになる。この特性は組み込み系用途で非常に歓迎されるはずだ。

(トライゼット西川善司)