今天我偶然发现了 stackoverflow 中的帖子(另见here):
我们正在开发opencl4py更高级别的绑定。这个项目使用CFFI,所以它适用于Pypy。
我们遇到的pyopencl的主要问题是'import pyopencl'执行OpenCL初始化并在NVIDIA驱动程序的情况下获取整个虚拟内存,防止正确分叉并有效禁用多处理(是的,我们声称使用pyopencl禁用多处理至少使用NVIDIA)。 opencl4py使用惰性OpenCL初始化,解决了这个“导入地狱”。
后来,它获得了一些很好的功能,如超级简单的二进制程序缓存等。不幸的是,文档有点简短。了解其工作原理的最佳方法是进行测试。
由于还有pyOpenCL,我想知道这两个包之间的区别是什么。有谁知道我在哪里可以找到关于这两个包的专业人士和骗子的概述?
编辑要包含benshope的评论,我也会感兴趣:“禁用[s]多处理”是什么意思?比如,它不能同时在多个设备上运行内核?
答案 0 :(得分:3)
据我所知,没有这样的概述。我将尝试列出一些关键点:
"禁用[s]多处理"意思?比如,它不能同时在几个设备上运行内核吗?
当然,它可以,我试图说导入pyopencl后,os.fork()或multiprocessing.Process()导致NVIDIA OpenCL用户空间库内的崩溃。在导入过程中做工作总是一个坏主意。