TensorRT的IPluginV2IOExt 和 IPluginV2Ext 的configurePlugin() 的virtual function override问题

博客讲述了在实现TensorRT自定义插件时遇到的编译警告,即YoloLayerPlugin类中重写configurePlugin函数导致的IPluginV2Ext::configurePlugin函数被隐藏。为了解决这个问题,可以通过在YoloLayerPlugin中使用using声明来明确调用基类的configurePlugin函数,从而消除编译警告。

有类似如下代码:

namespace nvinfer1
{
    class YoloLayerPlugin : public IPluginV2IOExt {
        ...
        void configurePlugin(const PluginTensorDesc* in, int nbInput, const PluginTensorDesc* out, int nbOutput) override;
        ...
    }
    ...
}

在编译时总有如下警告:

yololayer.h(85): warning: function "nvinfer1::IPluginV2Ext::configurePlugin(const nvinfer1::Dims *, int, const nvinfer1::Dims *, int, const nvinfer1::DataType *, const nvinfer1::DataType *, const __nv_bool *, const __nv_bool *, nvinfer1::PluginFormat, int)" is hidden by "nvinfer1::YoloLayerPlugin::configurePlugin" -- virtual function override intended?
yololayer.h(85): warning: function "nvinfer1::IPluginV2Ext::configurePlugin(const nvinfer1::Dims *, int, const nvinfer1::Dims *, int, const nvinfer1::DataType *, const nvinfer1::DataType *, const bool *, const bool *, nvinfer1::PluginFormat, int)" is hidden by "nvinfer1::YoloLayerPlugin::configurePlugin" -- virtual function override inten

