C++ 可以使用Cuda设备指针代替cl::Buffer?

C++ 可以使用Cuda设备指针代替cl::Buffer?,c++,cuda,opencl,C++,Cuda,Opencl,如果我有Cuda代码中的设备ptr,我可以在cl::内核中使用它吗?我可以将cl::缓冲区传递给Cuda内核吗?(例如,假设您有要导入到opencl项目中的遗留Cuda代码?简单回答,否 它们是完全不同的库,使用一个指向另一个的指针很可能会使你的应用程序崩溃。您可以尝试铸造它,但其行为完全未知。这是我的想法,但您是否有不可能的参考资料?@MadScienceDreams:NVIDIA GPU中的每个上下文(无论是DirectX、OpenGL、OpenCL、OpenGL)都有自己的虚拟地址空间,由

如果我有Cuda代码中的设备ptr,我可以在cl::内核中使用它吗?我可以将cl::缓冲区传递给Cuda内核吗?(例如,假设您有要导入到opencl项目中的遗留Cuda代码?

简单回答,否


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

这是我的想法,但您是否有不可能的参考资料?@MadScienceDreams:NVIDIA GPU中的每个上下文(无论是DirectX、OpenGL、OpenCL、OpenGL)都有自己的虚拟地址空间,由主机驱动程序管理。指针和缓冲区是不可移植的,除非存在允许资源映射的显式互操作API。在OpenCL和CUDA之间没有互操作的方法——无论是运行时还是编译器,一切都是不同的。甚至PTX汇编代码也不可移植(OpenCL和CUDA有不同的特殊寄存器)。我同意答案“不”。但是,如果你正在寻找一种在OpenCL和CUDA之间进行交互的方法,你可以尝试在中间使用OpenGL。OpenCL和CUDA都可以基于OpenGL对象(如纹理)创建对象(如图像)。您可能能够以双重互操作的方式访问OpenCL/CUDA互操作。祝你好运