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
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
|