我正在尋找Python包裝與OpenCL和Pure C OpenCL之間的性能度量。性能測量可以隨時間,內存等而變化。 - 是否有任何基準測試可用? - 對時間性能差異的期望是什麼? - 什麼樣的任務(當然平行)應該有所作爲?Pure C OpenCL與Python OpenCL性能
回答
PyOpenCL很可能是您的最佳選擇。我會選擇僅在非常特定的情況下使用C(對主機的速度/低延遲的超級關鍵需求)。對於大多數休閒並行程序來說,主機方有很大的餘量,因爲所有的實際工作都是在設備上完成的。
您可以考慮PyOpenCL和OpenCL在設備上具有相同的性能。
也許使用C,如果你是,比如......設計一輛自動駕駛汽車,並且每毫秒/放大器都很重要。但即使在這種情況下,Python有可能被有效利用。
找出您的特定程序是否放慢速度的最佳方法是計時您的代碼。對於PyOpenCL這意味着:
import time
和
cl.command_queue_properties.PROFILING_ENABLE
很多聰明的企業和個人選擇Python中第一個代碼,因爲他們可以很快構建一個靈活,工作原型。如果他們最終需要更多主機性能,則將Python移植到C是相對容易的。
希望有所幫助!
OpenCL使用預編譯的程序,稍後發送到設備執行。他們是所謂的「內核」。這些內核被部署爲在終端設備上執行。這意味着必須測量的主要成本是OpenCL實施API I/O。因此,您不能依賴內存/ CPU測量,因爲真正的OpenCL部件將使用它們。 AFAIK,沒有可用的基準測試,但如果你需要的話,並不難,但總體來說,矩陣乘法就是你好世界的例子。
OpenCL並不是那種類型,它在每個CPU週期都使用I/O。使用領域 - 真正的大數據處理,它使用一個大的輸入,大量的處理操作和一個輸出(不管小或大)。沒有人說OpenCL不能用於許多I/O和最小的計算變化,但實現API開銷不值得。
期望值必須是I/O與整體應用程序性能近似相同。
這裏有一個基準:https://github.com/bennylp/saxpy-benchmark,比較PyOpenCL對OpenCL的以及其他框架/方法,如CUDA,純C++,numpy的,R,八度,甚至TensorFlow(聲明:我的作者)
根據基準測試結果,OpenCL和PyOpenCL之間的性能差異變化太大。 PyOpenCL GPU目標比OpenCL慢7倍,但對於CPU目標,PyOpenCL實際上比OpenCL快2倍以上!
- 1. OpenCL - 性能
- 2. 與OPENCL/C
- 3. OpenCL性能優化
- 4. OpenCL vs OpenMP性能
- 5. CUDA vs OpenCL性能對比
- 6. OpenCL的,半浮VS性能
- 7. 與OpenCL的
- 8. OpenCL for Python
- 9. 是否有OpenCL 2.2功能,這些功能在OpenCL C++中可用,但在OpenCL C中不可用?
- 10. OpenCL clEnqueueTasks並行性
- 11. c + + opencl返回CL_OUT_OF_RESOURCES
- 12. C++容器和openCL
- 13. Cloo OpenCL c#問題
- 14. OpenCL C++ cl_float4操作
- 15. OpenCL - 大字符串和內存性能?
- 16. python c擴展/ opencl守護進程
- 17. OpenCL中LDS內存的性能問題
- 18. glBindTexture()中的OpenGL/OpenCL Interop性能glBegin()
- 19. Python和OpenCL的問題
- 20. OpenCL get_global_id
- 21. BIGINT在OpenCL和Python的
- 22. OpenCL設備唯一性
- 23. OpenCL的兼容性差異
- 24. OpenCL Benchmark
- 25. OpenCL中
- 26. OpenCL - atomic_cmpxchg
- 27. OPENCL不能使用clGetPlatformIDs
- 28. CLION for OpenCL中的Visual C++
- 29. OpenCL - C - 矩陣的鏡像
- 30. 的OpenCL了C++綁定
確實有幫助,而且合理。但是,真正的測量是必須支持這一假設的。如果是這樣,結論是,在價值成本方面python是GPGPU編程的平臺 – chook