22

ストリーミング データを処理するために GPU を使用する方法を調査しています。2つの選択肢がありましたが、どちらに行くか決められませんでしたか?

私の基準は次のとおりです。

  1. 使いやすさ (優れた API)
  2. コミュニティとドキュメント
  3. パフォーマンス
  4. 未来

Linux の下で C および C++ でコーディングします。

4

3 に答える 3

36

OpenCL

  • 本番コードからのインターフェース
  • 異なるグラフィックス ハードウェア間で移植可能
  • 操作は限定的だがショートカットは用意されている

クーダ

  • 別の言語 (CUDA C)
  • nVidia ハードウェアのみ
  • コードのほぼ完全な制御 (C に似た言語でのコーディング)
  • 多くのプロファイリングおよびデバッグ ツール

結論 -- OpenCL は移植可能で、CUDA は nVidia のみです。ただし、独立した言語であるため、CUDA ははるかに強力で、非常に優れたツールがたくさんあります。

  1. 使いやすさ-- OpenCL はそのままで使いやすいですが、一度 CUDA コーディング環境をセットアップすると、C でコーディングするのとほぼ同じようになります。
  2. Community と Documentation -- どちらにも豊富なドキュメントと例がありますが、CUDA の方が優れていると思います。
  3. パフォーマンス-- CUDA はより優れた制御を可能にするため、パフォーマンスを向上させるために微調整を行うことができます。
  4. 将来-- 本当に言うのは難しいです。
于 2010-04-15T12:02:57.063 に答える
17

私の個人的な経験は次のとおりです。

  1. API: OpenCL にはもう少し複雑な API があります。ただし、ほとんどの時間はカーネル コードの記述に費やされますが、ここでは両方ともほとんど同じです。

  2. コミュニティ: CUDA には、これまで OpenCL よりもはるかに大きなコミュニティがありますが、これはおそらく均等になるでしょう。

  3. ドキュメンテーション: どちらも非常によく文書化されています。

  4. パフォーマンス: OpenCL ドライバーがまだ完全に最適化されていないという経験をしました。

  5. 将来: OpenCL はオープン スタンダードであり、ベンダーや特定のハードウェアに限定されないため、将来は OpenCL にかかっています。

この評価は 2010 年のものなので、おそらく時代遅れです。

于 2010-04-15T13:17:55.977 に答える
6

CUDA を使用する特別な理由がない限り、OpenCL を使用します。OpenCL は、GPU での実行に加えて、Intel i7 のようなマルチコアでも適切に実行されます。OpenCL を使用することで、Droid 携帯電話から、来年オンラインになる予定の世界最大のスーパーコンピューターBlue Watersの IBM Power7 計算ノードまで、はるかに幅広いハードウェアで実行できます。

于 2010-07-01T16:20:55.980 に答える