root@suanfa:/data/LN/trans_box/transformer_classify/build# make /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) [ 14%] Building NVCC (Device) object CMakeFiles/myplugins.dir/myplugins_generated_gelu.cu.o /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) /data/LN/trans_box/transformer_classify/gelu.h(33): error: member function declared with "override" does not override a base class member /data/LN/trans_box/transformer_classify/gelu.h(33): warning: function "nvinfer1::IPluginV2::enqueue(int32_t, const void *const *, void *const *, void *, cudaStream_t)" is hidden by "nvinfer1::GELUPlugin::enqueue" -- virtual function override intended? /data/LN/trans_box/transformer_classify/gelu.h(64): warning: function "nvinfer1::IPluginV2Ext::configurePlugin(const nvinfer1::Dims *, int32_t, const nvinfer1::Dims *, int32_t, const nvinfer1::DataType *, const nvinfer1::DataType *, const __nv_bool *, const __nv_bool *, nvinfer1::PluginFormat, int32_t)" is hidden by "nvinfer1::GELUPlugin::configurePlugin" -- virtual function override intended? /data/LN/trans_box/transformer_classify/gelu.h(66): error: exception specification for virtual function "nvinfer1::GELUPlugin::detachFromContext" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::detachFromContext" /data/LN/trans_box/transformer_classify/gelu.h(64): error: exception specification for virtual function "nvinfer1::GELUPlugin::configurePlugin" is incompatible with that of overridden function "nvinfer1::IPluginV2IOExt::configurePlugin(const nvinfer1::PluginTensorDesc *, int32_t, const nvinfer1::PluginTensorDesc *, int32_t)" /data/LN/trans_box/transformer_classify/gelu.h(61): error: exception specification for virtual function "nvinfer1::GELUPlugin::attachToContext" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::attachToContext" /data/LN/trans_box/transformer_classify/gelu.h(59): error: exception specification for virtual function "nvinfer1::GELUPlugin::canBroadcastInputAcrossBatch" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::canBroadcastInputAcrossBatch" /data/LN/trans_box/transformer_classify/gelu.h(57): error: exception specification for virtual function "nvinfer1::GELUPlugin::isOutputBroadcastAcrossBatch" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::isOutputBroadcastAcrossBatch" /data/LN/trans_box/transformer_classify/gelu.h(55): error: exception specification for virtual function "nvinfer1::GELUPlugin::getOutputDataType" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::getOutputDataType" /data/LN/trans_box/transformer_classify/gelu.h(53): error: exception specification for virtual function "nvinfer1::GELUPlugin::getPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginNamespace" /data/LN/trans_box/transformer_classify/gelu.h(51): error: exception specification for virtual function "nvinfer1::GELUPlugin::setPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginV2::setPluginNamespace" /data/LN/trans_box/transformer_classify/gelu.h(49): error: exception specification for virtual function "nvinfer1::GELUPlugin::clone" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::clone" /data/LN/trans_box/transformer_classify/gelu.h(49): error: exception specification for virtual function "nvinfer1::GELUPlugin::clone" is incompatible with that of overridden function "nvinfer1::IPluginV2::clone" /data/LN/trans_box/transformer_classify/gelu.h(47): error: exception specification for virtual function "nvinfer1::GELUPlugin::destroy" is incompatible with that of overridden function "nvinfer1::IPluginV2::destroy" /data/LN/trans_box/transformer_classify/gelu.h(45): error: exception specification for virtual function "nvinfer1::GELUPlugin::getPluginVersion" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginVersion" /data/LN/trans_box/transformer_classify/gelu.h(43): error: exception specification for virtual function "nvinfer1::GELUPlugin::getPluginType" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginType" /data/LN/trans_box/transformer_classify/gelu.h(39): error: exception specification for virtual function "nvinfer1::GELUPlugin::supportsFormatCombination" is incompatible with that of overridden function "nvinfer1::IPluginV2IOExt::supportsFormatCombination" /data/LN/trans_box/transformer_classify/gelu.h(37): error: exception specification for virtual function "nvinfer1::GELUPlugin::serialize" is incompatible with that of overridden function "nvinfer1::IPluginV2::serialize" /data/LN/trans_box/transformer_classify/gelu.h(35): error: exception specification for virtual function "nvinfer1::GELUPlugin::getSerializationSize" is incompatible with that of overridden function "nvinfer1::IPluginV2::getSerializationSize" /data/LN/trans_box/transformer_classify/gelu.h(31): error: exception specification for virtual function "nvinfer1::GELUPlugin::getWorkspaceSize" is incompatible with that of overridden function "nvinfer1::IPluginV2::getWorkspaceSize" /data/LN/trans_box/transformer_classify/gelu.h(29): error: exception specification for virtual function "nvinfer1::GELUPlugin::terminate" is incompatible with that of overridden function "nvinfer1::IPluginV2::terminate" /data/LN/trans_box/transformer_classify/gelu.h(27): error: exception specification for virtual function "nvinfer1::GELUPlugin::initialize" is incompatible with that of overridden function "nvinfer1::IPluginV2::initialize" /data/LN/trans_box/transformer_classify/gelu.h(25): error: exception specification for virtual function "nvinfer1::GELUPlugin::getOutputDimensions" is incompatible with that of overridden function "nvinfer1::IPluginV2::getOutputDimensions" /data/LN/trans_box/transformer_classify/gelu.h(20): error: exception specification for virtual function "nvinfer1::GELUPlugin::getNbOutputs" is incompatible with that of overridden function "nvinfer1::IPluginV2::getNbOutputs" /data/LN/trans_box/transformer_classify/gelu.h(97): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::getPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginNamespace" /data/LN/trans_box/transformer_classify/gelu.h(92): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::setPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginCreator::setPluginNamespace" /data/LN/trans_box/transformer_classify/gelu.h(90): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::deserializePlugin" is incompatible with that of overridden function "nvinfer1::IPluginCreator::deserializePlugin" /data/LN/trans_box/transformer_classify/gelu.h(88): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::createPlugin" is incompatible with that of overridden function "nvinfer1::IPluginCreator::createPlugin" /data/LN/trans_box/transformer_classify/gelu.h(86): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::getFieldNames" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getFieldNames" /data/LN/trans_box/transformer_classify/gelu.h(84): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::getPluginVersion" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginVersion" /data/LN/trans_box/transformer_classify/gelu.h(82): error: exception specification for virtual function "nvinfer1::GELUPluginCreator::getPluginName" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginName" /data/LN/trans_box/transformer_classify/gelu.cu(112): error: object of abstract class type "nvinfer1::GELUPlugin" is not allowed: pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider /data/LN/trans_box/transformer_classify/gelu.cu(188): error: object of abstract class type "nvinfer1::GELUPlugin" is not allowed: pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider /data/LN/trans_box/transformer_classify/gelu.cu(197): error: object of abstract class type "nvinfer1::GELUPlugin" is not allowed: pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider /data/LN/trans_box/transformer_classify/gelu.cu(11): warning: variable "nvinfer1::B" was declared but never referenced /data/LN/trans_box/transformer_classify/gelu.cu(13): warning: variable "nvinfer1::C" was declared but never referenced 32 errors detected in the compilation of "/data/LN/trans_box/transformer_classify/gelu.cu". /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake) CMake Error at myplugins_generated_gelu.cu.o.Debug.cmake:280 (message): Error generating file /data/LN/trans_box/transformer_classify/build/CMakeFiles/myplugins.dir//./myplugins_generated_gelu.cu.o make[2]: *** [CMakeFiles/myplugins.dir/build.make:77: CMakeFiles/myplugins.dir/myplugins_generated_gelu.cu.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:84: CMakeFiles/myplugins.dir/all] Error 2 make: *** [Makefile:91: all] Error 2
最新发布
08-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arnold-FY-Chen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值