错误记录2022.11.22

default argument given for parameter 2 of

上面的问题可能是在函数的声明处和函数的定义处都指定默认值,这两处都指定了默认值的话,就会导致语法错误。
解决方法:任意去掉一个默认值就可以,声明处或者定义处。

Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output.

上面的问题就是典型tensorrt中setworkspace设置的太小,没有优化好。它根据你给的大小,只会还给你一个当前条件下最优的优化效果。

在tensorrt编译阶段,每个layer都去寻找最优解,trt会在所有的解空间中搜寻最优的优化实现,不同的实现其使用的显存大小是不同的,这个workspace就是约束显存的使用量的。

有时候我们会看到出现优化策略无法进行的警告,这就是由于显存开的太小没法找到最优解。直接显示给出防止编译时出现不确定,造成使用超出预期的内存空间。

如果你不加限制有可能会造成系统中途内存挂掉。实际简单理解就是你如果不去给出一个明确的大小去限制这个,到时候有些层会尽力优化从而耗尽你的内存(显卡),你的内存就会挂掉。但是有个矛盾的地方就是你给的太小,优化不到位,就是性能会差一些。目前最新的8.4版本就不需要再给出workspace了。
config->setMaxWorkspaceSize(3.0f * (1 << 30)); // 1<<30:1024mb 1<<28:256mb

cannot allocate an object of abstract type“xx”

上面的问题可能是在类继承,基类存在纯虚函数,而派生类没有全部重载纯虚函数。
解决方法:在基类中申明的虚函数,在派生类中必须继承并实现。这样在new一个派生类时才不会报该错误。

cannot call member function ‘***’ without object

当直接引用某个类的方法,没有创建对象,因为这里面的其他函数都是static,是写在头文件中的,没有实际的object,所以必须也要定义成static。
或者新建一个对象,再使用该对象的方法。

你可能感兴趣的:(错误,c++,tensorrt)