| /* | |
| * 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. | |
| */ | |
| 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<char> 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<ITimingCache> 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 | |