【问题标题】:It is possible to use Cuda device pointer in place of a cl::Buffer?是否可以使用 Cuda 设备指针代替 cl::Buffer?
【发布时间】:2013-08-24 07:25:00
【问题描述】:

如果我有一个来自 Cuda 代码的设备 ptr,我可以在 cl::Kernel 中使用它吗?我可以将 cl::Buffer 传递给 Cuda 内核吗? (例如,假设您有想要导入到 opencl 项目中的遗留 Cuda 代码?)

【问题讨论】:

    标签: c++ cuda opencl


    【解决方案1】:

    简单的回答,不。

    它们是完全不同的库,使用一个指向另一个的指针可能会使您的应用程序崩溃。您可以尝试投射它,但行为完全未知。

    【讨论】:

    • 这有点像我想的,但是你有关于不可能的参考吗?
    • @MadScienceDreams:NVIDIA GPU 中的每个上下文(无论是 DirectX、OpenGL、OpenCL、OpenGL)都有自己的虚拟地址空间,由主机驱动程序管理。指针和缓冲区不可移植,除非有明确的互操作 API 允许资源映射。没有办法在 OpenCL 和 CUDA 之间进行互操作——一切都不同,运行时、编译器。甚至 PTX 汇编代码也不能移植(OpenCL 和 CUDA 有不同的特殊寄存器)。
    • 我同意“否”的答案。但是,如果您正在寻找一种在 OpenCL 和 CUDA 之间进行互操作的方法,您可以尝试在中间使用 OpenGL。 OpenCL 和 CUDA 都可以基于 OpenGL 对象(如纹理)创建对象(如图像)。您也许可以通过双互操作方式实现 OpenCL/CUDA 互操作。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2013-01-31
    • 2011-07-18
    • 2011-03-31
    • 2014-03-26
    • 2017-06-08
    • 2015-05-20
    相关资源
    最近更新 更多