GPUプログラミング、CUDAかOpenCLか?[クローズド]
質問
私はGPUプログラミングの初心者です。私は、NVIDIA GeForce GT 640カード付きのノートパソコンを持っています。私は 2 つのジレンマに直面しており、提案は大歓迎です。
-
CUDAの場合 -- UbuntuかWindowsか。 明らかに CUDA は Windows に適していますが、Ubuntu にインストールするのは深刻な問題になりえます。CUDA 5 をインストールしたと主張するいくつかのブログポストを見たことがあります。 Ubuntu 11.10 と Ubuntu 12.04 . しかし、それらを動作させることはできていません。また 標準的なCUDAの教科書 は Windows ドメインでの作業を好み、Unix/Ubuntu のインストールと作業に関する懸念については多かれ少なかれ沈黙しています。
-
CUDA または OpenCL -- さて、これはおそらく私の最初の質問よりもトリッキーです。私はほとんどCUDA/Nvidiaを使用するGPGPUプロジェクトに遭遇しましたが、OpenCLはおそらくオープンソースの次善の選択肢であり、Ubuntuへのインストールはおそらく問題ないでしょうが、ここでいくつかの提案が最も有用であるでしょう。もし私がCUDAではなくOpenCLに行くなら、私は何らかの機能を犠牲にしているのでしょうか?
何かお手伝いやご提案はありますか?
どのように解決するのですか?
-
OpenCL を使用する場合、OpenCL プログラムを実行するにはディスプレイ ドライバーがあれば十分で、プログラミングには SDK をインストールするだけでよいので、Windows と Linux の両方で簡単に使用することができます。CUDA は、特定の GCC バージョンなどに関する要件がより多くあります。しかし、Linux にインストールするのはそれほど難しくありません。
-
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が非常に柔軟であるため、プログラムでメモリ割り当てや転送などをコーディングするためのオプションや方法に直面することです。そのため、おそらくより複雑に感じるかもしれません。
関連
-
CUDAのcudaMalloc()のパラメータを理解する方法
-
cudaMallocとcudaMallocPitchの秘密を教えます。
-
MatlabからCUDAへの呼び出しの概要(Windows, Ubuntu)
-
CUDAアトミック操作
-
cudaMemcpyとcudaMemcpyAsyncの違い
-
[解決済み] CUDAバージョンの取得方法を教えてください。
-
[解決済み] nvccとNVIDIA-smiが示す異なるCUDAのバージョン
-
[解決済み] NVIDIAとAMDの比較:GPGPUパフォーマンス
-
[解決済み] ストリーミングマルチプロセッサ、ブロックとスレッド(CUDA)
-
[解決済み] CUDAにおけるメモリ合体とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
CUDAドライバのバージョンが、CUDAランタイムのバージョンに対して不足している問題
-
CUDAアトミック操作
-
CUDA プログラミングのエラー処理
-
[解決済み】DockerコンテナからGPUを使用する?
-
[解決済み] nvccとNVIDIA-smiが示す異なるCUDAのバージョン
-
[解決済み] グローバル機能とデバイス機能の違い
-
[解決済み] JavaでGPGPU/CUDA/OpenCLを実現するための最適な方法とは?
-
[解決済み] ストリーミングマルチプロセッサ、ブロックとスレッド(CUDA)
-
[解決済み] nvidia-smi Volatile GPU-Utilization の説明?
-
[解決済み] CUDAにおけるメモリ合体とは何ですか?