我正在寻找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