cuDevicePrimaryCtxReset() 和 cudaDeviceReset() 做同样的事情吗?
Do cuDevicePrimaryCtxReset() and cudaDeviceReset() do the same thing?
阅读了CUDA Runtime API和Driver API文档,好像是两个函数:
CUresult cuDevicePrimaryCtxReset ( CUdevice dev );
__host__ cudaError_t cudaDeviceReset ( void );
做同样的事情(直到必须 cudaSetDevice(dev)
在运行时 API 调用之前):
Destroy all allocations and reset all state on the primary context.
第一个和
Destroy all allocations and reset all state on the current device in the current process.
他们确实也这样做吗?或者是否存在我遗漏或未记录的细微差异?例如与线程与进程相关的内容?
它们完全不同。
检查链接到@RobertCrovella 的程序,似乎是:
cuDevicePrimaryCtxReset()
仅 destroys/resets 主要上下文,不涉及其他上下文。
cudaDeviceReset()
销毁指定设备的所有上下文,将它们从上下文堆栈中删除。
阅读了CUDA Runtime API和Driver API文档,好像是两个函数:
CUresult cuDevicePrimaryCtxReset ( CUdevice dev );
__host__ cudaError_t cudaDeviceReset ( void );
做同样的事情(直到必须 cudaSetDevice(dev)
在运行时 API 调用之前):
Destroy all allocations and reset all state on the primary context.
第一个和
Destroy all allocations and reset all state on the current device in the current process.
他们确实也这样做吗?或者是否存在我遗漏或未记录的细微差异?例如与线程与进程相关的内容?
它们完全不同。
检查链接到@RobertCrovella 的程序,似乎是:
cuDevicePrimaryCtxReset()
仅 destroys/resets 主要上下文,不涉及其他上下文。cudaDeviceReset()
销毁指定设备的所有上下文,将它们从上下文堆栈中删除。