【问题标题】:cudaGetDeviceCount returns error: 1 invalid argumentcudaGetDeviceCount 返回错误:1 个无效参数
【发布时间】:2021-01-30 08:42:17
【问题描述】:

运行此代码:

int device = 0;
cudaGetDevice(&device);
cudaDeviceProp props;
cudaGetDeviceProperties(&props, device);
const int kb = 1024;
const int mb = kb * kb;

cout << "Module Start:" << endl;
cout << props.name << ": " << props.major << "." << props.minor << endl;
cout << "  Global memory:   " << props.totalGlobalMem / mb << "mb" << endl;
cout << "  Shared memory:   " << props.sharedMemPerBlock / kb << "kb" << endl;
cout << "  Constant memory: " << props.totalConstMem / kb << "kb" << endl;
cout << "  Block registers: " << props.regsPerBlock << endl;
cout << "  Warp size:         " << props.warpSize << endl;
cout << "  Threads per block: " << props.maxThreadsPerBlock << endl;
cout << "  Max block dimensions: [ " << props.maxThreadsDim[0] << ", " << props.maxThreadsDim[1] << ", " << props.maxThreadsDim[2] << " ]" << endl;
cout << "  Max grid dimensions:  [ " << props.maxGridSize[0] << ", " << props.maxGridSize[1] << ", " << props.maxGridSize[2] << " ]" << endl;
cout << endl;

在朋友电脑上的 RTX 2060、x64 Windows 10 上导致以下垃圾输出和崩溃:

编辑: 我添加了一些错误检查:

int devicesCount;
cudaError_t error_id = cudaGetDeviceCount(&devicesCount);

if (error_id != cudaSuccess) {
    printf("cudaGetDeviceCount returned %d\n%s\n", (int)error_id, cudaGetErrorString(error_id));
    return 1;
} else {
    printf("Found %d GPUs\n", devicesCount);
}

这是错误: cudaGetDeviceCount 返回错误:“返回 1,无效参数”

他似乎也在使用 Windows 内部版本和驱动程序版本 465.21,它比当前的稳定版本更新。

适用于 1070、x64 Windows 10:

我尝试使用this post 来获取和设置活动设备,但这给出了相同的垃圾输出。

我正在编译为 .DLL 并通过 Python 调用函数。有可能我的 Visual Studio 项目设置搞砸了,因为它之前是在朋友的 2060 上工作的。

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" -gencode=arch=compute_80,code=\"sm_80,compute_80\" -gencode=arch=compute_86,code=\"sm_86,compute_86\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\bin\HostX64\x64" -x cu   -I./ -I../../common/inc -I./ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\/include" -I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include"     --keep-dir x64\Release  -maxrregcount=0  --machine 64 --compile -cudart shared --threads 0   -DWIN32 -D_MBCS -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Fdx64/Release/vc142.pdb /FS   /MD " -o x64/Release/gpu_compute.cu.obj "D:\Tests\MyDLL\gpu_compute.cu"

【问题讨论】:

  • 两个 API 调用都返回一个状态,您应该检查它
  • @talonmies 我添加了错误检查,请参阅编辑以了解确切的错误。这个系统似乎有驱动程序 465.21,这可能是问题所在。
  • 好的,所以他的 CUDA 安装以某种方式损坏。这里没有编程或代码相关的问题
  • @talonmies 原来是这样,回滚到当前版本后它现在正在工作,我将其发布为答案,以防其他人遇到这个奇怪的问题

标签: cuda


【解决方案1】:

该错误是由 Windows Insider 版本附带的尚未发布的驱动程序版本 465.21 引起的。回滚到当前的 461.40 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2016-10-24
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多