我目前正在设计一个 dll(等等)库,它将为 CUDA、SYCL、OpenCL 或 Vulkan(尚未决定)构建卸载任务。由于不知道应用程序将做什么(也可能使用相同的 API),我的问题是,在 DLL 和应用程序中使用其中一个 API 时是否会出现运行时问题。
我猜想,在 SYCL/OpenCL/Vulkan 中创建两个上下文不会受到伤害,并且应该相应地分离 API 调用。这是对的吗?仅仅在 DLL 中显式地创建一个上下文/流(在 CUDA 中)就足够了吗?
是否还可以将 DLL 中的缓冲区对象传递给应用程序,以便调用应用程序可以直接在其上下文中使用相同的缓冲区,还是需要先复制到主机?