83 lines
4.7 KiB
Python
83 lines
4.7 KiB
Python
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 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.
|
|
|
|
"""
|
|
Copies a template file from a source directory (e.g. packaging/) to a destination (usually a build dir),
|
|
replacing variables (e.g. `##TENSORRT_VERSION##`) with concrete values.
|
|
Sub-directory structure is preserved.
|
|
|
|
This file is used by the CMake build when building the python wheels.
|
|
"""
|
|
|
|
import argparse
|
|
import glob
|
|
import os
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="Copy files from a source to a destination, replacing variables with concrete values"
|
|
)
|
|
parser.add_argument("--src-dir", help="The absolute path to the source directory.", required=True)
|
|
parser.add_argument("--dst-dir", help="The absolute path to the destination directory.", required=True)
|
|
parser.add_argument("--filepath", help="The template file to copy, relative to the source directory.", required=True)
|
|
parser.add_argument("--trt-module", help="The TensorRT module name. One of 'tensorrt', 'tensorrt_lean', or 'tensorrt_dispatch' for non-RTX, and 'tensorrt_rtx' for RTX builds.", required=True)
|
|
parser.add_argument("--trt-py-version", help="The version string for the python bindings being built. Usually `major.minor.patch.build`.", required=True)
|
|
parser.add_argument("--cuda-version", help="The Cuda version (major.minor).", required=True)
|
|
parser.add_argument("--trt-version", help="The TensorRT version (major.minor.patch).", required=True)
|
|
parser.add_argument("--plugin-disabled", help="Whether the plugin is disabled.", type=int, choices=[0,1], default=0, required=False)
|
|
parser.add_argument("--trt-nvinfer-name", help="The name of the nvinfer library.", required=True)
|
|
parser.add_argument("--trt-onnxparser-name", help="The name of the onnxparser library.", required=True)
|
|
args, _ = parser.parse_known_args()
|
|
|
|
if not os.path.isdir(args.src_dir):
|
|
raise ValueError(f"Provided src-dir {args.src_dir} is not a directory.")
|
|
|
|
if not os.path.isdir(args.dst_dir):
|
|
raise ValueError(f"Provided dst-dir {args.dst_dir} is not a directory.")
|
|
|
|
target_path = os.path.join(args.src_dir, args.filepath)
|
|
|
|
if not os.path.exists(target_path):
|
|
raise ValueError(f"Target file {target_path} does not exist.")
|
|
|
|
with open(target_path, 'r', encoding="utf-8") as file:
|
|
contents = file.read()
|
|
|
|
if args.trt_module == "tensorrt_rtx":
|
|
readme_text = """NVIDIA TensorRT RTX is an SDK for high-performance AI inference on NVIDIA RTX GPUs. It includes a Just-in-Time compiler for fast on-device inference optimizations that enable portable deployments and runtime performance specialization. It also introduces convenience features such as built-in CUDA graph support, runtime cache, and a simplified development workflow."""
|
|
else:
|
|
readme_text = """NVIDIA TensorRT is an SDK that facilitates high-performance machine learning inference. It is designed to work in a complementary fashion with training frameworks such as PyTorch. It focuses specifically on running an already-trained network quickly and efficiently on NVIDIA hardware."""
|
|
|
|
contents = contents.replace("##TENSORRT_README##", readme_text)
|
|
contents = contents.replace("##TENSORRT_MODULE##", args.trt_module)
|
|
contents = contents.replace("##TENSORRT_PYTHON_VERSION##", args.trt_py_version)
|
|
contents = contents.replace("##CUDA_MAJOR##", args.cuda_version.split(".")[0])
|
|
contents = contents.replace("##TENSORRT_MAJOR##", args.trt_version.split(".")[0])
|
|
contents = contents.replace("##TENSORRT_MINOR##", args.trt_version.split(".")[1])
|
|
contents = contents.replace("##TENSORRT_PLUGIN_DISABLED##", "True" if args.plugin_disabled == 1 else "False")
|
|
contents = contents.replace("##TENSORRT_NVINFER_NAME##", args.trt_nvinfer_name)
|
|
contents = contents.replace("##TENSORRT_ONNXPARSER_NAME##", args.trt_onnxparser_name)
|
|
|
|
dest_path = os.path.join(args.dst_dir, args.filepath)
|
|
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
|
|
|
|
with open(dest_path, 'w', encoding="utf-8") as of:
|
|
of.write(contents)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|