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