1. ホーム
  2. cuda

GPUプログラミング、CUDAかOpenCLか?[クローズド]

2023-10-20 03:20:26

質問

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

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

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

何かお手伝いやご提案はありますか?

どのように解決するのですか?

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

  2. Linuxでは、CUDAはGCC 4.6または4.7を使用するなど、奇妙な要件を備えています。異なるバージョンの GCC を使用した場合、プログラムをコンパイルすることができなくなります。OpenCLを使う場合は、OpenCLの共通ライブラリをリンクすればよいので、どのコンパイラでも使うことができます。つまり、OpenCLの方がセットアップや使用、コンパイルが簡単なのです。一旦OpenCLプログラムをコンパイルすれば、それが他のブランドのOpenCL SDKを使ってコンパイルされたとしても、(そうするようにコード化されている限り)どんなハードウェアでも実行することができます。

Nvidia、AMD、および Intel ハードウェア、GPU、CPU、およびアクセラレータ上で機能する OpenCL プログラムを書くことができます。さらに、Altera は FPGA 上での OpenCL のサポートに取り組んでいます! CUDAを使用する場合、Nvidia GPUのみを使用し、他のプラットフォーム用にOpenCLや他の言語でコードを再度書き直す必要があります。CUDAを使用することの重大な制限であり、長い目で見れば重大な時間の浪費の原因です。

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

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