我正在运行以下代码。但是,我得到了输出 代码38出错 test = 0 deviceCount = 0 代码38出错 test2 = 0 我在Ubuntu上有一块NVIDIA GTX 690显卡。这是否意味着驱动程序未激活?
#include <iostream>
using namespace std;
__device__ __constant__ float* data;
template<class T> void allocOnly(T* deviceDest, size_t numElem)
{
cudaError_t errCode = cudaMalloc((void**)&deviceDest, numElem*sizeof(T));
if(errCode != cudaSuccess)
cout << "Got error with code " << errCode << endl;
}
int main()
{
float* test(0);
allocOnly<float>(test,10);
cout << "test = " << test << endl;
int deviceCount = 0;
cudaGetDeviceCount(&deviceCount);
cout << "deviceCount= " << deviceCount << endl;
float* test2(0);
cudaError_t errCode = cudaMalloc((void**)&test2, 10*sizeof(float));
if(errCode != cudaSuccess)
cout << "Got error with code " << errCode << endl;
cout << "test2 = " << test2 << endl;
return 0;
}
答案 0 :(得分:1)
是的,您的系统设置存在问题。尝试从终端运行nvidia-smi -a
并查看其报告内容。
您应该在调用cudaGetDeviceCount
(以及所有cuda API调用和内核调用)时执行proper cuda error checking。 error returned from that API call也具有指导意义。
在任何其他cuda API调用(例如cudaGetDeviceCount
中对cudaMalloc
的调用之前,对allocOnly
进行调用也是有意义的。 )。
答案 1 :(得分:0)
执行以下命令..它应该解决问题..
sudo nvidia-xconfig --enable-all-gpus