75

私は GPU プログラミングの初心者です。NVIDIA GeForce GT 640 カードを搭載したラップトップを持っています。私は 2 つのジレンマに直面しています。提案は大歓迎です。

  1. CUDA を使用する場合 -- Ubuntu または Windows明らかに CUDA は Windows に適していますが、Ubuntu にインストールするのは深刻な問題になる可能性があります。Ubuntu 11.10およびUbuntu 12.04に CUDA 5 をインストールしたと主張するブログ投稿をいくつか見ました。しかし、私はそれらを機能させることができませんでした。また、標準の CUDA 教科書は Windows ドメインで動作することを好み、Unix/Ubuntu のインストールと動作に関して多かれ少なかれ沈黙しています。

  2. CUDA または OpenCL - これはおそらく最初の質問よりもトリッキーです。私は主に CUDA/Nvidia を使用する GPGPU プロジェクトに出くわしましたが、OpenCL はおそらくオープン ソースの次善の選択肢であり、Ubuntu へのインストールはおそらく問題にはなりませんが、ここでのいくつかの提案が最も役立ちます。CUDA ではなく OpenCL を使用すると、何か機能が犠牲になりますか?

ヘルプや提案はありますか?

4

2 に答える 2

95
  1. OpenCL を使用する場合、Windows と Linux の両方で簡単に使用できます。OpenCL プログラムを実行するにはディスプレイ ドライバーがあれば十分であり、プログラミングには SDK をインストールするだけで十分です。CUDA には、特定の GCC バージョンなどに関するより多くの要件があります。しかし、Linux へのインストールもそれほど難しくありません。

  2. Linux CUDA では、GCC 4.6 または 4.7 を使用するなど、奇妙な要件があります。別のバージョンの GCC を使用すると、プログラムをコンパイルできなくなります。OpenCL を使用する場合は、共通の OpenCL ライブラリとリンクするだけでよいため、任意のコンパイラを使用できます。そのため、OpenCL はセットアップ、使用、コンパイルが簡単です。OpenCL プログラムをコンパイルすると、別のブランドの OpenCL SDK を使用してコンパイルされた場合でも、任意のハードウェアで実行できます (そうするようにコーディングされている限り)。

Nvidia、AMD、および Intel ハードウェア、GPU、CPU、およびアクセラレータで機能する OpenCL プログラムを作成できます。さらに、アルテラは FPGA での OpenCL のサポートに取り組んでいます! CUDA を使用する場合は、Nvidia GPU のみを使用し、OpenCL または他のプラットフォーム用の他の言語でコードを書き直す必要があります。CUDA を使用する上での深刻な制限であり、長期的には深刻な時間の浪費の原因となります。

誰かが CUDA と OpenCL の間の古いリファレンスを投稿したようですが、それらは古いものです! これらのドキュメントが公開されたとき、OpenCL を適切にサポートしていたのは AMD だけでした。2013 年以降、OpenCL は ARM、Altera、Intel などによってサポートされ、業界標準になりました。

唯一の欠点は、OpenCL が非常に柔軟であるため、プログラムでメモリ割り当て、転送などをコーディングするためのオプションと方法が増えることです。したがって、おそらくより複雑に感じるかもしれません。

于 2013-10-11T11:47:55.927 に答える
10

ubuntu で cuda 環境を構築するのはさほど難しいことではないと思いますので、試してみてください。

コンピューティング アーキテクチャの学生として、OpenCL と CUDA の両方を学ぶ必要があると思います。また、CUDA はより多くのハードウェアおよびランタイム情報を公開するため、最初に cuda を学習する必要があります。GPU コードを最適化する場合、ハードウェアの認識は非常に重要です。

于 2013-08-02T14:52:53.357 に答える