2013-08-02 17 views
58

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

  1. 私はCUDAのために行く場合 - Ubuntuでインストールするには、深刻な問題になる可能性がありながら、Ubuntuのか、Windowsは明らかにCUDAは窓に適しています。私はUbuntu 11.10Ubuntu 12.04にCUDA 5をインストールしたと主張するブログポストを見ました。しかし、私はそれらを働かせることができませんでした。また、standard CUDA textbooksは、Windowsドメインで作業することを好み、Unix/Ubuntuのインストールや作業に関する懸念がある程度無くなっています。

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

ご意見やご提案はありますか?

+2

あなたの最初の質問に関して、私はWindowsが現在LinuxではなくCUDAの方がサポートされていると感じています。私は過去にLinuxでCUDAを広く使用してきましたが、インストールは常にちょっと難しかったです。あなたの2番目の質問に関して、私はあなたが単純なgoogleの検索で、例えば[CUDAとOpenCL:どちらを使うべきですか?](http://wiki.tiker.net/CudaVsOpenCL)と[CUDAとOpenCLの違い2010](http://streamcomputing.eu/blog/2010-04-22/difference-between-cuda-and-opencl/)。 – JackOLantern

+2

LinuxでCUDA 5.5 Production Releaseを簡単にインストールできます(https://developer.nvidia.com/content/cudacast-episode-5-install-cuda-55-linux-package-managerを参照)。さらに、Linux上でCUDA 5.5でシングルGPUを使用してデバッグCUDAコードをデバッグすることも可能です(計算能力3.5以上)。あなたのケースではありませんが、それはfreshmeat_linux/Linux]ユーザのための良い新しい:)私はWindowsのデバッグ要件を認識していない。 – pQB

答えて

78
  1. あなたはOpenCLのを使用している場合は、ディスプレイドライバを有するOpenCLのプログラムを実行するのに十分ですので、あなたが簡単にWindowsとLinux上で両方を使用することができますし、プログラミングのためにあなたは、単に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の間に古い参照をいくつか掲載していますが、古いものです。それらの文書が出ていたら、AMDだけがOpenCLを正しくサポートしていました。 2013年以降、OpenCLはARM、アルテラ、インテルなどでサポートされており、業界標準となっています。

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

5

私はubuntuでcuda環境を設定することは非常に困難ではないと思う、あなたはそれを試すことができます。

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

関連する問題