【发布时间】:2021-09-11 15:38:33
【问题描述】:
有时我发现自己在编写 OpenCl 内核代码(使用 pyopencl),即使对于涉及中等计算复杂度的任务也是如此,因为它比一系列 numpy 操作更容易开发(尤其是在不存在适当的 numpy 函数的情况下)。
但是,在这些情况下,主机和设备之间的传输开销/延迟可能会超过计算所花费的时间。
我正在考虑创建一些 Python 工具,它会自动将 OpenCl 代码转换为例如Cython 代码(或类似代码),在为 CPU 编译后,可以直接在 numpy 数组的底层内存上工作,而无需将数据复制到设备。我知道 CPU 能够使用适当的驱动程序执行 OpenCl 内核。但是,由于to_device 操作,这仍然存在额外延迟的缺点。多核 CPU 还可以利用 OpenCL 编程模型进行并行执行。此外,这种方法无需特殊的 OpenCl 驱动程序,只需要一些用于 C 代码编译的构建工具。
这是一个合理的想法吗?我不想重新发明轮子。非常感谢任何可以实现我的目标的现有框架/工具的提示。
【问题讨论】:
标签: numpy opencl cython pyopencl