В настоящее время я разрабатываю библиотеку dll (и так далее), которая будет создавать задачи разгрузки для CUDA, SYCL, OpenCL или Vulkan (еще не решено). Поскольку неизвестно, что будет делать приложение (может также использовать одни и те же API), мой вопрос заключается в том, могут ли возникнуть проблемы во время выполнения для одного из API при использовании его в DLL и в приложении.
Я предполагаю, что создание двух контекстов в SYCL/OpenCL/Vulkan не повредит и должно соответствующим образом разделить вызовы API. Правильно ли это и достаточно ли просто явно создать контекст/поток (в CUDA) в DLL?
Можно ли дополнительно передать объект буфера из DLL в приложение, чтобы вызывающее приложение могло напрямую использовать тот же буфер в своем контексте, или необходимо сначала скопировать его на хост?