由于“内存不足”,我甚至无法仅使用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,如果您需要,我会发布更具体的设备信息。
答案 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.
对不起我的无意识,我将完成这个帖子,因为它成了另一个问题。谢谢你的回复。