阅读CUDA Runtime API和Driver API文档,似乎有两个函数:
CUresult cuDevicePrimaryCtxReset ( CUdevice dev );
__host__ cudaError_t cudaDeviceReset ( void );
做同样的事情(直到在运行时API调用之前必须cudaSetDevice(dev)
(:
销毁所有分配并重置主上下文上的所有状态。
用于第一个和
销毁当前进程中当前设备上的所有分配并重置所有状态。
他们确实也这么做吗?或者,是否存在我遗漏的或没有记录的细微差异?例如与线程和进程相关的东西?
它们完全不同
检查@RobertCrovella链接的程序,似乎是:
cuDevicePrimaryCtxReset()
仅破坏/重置主上下文,不涉及其他上下文cudaDeviceReset()
破坏指定设备的所有上下文,将它们从上下文堆栈中删除