You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
3.9 KiB
C

/*
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* 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 TRT_SAMPLE_ENTRYPOINTS_H
#define TRT_SAMPLE_ENTRYPOINTS_H
//! \file sampleEntrypoints.h
//!
//! Declares and conditionally defines entrypoints needed to create base TensorRT objects, depending
//! on whether the given sample uses TRT at link time or dynamically. Since common code is built once
//! and shared across all samples (both link-time and dynamic TRT), it does not define these entrypoints,
//! so each sample must define them individually.
//!
//! Samples that use TRT at link time can define DEFINE_TRT_ENTRYPOINTS before including this header to
//! pick up the definitions here.
#include "NvCaffeParser.h"
#include "NvInfer.h"
#include "NvOnnxParser.h"
#include "NvUffParser.h"
#include "logger.h"
extern nvinfer1::IBuilder* createBuilder();
extern nvinfer1::IRuntime* createRuntime();
extern nvinfer1::IRefitter* createRefitter(nvinfer1::ICudaEngine& engine);
extern nvonnxparser::IParser* createONNXParser(nvinfer1::INetworkDefinition& network);
extern nvcaffeparser1::ICaffeParser* sampleCreateCaffeParser();
extern void shutdownCaffeParser();
extern nvuffparser::IUffParser* sampleCreateUffParser();
extern void shutdownUffParser();
#if !defined(DEFINE_TRT_ENTRYPOINTS)
#define DEFINE_TRT_ENTRYPOINTS 0
#endif
// Allow opting out of individual entrypoints that are unused by the sample
#if !defined(DEFINE_TRT_BUILDER_ENTRYPOINT)
#define DEFINE_TRT_BUILDER_ENTRYPOINT 1
#endif
#if !defined(DEFINE_TRT_RUNTIME_ENTRYPOINT)
#define DEFINE_TRT_RUNTIME_ENTRYPOINT 1
#endif
#if !defined(DEFINE_TRT_REFITTER_ENTRYPOINT)
#define DEFINE_TRT_REFITTER_ENTRYPOINT 1
#endif
#if !defined(DEFINE_TRT_ONNX_PARSER_ENTRYPOINT)
#define DEFINE_TRT_ONNX_PARSER_ENTRYPOINT 1
#endif
#if !defined(DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT)
#define DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT 1
#endif
#if DEFINE_TRT_ENTRYPOINTS
nvinfer1::IBuilder* createBuilder()
{
#if DEFINE_TRT_BUILDER_ENTRYPOINT
return nvinfer1::createInferBuilder(sample::gLogger.getTRTLogger());
#else
return {};
#endif
}
nvinfer1::IRuntime* createRuntime()
{
#if DEFINE_TRT_RUNTIME_ENTRYPOINT
return nvinfer1::createInferRuntime(sample::gLogger.getTRTLogger());
#else
return {};
#endif
}
nvinfer1::IRefitter* createRefitter(nvinfer1::ICudaEngine& engine)
{
#if DEFINE_TRT_REFITTER_ENTRYPOINT
return nvinfer1::createInferRefitter(engine, sample::gLogger.getTRTLogger());
#else
return {};
#endif
}
nvonnxparser::IParser* createONNXParser(nvinfer1::INetworkDefinition& network)
{
#if DEFINE_TRT_ONNX_PARSER_ENTRYPOINT
return nvonnxparser::createParser(network, sample::gLogger.getTRTLogger());
#else
return {};
#endif
}
nvcaffeparser1::ICaffeParser* sampleCreateCaffeParser()
{
#if DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT
return nvcaffeparser1::createCaffeParser();
#else
return {};
#endif
}
void shutdownCaffeParser()
{
#if DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT
nvcaffeparser1::shutdownProtobufLibrary();
#endif
}
nvuffparser::IUffParser* sampleCreateUffParser()
{
#if DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT
return nvuffparser::createUffParser();
#else
return {};
#endif
}
void shutdownUffParser()
{
#if DEFINE_TRT_LEGACY_PARSER_ENTRYPOINT
nvuffparser::shutdownProtobufLibrary();
#endif
}
#endif // DEFINE_TRT_ENTRYPOINTS
#endif // TRT_SAMPLE_ENTRYPOINTS_H