如果在DLL和调用的应用程序中使用GPGPU API,会发生什么情况

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

我目前正在设计一个dll(等等)库,该库将为CUDA,SYCL,OpenCL或Vulkan(尚未确定)构建卸载任务。由于不知道应用程序将执行什么操作(可能还使用相同的API),我的问题是,在DLL和应用程序中使用它时,是否可能会出现其中一个API的运行时问题。

我猜想,在SYCL / OpenCL / Vulkan中创建两个上下文不会有问题,应该相应地分隔API调用。是这样吗,仅在DLL中显式创建上下文/流(在CUDA中)就足够了吗?

是否还可以将缓冲区对象从DLL传递给应用程序,以便调用的应用程序可以在其上下文中直接使用相同的缓冲区,还是需要先复制到主机?

c++ dll opencl sycl
1个回答
0
投票

我觉得如果您继续使用相同的API,它应该可以工作。

当然,如果您混合使用许多API,则可能会更加复杂。

例如,如果您具有带有OpenCL后端的SYCL实现,则可以在某些SYCL和OpenCL用例之间共享设备上的缓冲区。如果您想在SYCL实现之间使用与CUDA和CUDA不兼容的相同数据,则可能需要使用一些中间主机存储。

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