/* * Copyright (c) 1993-2022, NVIDIA CORPORATION. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef PARSER_ONNX_CONFIG_H #define PARSER_ONNX_CONFIG_H #include #include #include #include "NvInfer.h" #include "NvOnnxConfig.h" #include "NvOnnxParser.h" #define ONNX_DEBUG 1 /** * \class ParserOnnxConfig * \brief Configuration Manager Class Concrete Implementation * * \note: * */ using namespace std; class ParserOnnxConfig : public nvonnxparser::IOnnxConfig { protected: string mModelFilename{}; string mTextFilename{}; string mFullTextFilename{}; nvinfer1::DataType mModelDtype; nvonnxparser::IOnnxConfig::Verbosity mVerbosity; bool mPrintLayercInfo; public: ParserOnnxConfig() : mModelDtype(nvinfer1::DataType::kFLOAT), mVerbosity(static_cast(nvinfer1::ILogger::Severity::kWARNING)), mPrintLayercInfo(false) { #ifdef ONNX_DEBUG if (isDebug()) { std::cout << " ParserOnnxConfig::ctor(): " << this << "\t" << std::endl; } #endif } protected: ~ParserOnnxConfig() { #ifdef ONNX_DEBUG if (isDebug()) { std::cout << "ParserOnnxConfig::dtor(): " << this << std::endl; } #endif } public: virtual void setModelDtype(const nvinfer1::DataType modelDtype) noexcept { mModelDtype = modelDtype; } virtual nvinfer1::DataType getModelDtype() const noexcept { return mModelDtype; } virtual const char* getModelFileName() const noexcept { return mModelFilename.c_str(); } virtual void setModelFileName(const char* onnxFilename) noexcept { mModelFilename = string(onnxFilename); } virtual nvonnxparser::IOnnxConfig::Verbosity getVerbosityLevel() const noexcept { return mVerbosity; } virtual void addVerbosity() noexcept { ++mVerbosity; } virtual void reduceVerbosity() noexcept { --mVerbosity; } virtual void setVerbosityLevel(nvonnxparser::IOnnxConfig::Verbosity verbosity) noexcept { mVerbosity = verbosity; } virtual const char* getTextFileName() const noexcept { return mTextFilename.c_str(); } virtual void setTextFileName(const char* textFilename) noexcept { mTextFilename = string(textFilename); } virtual const char* getFullTextFileName() const noexcept { return mFullTextFilename.c_str(); } virtual void setFullTextFileName(const char* fullTextFilename) noexcept { mFullTextFilename = string(fullTextFilename); } virtual bool getPrintLayerInfo() const noexcept { return mPrintLayercInfo; } virtual void setPrintLayerInfo(bool src) noexcept { mPrintLayercInfo = src; } //!< get the boolean variable corresponding to the Layer Info, see //! getPrintLayerInfo() virtual bool isDebug() const noexcept { #if ONNX_DEBUG return (std::getenv("ONNX_DEBUG") ? true : false); #else return false; #endif } virtual void destroy() noexcept { delete this; } }; // class ParserOnnxConfig #endif