Halide :: GPU上的缓冲区

问题描述 投票:0回答:1

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

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

有没有办法用GPU上已有的数据初始化Halide :: Buffer,并避免额外的复制。

c++ gpu halide
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.