我是OpenCL的新手,請告訴我主機CPU只能用於爲設備分配內存,或者我們可以使用它作爲openCL設備。 (因爲分配完成後,主機CPU將空閒)。OpenCL-浪費主機計算能力
回答
您可以使用cpu作爲計算設備。 Opencl甚至允許多核/處理器系統將內核分割成獨立的計算單元。我喜歡使用此功能將我係統上的cpus劃分爲基於NUMA節點的組。有可能將cpu劃分爲全部共享相同級別的高速緩存(L1,L2,L3或L4)的計算設備。
您需要一個支持它的平臺,比如AMD的SDK。我知道可以在同一臺機器上安裝Nvidia和AMD平臺,但我自己從來沒有這樣做過。
此外,opencl事件/回調系統允許您在gpu內核執行時像往常一樣使用您的cpu。這樣,您可以在等待gpu內核完成時使用主機上的openmp或任何其他代碼。
我已初始化並使用CPU和GPU計算上下文同時運行,但從未在生產場景中播放。我預計這兩種計算設備的非常不同的需求和速度將使得在兩者之間進行復雜的計算變得很困難。 – Ani 2012-02-16 15:25:47
這將始終與問題有關。我閱讀了一個BLAS實現,其中CPU處理矩陣的奇怪邊形,而GPU則處理好NxM內部矩陣。本書*有關於如何使用cpu和gpu來計算不均勻大小的粒子碰撞的完整章節。 * HTTP://developer.amd.com/zones/OpenCLZone/universities/OpenCLTextBook/Pages/default.aspx – mfa 2012-02-16 18:25:02
沒有理由CPU必須閒置,但它需要一個單獨的工作。一旦你提交了OpenCL的工作,你可以:
- 繼續其他事情,比如準備下一組工作,或者對完全不同的東西進行計算。
- 將CPU設置爲另一臺計算設備,然後向其提交一項工作。
就我個人而言,我更傾向於發現自己需要第一種情況,因爲它很罕見我發現自己有兩個獨立的任務,並且可以藉助OpenCL方式。訣竅在於保持事物平衡,因此您不需要等很長時間才能完成GPU任務,或者在CPU開始其他工作時讓GPU閒置。
這是OpenGL程序員不得不征服的問題。避免CPU或GPU綁定,並在兩者之間實現最佳性能平衡。
- 1. .NET性能計數器監視計算機的計算能力
- 2. 正在寫foo(const float&)浪費精力?
- 3. 在Java中計算能力
- 4. 計算能力爲-1
- 5. 費率計費計算
- 6. 計算能力集算法分析
- 7. OpenCL的原子能無能爲力
- 8. OpenCL主機同步要求
- 9. PHP的帶寬浪費算法
- 10. 流浪漢 - 關閉主機
- 11. 計算出,如果從功能,無需主力後衛
- 12. 重力計算
- 13. 使用openCL可以將計算機的處理能力分享給Android設備嗎?
- 14. C++機票費計算項目
- 15. OpenCL計算單元信息
- 16. 運費計算
- 17. Java GUI設計 - 「浪費」的繼承?
- 18. Azure計算能力:超大虛擬機緩慢
- 19. 分析能力(ACAP)計算在COCOMO
- 20. java計算插入數字的能力
- 21. 計算能力的速度(在python中)
- 22. 增加Java的計算能力
- 23. MATLAB的gpuArray;計算能力不足
- 24. Excel的計算能力水平
- 25. CUDA計算能力向後兼容性
- 26. CUDA計算能力有什麼區別?
- 27. CUDA 5.0:CUBIN和CUBLAS_device,計算能力3.5
- 28. 電力/能源法案計算器:Java
- 29. 卡名稱的CUDA計算能力
- 30. 計算對視力
只需使用Google搜索'OpenCL CPU'即可獲得答案。 – James 2012-02-16 16:09:07