【问题标题】:Do cuDevicePrimaryCtxReset() and cudaDeviceReset() do the same thing?cuDevicePrimaryCtxReset() 和 cudaDeviceReset() 做同样的事情吗?
【发布时间】:2020-10-28 23:30:33
【问题描述】:

阅读CUDA Runtime API和Driver API docs,似乎这两个功能:

CUresult cuDevicePrimaryCtxReset ( CUdevice dev );
__host__ ​cudaError_t cudaDeviceReset ( void );

做同样的事情(在运行时 API 调用之前必须cudaSetDevice(dev)):

销毁所有分配并重置主上下文的所有状态。

对于第一个和

在当前进程中销毁所有分配并重置当前设备上的所有状态。

他们真的会这样做吗?或者是否存在我遗漏或未记录的细微差异?例如与线程与进程相关的东西?

【问题讨论】:

  • 我不认为他们做同样的事情。稍微摆弄一下代码here 可能会让你相信这一点。

标签: cuda compatibility cuda-driver


【解决方案1】:

它们完全不同。

检查@RobertCrovella 链接到的程序,似乎:

  • cuDevicePrimaryCtxReset() 仅销毁/重置主上下文,不涉及其他上下文。
  • cudaDeviceReset() 销毁指定设备的所有上下文,将它们从上下文堆栈中删除。

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2017-10-21
    • 2022-07-27
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多