Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么cudaMemGetInfo报告设备内存总量的变化?_C++_Cuda - Fatal编程技术网

C++ 为什么cudaMemGetInfo报告设备内存总量的变化?

C++ 为什么cudaMemGetInfo报告设备内存总量的变化?,c++,cuda,C++,Cuda,当我运行下面的代码时,我的GPU上报告的内存总量会根据CudameGetInfo发生变化。cudaMemGetInfo的文档中没有提到这种行为,它说total应该包含我的设备上可以分配的内存总量,如果不在我的系统中放置不同的GPU,这些内存总量是无法更改的,对吗?。有人能解释为什么会这样吗?当我不叫cudaMallocManaged时,它似乎不会发生 包括 无效打印统计信息 { 无尺寸,总尺寸; cudaMemGetInfo&免费和总计; std::cout事实证明,当您的CUDA驱动程序版本不

当我运行下面的代码时,我的GPU上报告的内存总量会根据CudameGetInfo发生变化。cudaMemGetInfo的文档中没有提到这种行为,它说total应该包含我的设备上可以分配的内存总量,如果不在我的系统中放置不同的GPU,这些内存总量是无法更改的,对吗?。有人能解释为什么会这样吗?当我不叫cudaMallocManaged时,它似乎不会发生

包括 无效打印统计信息 { 无尺寸,总尺寸; cudaMemGetInfo&免费和总计;
std::cout事实证明,当您的CUDA驱动程序版本不适合CUDA运行时版本时,会发生这种未定义的行为。对于遇到此问题的任何其他人,我建议检查cudaGetLastError的输出,这就是我发现问题的原因


我通过将我的CUDA版本降级到10.1解决了这个问题,因为这是我的驱动程序支持的最新版本。你可以使用nvidia smi工具检查你的CUDA和驱动程序版本。

我不建议使用free这个词作为变量名,但我认为这不是问题所在。使用CUDA memcheck运行代码时会发生什么?是一个问题吗报告了任何错误?@RobertCrovella未报告任何错误,错误摘要:0个错误。好的,问题似乎与所选设备有关。cudaGetDeviceCount每次都给出更改的值。好的,cuda memcheck未产生错误,但cudaGetLastError返回35,这似乎意味着cuda驱动程序版本不足以或者CUDA运行时版本,不管这意味着什么。现在尝试修复它。
free:  94383273356630
total: 20
free:  5661994326
total: 4
free:  140729276827856
total: 94383273355680