ストリーミング データを処理するために GPU を使用する方法を調査しています。2つの選択肢がありましたが、どちらに行くか決められませんでしたか?
私の基準は次のとおりです。
- 使いやすさ (優れた API)
- コミュニティとドキュメント
- パフォーマンス
- 未来
Linux の下で C および C++ でコーディングします。
OpenCL
クーダ
結論 -- OpenCL は移植可能で、CUDA は nVidia のみです。ただし、独立した言語であるため、CUDA ははるかに強力で、非常に優れたツールがたくさんあります。
私の個人的な経験は次のとおりです。
API: OpenCL にはもう少し複雑な API があります。ただし、ほとんどの時間はカーネル コードの記述に費やされますが、ここでは両方ともほとんど同じです。
コミュニティ: CUDA には、これまで OpenCL よりもはるかに大きなコミュニティがありますが、これはおそらく均等になるでしょう。
ドキュメンテーション: どちらも非常によく文書化されています。
パフォーマンス: OpenCL ドライバーがまだ完全に最適化されていないという経験をしました。
将来: OpenCL はオープン スタンダードであり、ベンダーや特定のハードウェアに限定されないため、将来は OpenCL にかかっています。
この評価は 2010 年のものなので、おそらく時代遅れです。
CUDA を使用する特別な理由がない限り、OpenCL を使用します。OpenCL は、GPU での実行に加えて、Intel i7 のようなマルチコアでも適切に実行されます。OpenCL を使用することで、Droid 携帯電話から、来年オンラインになる予定の世界最大のスーパーコンピューターBlue Watersの IBM Power7 計算ノードまで、はるかに幅広いハードウェアで実行できます。