在 CUDA 架构编程过程中,我遇到了一个问题:设备资源太有限。换句话说,堆栈和堆太小。
在研究它时,我发现了一个功能 cudaDeviceSetLimit(cudaLimitStackSize, limit_stack)
这扩大了堆栈大小,以及堆的类似大小。虽然,它们的尺寸仍然太有限了。
我想知道如何在设备上存储更多信息?
提供堆栈和堆是为了方便。但是,如果您的 GPU 足够新,您可以在设备上使用 cudaMalloc 分配内存。在这种情况下,限制是 GPU 板载内存。
如果你想要更多,你需要一个自定义内存分配来管理大量的系统内存,并与GPU共享(参见cudaHostRegister)。然后,限制将是您的系统内存。