4

我正在运行以下代码。但是,我得到的输出为 Got error with code 38 test = 0 deviceCount= 0 Got error with code 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;
}
4

2 回答 2

2

是的,您的系统设置有问题。尝试nvidia-smi -a从终端运行并查看它的报告。

您应该对调用(以及所有 cuda API 调用和内核调用)进行正确的 cuda 错误检查。从该 API 调用返回的错误cudaGetDeviceCount也具有指导意义。

在任何其他 cuda API 调用(例如对in的调用)cudaGetDeviceCount 之前执行对我的调用也是有意义的。cudaMallocallocOnly

于 2013-07-17T00:57:37.127 回答
0

执行以下命令..它应该可以解决问题..

sudo nvidia-xconfig --enable-all-gpus
于 2013-07-17T01:43:23.760 回答