Halide::Buffer 在 GPU 上

Halide::Buffer on GPU

我已经有一个应用程序可以获取输入图像,将它们复制到 GPU,然后将一些 CUDA 过滤器应用于该图像。所以,当我想实现一个新的过滤器时,我只编写过滤器本身(即内核),因为 CPU-GPU 复制逻辑已经存在。

现在我想尝试使用 Halide 为 CUDA 编写图像过滤器,但我遇到了一个问题,代表输入图像的 Halide::Buffer 分配在 CPU 上,所以我不得不更改我现有的复制逻辑。

有没有什么方法可以使用 GPU 上已有的数据来初始化 Halide::Buffer,并避免额外的复制。

是的,您可以使用 Halide::Buffer(nullptr, ... sizes ...) 构造函数构造一个没有主机分配的正确大小的缓冲区,然后调用 Buffer::device_wrap_native 关联cuda 指针。