cudaMallocHost总是返回内存不足错误

时间:2014-08-23 01:39:55

标签: cuda

由于“内存不足”,我甚至无法仅使用cudaMallocHost()分配4个字节的内存。错误。我在代码的第一个代码中尝试了cudaSetDevice(0)cudaDeviceSynchronize()cudaThreadSynchronize()cudaFree(0)进行初始化,但它们都无法正常工作。

我认为这个链接:cudaMalloc always gives out of memory - 有我想要的答案,但我无法理解。我该如何解决这个问题?

这是我的完整代码。

/* test.cu */
#include <cuda.h>
#include <cuda_runtime.h>
#include <stdio.h>
#include <assert.h>

inline cudaError_t checkCuda(cudaError_t result)
{
    if (result != cudaSuccess) {
        fprintf(stderr, "CUDA Runtime Error: %s\n", cudaGetErrorString(result));
        assert(result == cudaSuccess);
    }
    return result;
}

int main()
{
    cudaSetDevice(0);
    cudaDeviceSynchronize();
    cudaThreadSynchronize();
    cudaFree(0);

    int *test_ptr;
    checkCuda( cudaMallocHost((void **)&test_ptr, sizeof(int)) );
    cudaFreeHost(test_ptr);
    printf("Test Success.\n");
    return 0;
}

我用这条指令编译:

nvcc test.cu -o test

当我执行此操作时:

me@me:~$ ./test
CUDA Runtime Error: out of memory
test: test.cu:10: cudaError_t checkCuda(cudaError_t): Assertion `result == cudaSuccess' failed.
Aborted

我的cuda版本为5.0,如果您需要,我会发布更具体的设备信息。

1 个答案:

答案 0 :(得分:2)

我刚刚重启系统,错误发生了变化:

me@me:~$ nvidia-smi -q
NVIDIA: could not open the device file /dev/nvidiactl (No such file or directory).
NVIDIA-SMI has failed because it couldn't communicate with NVIDIA driver. Make sure that latest NVIDIA driver is installed and running.

对不起我的无意识,我将完成这个帖子,因为它成了另一个问题。谢谢你的回复。