diff --git a/T/TensorRT/build_cuda+11.jl b/T/TensorRT/TensorRT@10/build_cuda+11.jl similarity index 100% rename from T/TensorRT/build_cuda+11.jl rename to T/TensorRT/TensorRT@10/build_cuda+11.jl diff --git a/T/TensorRT/build_cuda+12.jl b/T/TensorRT/TensorRT@10/build_cuda+12.jl similarity index 100% rename from T/TensorRT/build_cuda+12.jl rename to T/TensorRT/TensorRT@10/build_cuda+12.jl diff --git a/T/TensorRT/build_tarballs.jl b/T/TensorRT/TensorRT@10/build_tarballs.jl similarity index 98% rename from T/TensorRT/build_tarballs.jl rename to T/TensorRT/TensorRT@10/build_tarballs.jl index 626b138d124..431229d0865 100644 --- a/T/TensorRT/build_tarballs.jl +++ b/T/TensorRT/TensorRT@10/build_tarballs.jl @@ -1,7 +1,7 @@ using BinaryBuilder, Pkg using Base.BinaryPlatforms: arch, os -const YGGDRASIL_DIR = "../.." +const YGGDRASIL_DIR = "../../.." include(joinpath(YGGDRASIL_DIR, "fancy_toys.jl")) include(joinpath(YGGDRASIL_DIR, "platforms", "cuda.jl")) diff --git a/T/TensorRT/TensorRT@8/build_cuda+10.jl b/T/TensorRT/TensorRT@8/build_cuda+10.jl new file mode 100644 index 00000000000..73e4517f8cc --- /dev/null +++ b/T/TensorRT/TensorRT@8/build_cuda+10.jl @@ -0,0 +1,19 @@ +platforms_and_sources = Dict( + Platform("x86_64", "linux") => [ + ArchiveSource("https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.1/tars/TensorRT-8.2.1.8.Linux.x86_64-gnu.cuda-10.2.cudnn8.2.tar.gz", + "96160493b88526f4eb136b29399c3c8bb2ef5e2dd4f8325a44104add10edd35b")], + Platform("aarch64", "linux") => [ + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvinfer-bin_8.2.1-1+cuda10.2_arm64.deb", "b03b5ca8e9b0df42d97255cea501cab44e982f9eb5e795e8bd8cab70a1debd85"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvinfer-dev_8.2.1-1+cuda10.2_arm64.deb", "54c79348f364731d90aa857597185d73067864e208fb24a8fb7675405661c6d6"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvinfer-plugin-dev_8.2.1-1+cuda10.2_arm64.deb", "e357606f5884608cbb07a0dfe64c48490746e90e6eaf91bbed2324623e368b7c"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvinfer-plugin8_8.2.1-1+cuda10.2_arm64.deb", "ea0bcf03218d1c22fdb563f3db45e00829234712f05ce71866c9486bc1dcadaf"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvinfer8_8.2.1-1+cuda10.2_arm64.deb", "af79b941988fff6daec89a663fd5bc12541df8c568e4e0c66c4e1991ec4c923c"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvonnxparsers-dev_8.2.1-1+cuda10.2_arm64.deb", "e50047d41ceb8341bdaa67f9df3e365257d80b520ba68af340b18ec8a238366b"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvonnxparsers8_8.2.1-1+cuda10.2_arm64.deb", "d7c27711b73e4cc3febb21969d21a84cd92e21a7863da75d0a72b50ea2c12833"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvparsers-dev_8.2.1-1+cuda10.2_arm64.deb", "816c0f9daa031be52e873907662c26d8d58e29cc2603a5d7ba1e60a0d76d00fd"), + FileSource("https://repo.download.nvidia.com/jetson/common/pool/main/t/tensorrt/libnvparsers8_8.2.1-1+cuda10.2_arm64.deb", "f2ab966c85b6e8a36098a6bc05e0ac478bd1cc9d966373223c0ec56dc73d302b"), + ], + Platform("x86_64", "windows") => [ + ArchiveSource("https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.1/zip/TensorRT-8.2.1.8.Windows10.x86_64.cuda-10.2.cudnn8.2.zip", + "d00f9d6f0d75d572f4b5a0041408650138f4f3aac76902cbfd1580448f75ee47")], +) diff --git a/T/TensorRT/TensorRT@8/build_cuda+11.jl b/T/TensorRT/TensorRT@8/build_cuda+11.jl new file mode 100644 index 00000000000..5b6d9ac2ef5 --- /dev/null +++ b/T/TensorRT/TensorRT@8/build_cuda+11.jl @@ -0,0 +1,11 @@ +platforms_and_sources = Dict( + Platform("x86_64", "linux") => [ + ArchiveSource("https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.1/tars/TensorRT-8.2.1.8.Linux.x86_64-gnu.cuda-11.4.cudnn8.2.tar.gz", + "3e9a9cc4ad0e5ae637317d924dcddf66381f4db04e2571f0f2e6ed5a2a51f247")], + Platform("aarch64", "linux") => [ + ArchiveSource("https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.1/tars/TensorRT-8.2.1.8.Ubuntu-20.04.aarch64-gnu.cuda-11.4.cudnn8.2.tar.gz", + "7c21312bf552904339d5f9270dc40c39321558e5993d93e4f94a0ed47d9a8a79")], + Platform("x86_64", "windows") => [ + ArchiveSource("https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.1/zip/TensorRT-8.2.1.8.Windows10.x86_64.cuda-11.4.cudnn8.2.zip", + "a900840f3839ae14fbd9dc837eb6335d3cb4f217f1f29604ef72fa88e8994bcd")], +) diff --git a/T/TensorRT/TensorRT@8/build_tarballs.jl b/T/TensorRT/TensorRT@8/build_tarballs.jl new file mode 100644 index 00000000000..711dbf8e118 --- /dev/null +++ b/T/TensorRT/TensorRT@8/build_tarballs.jl @@ -0,0 +1,86 @@ +using BinaryBuilder, Pkg +using Base.BinaryPlatforms: arch, os + +const YGGDRASIL_DIR = "../../.." +include(joinpath(YGGDRASIL_DIR, "fancy_toys.jl")) +include(joinpath(YGGDRASIL_DIR, "platforms", "cuda.jl")) + +name = "TensorRT" +version = v"8.2.1" + +cuda_versions = [ + v"10.2", + v"11", +] + +# Cf. https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-825/support-matrix/index.html +cudnn_version = v"8.2.1" + +script = raw""" +mkdir -p $bindir $includedir $libdir +cd ${WORKSPACE}/srcdir + +if [[ ${bb_full_target} == aarch64-linux-gnu*cuda+10.2 ]]; then + apk add dpkg + ls *.deb | xargs -Ideb_file dpkg-deb -x deb_file tmp + install -Dv --mode=755 tmp/usr/src/tensorrt/bin/* $bindir + install -Dv --mode=644 tmp/usr/include/$target/* $includedir + install -Dv --mode=755 tmp/usr/lib/$target/*.so* $libdir + install_license tmp/usr/share/doc/libnvinfer8/copyright +else + cd TensorRT* + mv bin/* ${bindir} + mv include/* ${includedir} + mv lib/*.${dlext}* ${libdir} + + if [[ ${target} == x86_64-w64-mingw32 ]]; then + chmod +x ${bindir}/*.{dll,exe} + install_license doc/TensorRT-SLA.pdf + else + install_license doc/pdf/TensorRT-SLA.pdf + fi +fi +""" + +lib_names = [ + "nvinfer", + "nvinfer_plugin", + "nvonnxparser", + "nvparsers" +] + +products = vcat( + [LibraryProduct(["lib$lib_name", lib_name], Symbol("lib$lib_name"); dont_dlopen=true) for lib_name in lib_names], + [ExecutableProduct("trtexec", :trtexec)] +) + +builds = [] +for cuda_version in cuda_versions + include("build_cuda+$(cuda_version.major).jl") + + for (platform, sources) in platforms_and_sources + augmented_platform = deepcopy(platform) + augmented_platform["cuda"] = CUDA.platform(cuda_version) + should_build_platform(triplet(augmented_platform)) || continue + + dependencies = [Dependency("CUDNN_jll", cudnn_version; compat="8.2")] + + push!(builds, (; dependencies, platforms=[augmented_platform], sources)) + end +end + +augment_platform_block = CUDA.augment + +# don't allow `build_tarballs` to override platform selection based on ARGS. +# we handle that ourselves by calling `should_build_platform` +non_platform_ARGS = filter(arg -> startswith(arg, "--"), ARGS) + +# `--register` should only be passed to the latest `build_tarballs` invocation +non_reg_ARGS = filter(arg -> arg != "--register", non_platform_ARGS) + +for (i,build) in enumerate(builds) + build_tarballs(i == lastindex(builds) ? non_platform_ARGS : non_reg_ARGS, + name, version, build.sources, script, + build.platforms, products, build.dependencies; + julia_compat="1.6", augment_platform_block, dont_dlopen=true) +end