/* * SPDX-FileCopyrightText: Copyright (c) 1993-2025 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_SHARED_TIMINGCACHE_H_ #define TRT_SHARED_TIMINGCACHE_H_ #include "NvInfer.h" #include #include #include #include namespace nvinfer1::utils { //! \brief Loads the binary contents of a cache file into a char vector. Used for both timing cache and runtime cache. //! //! \note This is a blocking operation, as this method will acquire an exclusive file lock on the cache file for //! the duration of the read. \returns The binary data from the file, or an empty vector if an error occurred. std::vector loadCacheFile(nvinfer1::ILogger& logger, std::string const& inFileName); //! \brief Helper method to load a timing cache from a file, build an ITimingCache with the data, and then set the new //! timing cache to the builder config. If the file is blank, or cannot be read, a new timing cache will be created from //! scratch. //! //! \returns The newly created timing cache, or nullptr if an error occurred during creation. std::unique_ptr buildTimingCacheFromFile( ILogger& logger, IBuilderConfig& config, std::string const& timingCacheFile); //! \brief Saves the contents of a cache object to a binary file. //! //! \note This is a blocking operation, as this method will acquire an exclusive file lock on the cache file for //! the duration of the write. void saveCacheFile(nvinfer1::ILogger& logger, std::string const& outFileName, nvinfer1::IHostMemory const* blob); //! \brief Updates the contents of a timing cache binary file. //! This operation loads the timing cache file, combines it with the passed timingCache, and serializes the combined //! timing cache. //! //! \note This is a blocking operation, as this method will acquire an exclusive file lock on the timing cache file for //! the duration of the write. void updateTimingCacheFile(nvinfer1::ILogger& logger, std::string const& fileName, nvinfer1::ITimingCache const* timingCache, nvinfer1::IBuilder& builder); } // namespace nvinfer1::utils #endif // TRT_SHARED_TIMINGCACHE_H_