【问题标题】:Halide::Buffer on GPU卤化物::GPU上的缓冲区
【发布时间】:2018-06-12 16:50:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ gpu halide


    【解决方案1】:

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

    【讨论】:

    • 关于如何从纯 CUDA 设备指针 获取 device_wrap_native 函数的 uint64_t 句柄 参数的任何提示float* dev_a.
    • 用 (uintptr_t) cast 解决了这个问题。
    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多