如何解决../rtSafe/safeRuntime.cpp (25) - Cuda Error in allocate: 2 (out of memory)

在onnx生成engine的代码执行过程中,用8G显存的GPU跑程序一启动就报错:../rtSafe/safeRuntime.cpp (25) - Cuda Error in allocate: 2 (out of memory),报这个错倒不一定是因为模型本身太大了,而可能是workspace size值设置得太大了,把代码中

config->setMaxWorkspaceSize(size_t(1) << 40);

改成

config->setMaxWorkspaceSize(size_t(1) << 30);

然后执行程序就不报错了。

但如果是设置了FP16量化模式

 config->setFlag(nvinfer1::BuilderFlag::kFP16);

所需的workspace size变大,得需要把上面设置的值试着加大,当然此时GPU显存小了可能跑不了

反过来,如果不是程序一运行就报错,而是生成egine程序运行了一段时间后报类似下面这样的错误:

[localCheckMacros.cpp::getErrorStr::70] Error Code 2: OutOfMemory (no further information)

如果观察到报错前GPU显存和主板内存都有空闲并不存在耗尽的话,那肯定是workspace size设置小了,可能需要把:

config->setMaxWorkspaceSize(size_t(1) << 30);

改成

config->setMaxWorkspaceSize(size_t(1) << 40);

然后engine文件能顺利生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值