调用 cuda 运行时或驱动程序时出现 cudaErrorUnknown api

cudaErrorUnknown when calling cuda runtime or driver api

在使我的 GPU 崩溃、终止程序并重新启动我的计算机的大量模拟之后,我无法在重新启动之前调用任何正确运行的 cuda api。 nvidia-smi 运行良好。 在我的 Ubuntu 20.04 计算机中,安装了 CUDA11.6 和 nvidia-driver 510.47.03。

我的电脑出现错误的最少代码如下,

驱动程序api版本

#include "cuda.h"
int main() {
  CUresult result;
  result = cuInit(0);
  const char* pStr;
  cuGetErrorName(result, &pStr);
  if(result != CUDA_SUCCESS){
      std::cerr << pStr << std::endl;
  }
}

编译命令是,

nvcc a.cu -lcuda

我得到了 CUDA_ERROR_UNKNOWN

运行时api版本,

#include <iostream>
int main() {
  int n;
  cudaError_t error = cudaGetDeviceCount(&n);
  if(error){
      std::cerr << cudaGetErrorName(error) << std::endl;
  }
}

编译命令是,

nvcc a.cu

我得到了 cudaUnknownError

为什么我会收到这个错误?这是驱动程序的问题吗?

看起来你破坏了一些东西(驱动程序或 cuda 运行时)并且你无法调用与 cuda 相关的任何函数。

根据我的拙见,当我的内核在 Windows 机器上运行时间过长并且 Windows 显示驱动程序管理器在我 [=26] 时重置我的 GPU 时,我通常会遇到这些错误=]内核。

也许您在 linux 上遇到了一些类似的问题。

要解决此问题,您是否尝试过使用以下 bash 命令行重置 GPU?

nvidia-smi --gpu-reset

另请注意,所有 CUDA 错误都不可恢复,如果前面的命令不起作用,您可以重置计算机以解决问题(或简单地 unload/reload cuda 驱动程序)。