cudaGetDeviceCount返回0
我正在运行以下代码。然而,我得到的输出是 代码38有错误 测试=0 deviceCount=0 代码38有错误 test2=0 我在Ubuntu上有一个NVIDIA GTX 690图形卡。这是否意味着驾驶员未激活cudaGetDeviceCount返回0,cuda,ubuntu-12.04,nvidia,Cuda,Ubuntu 12.04,Nvidia,我正在运行以下代码。然而,我得到的输出是 代码38有错误 测试=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, siz
#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;
}
#包括
使用名称空间std;
__设备常数浮点*数据;
模板无效允许(T*DeviceTest,大小\u T numElem)
{
cudaError_t errCode=cudaMalloc((void**)和devicetest,numElem*sizeof(t));
if(errCode!=cudaSuccess)
cout是的,您的系统设置有问题。请尝试从终端运行nvidia smi-a
,查看它报告的内容
您应该在调用cudaGetDeviceCount
(以及所有cuda API调用和内核调用)时执行此操作。此操作也将具有指导意义
对我来说,在任何其他cuda API调用(例如在
allocOnly
中调用cudamaloc
)之前执行对cudaGetDeviceCount
的调用也是有意义的。执行以下命令。。它应该可以解决问题
sudo nvidia-xconfig --enable-all-gpus
谢谢,罗伯特,我弄错了jumioadmin@cudaGPU:~/cuda convnet$nvidia smi-a nvidia:无法打开设备文件/dev/nvidiactl(没有这样的文件或目录)Nvidia SMI失败了,因为它无法与英伟达驱动程序通信。请确保最新的NVIDIA驱动程序已安装和运行。我有Nvidia网站的.Run文件。我还需要做什么才能使它每次运行?我不确定你在问什么。你可能需要通过运行一些类似于
cudaGetDeviceCount
返回的错误将不具有“指导性”。该调用被定义为始终返回cudaSuccess
:请参阅@ChrisKitching您链接的手册非常旧,由CMU托管,而不是由NVIDIA托管。当前的NVIDIA手册页为,并且它给出了至少两种“已定义”的情况返回代码可能不同于cudaSuccess
:1。请注意,此函数还可能返回以前异步启动时的错误代码。2.如果无法加载驱动程序以确定是否存在任何此类设备,则cudaGetDeviceCount()
将返回cudaErrorInsufficientDriver
。我不知道这是否有帮助,但如果您在最近的笔记本电脑上运行ubuntu,您可能需要Bumblebee,因为Nvidia Optimus,以便安装驱动程序。