
跑cuda 程序遇到下面错误:
RuntimeError: CUDA out of memory. Tried to allocate 588.00 MiB (GPU 011.00 GiB total capacity8.97 GiB already allocated190.44 MiB free9.00 GiB reserved in total by PyTorch)
运行程序之前,使用nvidia-smi 查看显存有没有被占用,如果有被占用5M以上,可能是显存没有被释放。通过如下命令来释放显存。
linux上使用命令行,云主机可以重启电脑
fuser -k /dev/nvidia* 或者 kill $(lsof -t /dev/nvidia*)
2. 减小batch size。
3. 更换更大显存的云主机。
唉,是自己粗心大意,忘了给main函数入口了,在主机端代码中加上函数声明和主函数就行了://函数声明
void runTest(int argc, char** argv)
//主函数
int main(int argc, char** argv)
{
runTest(argc,argv)
CUT_EXIT(argc,argv) //退出CUDA
}
cuda中有cudaError_t这个类别,可以记录cuda错误。所有的cuda库函数,几乎都返回一个cudaError_t。《GPU高性能编程》中使用HANDLE_ERROR宏函数,处理每个函数返回的cudaerror
static void HandleError( cudaError_t err,const char *file,int line ) {
if (err != cudaSuccess) {
printf( "%s in %s at line %d\n", cudaGetErrorString( err ), file, line )
exit( EXIT_FAILURE )
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)