/* * 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 TENSORRT_SAFE_COMMON_H #define TENSORRT_SAFE_COMMON_H #include "NvInferRuntimeCommon.h" #include #include #include #include #include #define CHECK(status) \ do { \ auto ret = (status); \ if (ret != 0) { \ std::cerr << "Cuda failure: " << ret << std::endl; \ abort(); \ } \ } while (0) namespace samplesCommon { template inline std::shared_ptr infer_object(T* obj) { if (!obj) { throw std::runtime_error("Failed to create object"); } return std::shared_ptr(obj); } inline uint32_t elementSize(nvinfer1::DataType t) { switch (t) { case nvinfer1::DataType::kINT32: case nvinfer1::DataType::kFLOAT: return 4; case nvinfer1::DataType::kHALF: return 2; case nvinfer1::DataType::kINT8: return 1; case nvinfer1::DataType::kBOOL: return 1; } return 0; } template inline A divUp(A x, B n) { return (x + n - 1) / n; } } // namespace samplesCommon #endif // TENSORRT_SAFE_COMMON_H