我编写了一些代码并将其放入它自己的库中,该库使用 CUDA 在 GPU 上进行一些处理。
我正在使用 Qt 构建 GUI 前端,作为加载 GUI 的一部分,我调用
CUresult res;
CUdevice dev;
CUcontext ctx;
cuInit(0);
cuDeviceGet(dev,0);
cuCtxCreate(ctx, 0, dev);
继续初始化 GPU,以便应用程序在调用支持 CUDA 的库时尽可能做出响应。
问题是,我现在开始尝试从不同的线程调用支持 CUDA 的库。
我需要付出某种努力才能做到这一点吗?另一个线程是唯一调用任何 cuda 函数的线程(调用 cuInit() 的主线程除外),但我的代码在 cuda 库中的 cudaFree() 调用上崩溃。
Thanks
上下文与创建它们的线程相关联。因此,您的两个选择是要么让 GPU“工作线程”建立上下文,要么使用驱动程序 API 上下文迁移调用(cuCtx流行音乐当前 http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/html/group__CUDA__CTX_g2fac188026a062d92e91a8687d0a7902.html and cuCtx推流 http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/html/group__CUDA__CTX_gb02d4c850eb16f861fe5a29682cc90ba.html#gb02d4c850eb16f861fe5a29682cc90ba) 将上下文从一个线程移动到另一个线程。请注意,上下文迁移不是免费的,因此如果您要进行大量迁移,您会注意到 GPU 延迟增加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)