誰もがCPUとGPUの両方に対して単一のコードベースを維持する経験はありますか? 可能であれば、いくつかの長期間の計算にGPUを使用するアプリケーションを作成したいのですが、互換性のあるGPUがターゲットマシンに存在しない場合は、通常のCPUバージョンを使用します。 CPUバージョンとGPUバージョンの両方にコンパイルされる条件付きコンパイル指令を使用してコードの一部を書くことができれば本当に役に立ちます。もちろん、CPUとGPUで異なる部分がいくつかありますが、アルゴリズムの本質を1か所にとどめたいと思います。それはすべて可能ですか?CPUとGPUの同じコードベース
4
A
答えて
1
OpenCLは、Cベースの言語です。 GPL(NVidiaおよびAMD)とCPU(IntelおよびAMD)で動作するOpenCLプラットフォームが存在します。
GPLとCPUの両方で同じOpenCLコードを実行することは可能ですが、実際にはターゲットデバイス用に最適化する必要があります。最良の性能を得るには、異なるGPUとCPUに対して異なるコードを記述する必要があります。しかし、CPU OpenCLプラットフォームは、GPUに最適化されたコードでさえ、低性能フォールバックとして機能することができます。
ターゲットデバイス(CPUまたはGPU)に応じて実行する条件付きディレクティブを作成することができれば、複数のデバイスでOpenCLコードのパフォーマンスを向上させることができます。
+0
私が知る限り、CUDAはC/C++言語の亜種を使用しています。また、ATIとNVidia GPUの両方をサポートするはずの新しいVisual Studio 11があります。ですから、私はOpenGLだけに制限されていないと思いますか?別のポイントは、私はいくつかのCPU/GPU固有のコードを書くことに同意している、私はちょうどアルゴリズムの主要なロジックの2つのバージョンを保ちたいとは思わない。 – Max
関連する問題
- 1. WPFとSilverlightの同じコードベース?
- 2. シリアルCPUとGPUコード
- 3. フルバージョンと同じコードベースのAndroid体験版
- 4. CUDAのGPU CPU
- 5. CPU/GPU間のテンソルフロー
- 6. CPUとGPU間の命令の転送
- 7. CPU上のMPI-2対GPU
- 8. OpenCL CPUデバイス対GPUデバイス
- 9. phonegapとwebに同じコードベースを使用していますか?
- 10. iPhone/iPod touchのCPU/GPUの性能
- 11. CPUの変数、GPUのトレーニング/グラジエント
- 12. GPUの同期
- 13. CPU/GPU /メモリ情報を取得する
- 14. cpu対gpu - CPUがより良い場合
- 15. 同じコードベースで複数のWebアプリケーションを管理する
- 16. スタックの幅は常にCPUレジスタのサイズと同じですか?
- 17. GPUはCPUまたはCPUからGPUへの書き込みを読み取りますか?
- 18. GPU対CPU?プログラム計算の加速のためのGPUのコア/スレッドの数?
- 19. Doxygenを使用して同じコードベースから "user"と "developer"ドキュメントを生成
- 20. CPU + GPUの合計時間を計算する方法
- 21. マルチコアCPUは、同じプロセスの複数のスレッドを同時にスケジュールしますか?
- 22. 同じコードベースで異なる署名を同時に持つapkの2つのバージョンをアップロードする
- 23. 同じActionScript 3コードベースのFlexプロジェクトで複数のカスタムビルド設定を使用することはできますか?
- 24. capistranoとgitを使用して、同じコードベースを複数のサーバに配備する
- 25. コードベースを行き来し、同じことをたくさんのメソッドに追加するベストな方法
- 26. レンダスクリプトとGPU
- 27. どこで同じコードベースを使用するマルチウェブサイトCMSを見つけることができますか
- 28. 連絡先と同じUI(ボタンと同じ場所のテーブルビュー)
- 29. Mono:同じコードベースのMac WinとLinuxで動作するxamlベースのクロムレスウィンドウを共同作成することは可能ですか?
- 30. CPUの代わりにGPUで実行する.netプログラムを開発する
オペレーティングシステムを指定していませんが、これはオペレーティングシステム固有のものと思われます。 – dandan78
CPUとGPUの両方に完全に同じコード構造を使用することはお勧めできません。両方の場合に最適ではないためです。 –
これは抽象的な意味で可能です。何らかの組織が必要ですが、確かに実行可能です。たとえば、[Thrust](http://code.google.com/p/thrust/)(これは現在CUDAにバンドルされています)をご覧ください。実際の計算にはいくつかのバックエンドがあります。 – Bart