我一直在研究一个 PyOpenCL 程序,它将接收一个 OpenCL 内核(代表一个图像过滤器)和一个图像,并应用所述过滤器来生成一个输出图像。问题是我需要让这个程序在任何大小的图像上运行。
我之前使用 Cloo (http://sourceforge.net/projects/cloo/) 框架使用 C# 和 OpenCL 编写了一个类似的程序,但我想让一些东西更便携(因为 Cloo 框架无法在 Linux 上正常运行)。
现在,在我的 C# 实现中,我只是将图像分成块并在每个块上运行内核。我通过在内核中将图像作为纯字节数组处理来做到这一点。但是,我现在遇到的问题是我试图在我的 PyOpenCL 实现中使用 image2d_t 数据类型,但我不确定如何将图像分成块并将它们传递给内核。
image2d_t 类是否为返回的图像添加了填充(我需要对其进行后处理),或者它可能支持某种可以为我处理这个问题的自动化方法?
非常感谢任何可以为我指明正确方向的资源!
编辑:我想我应该提到我想要这样做的原因是因为我在当前构建中遇到了内存分配异常(因为图像太大)。