我面临一个简单的问题,我对 cudaMalloc 的所有调用都失败了,给了我一个内存不足的错误,即使它只是我分配的一个字节。
cuda 设备可用,并且还有大量可用内存(通过相应调用检查机器人)。
知道问题可能是什么吗?
我面临一个简单的问题,我对 cudaMalloc 的所有调用都失败了,给了我一个内存不足的错误,即使它只是我分配的一个字节。
cuda 设备可用,并且还有大量可用内存(通过相应调用检查机器人)。
知道问题可能是什么吗?
请尝试在代码本身的开头调用 cudaSetDevice()、cudaDeviceSynchronize() 和 cudaThreadSynchronize()。
cudaSetDevice(0) 如果只有一个设备。默认情况下,CUDA 运行时将初始化设备 0。
cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();
请回复您的观察。如果仍然失败,请指定操作系统、架构、CUDA SDK 版本、CUDA 驱动程序版本。如果可能,请提供失败的代码/代码片段。
谢谢大家的帮助。
问题不在于 cudaMalloc 本身,但它掩盖了真正的问题,这是由于 cuda 的初始化似乎失败了。
因为第一次调用 cuda 是在一个单独的线程中,所以我没有可用的 GLContext,导致失败。在初始化上下文之后,我需要确保在主线程中通过虚拟 malloc 初始化了 cuda。