GPU内存不足后使用RAM

Nab*_*bin 2 c parallel-processing cuda gpu

在GPU内存(NVIDIA)在CUDA中完全耗尽后,有没有办法使用RAM ?

我到现在想的是:

  1. 找到一种方法来检查是否使用了所有线程块
  2. 将进程移动到RAM

但很明显,这将需要很多同步化的东西.

谢谢!

Mic*_*idl 6

如果GPU上的内存不足,您可以非常轻松地使用主机内存.您正在寻找的是分配的零拷贝内存cudaHostAlloc.以下是最佳实践指南中的示例:

float *a_h, *a_map; 
... 
cudaGetDeviceProperties(&prop, 0);
if (!prop.canMapHostMemory) 
    exit(0); 
cudaSetDeviceFlags(cudaDeviceMapHost); 
cudaHostAlloc(&a_h, nBytes, cudaHostAllocMapped); 
cudaHostGetDevicePointer(&a_map, a_h, 0); 
kernel<<<gridSize, blockSize>>>(a_map);
Run Code Online (Sandbox Code Playgroud)

但是,性能将受到PCIe bandwitdh(约6GB/s)的限制.

以下是最佳实践指南中的文档:零拷贝