From cd866609a18fb0dffe1e798a1831bcf698095de5 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 14 Mar 2024 02:01:07 -0700
Subject: [PATCH 01/69] feat: Add save API for torch-trt compiled models

---
 .github/scripts/install-torch-tensorrt.sh   |  3 +-
 py/torch_tensorrt/_compile.py               | 67 +++++++++++++++++++++
 py/torch_tensorrt/dynamo/_compiler.py       |  9 +--
 py/torch_tensorrt/dynamo/_defaults.py       |  1 -
 py/torch_tensorrt/dynamo/_exporter.py       | 17 +-----
 py/torch_tensorrt/dynamo/_settings.py       |  3 -
 tests/py/dynamo/models/test_export_serde.py | 58 +++++++++---------
 7 files changed, 104 insertions(+), 54 deletions(-)

diff --git a/.github/scripts/install-torch-tensorrt.sh b/.github/scripts/install-torch-tensorrt.sh
index 2930421d5b..9757fadeb4 100644
--- a/.github/scripts/install-torch-tensorrt.sh
+++ b/.github/scripts/install-torch-tensorrt.sh
@@ -2,7 +2,8 @@
 set -eou pipefail
 # Source conda so it's available to the script environment
 source ${BUILD_ENV_FILE}
-${CONDA_RUN} ${PIP_INSTALL_TORCH} torchvision pyyaml
+${CONDA_RUN} ${PIP_INSTALL_TORCH} torchvision --extra-index-url https://pypi.python.org/simple
+${CONDA_RUN} python -m pip install pyyaml mpmath==1.3.0
 export TRT_VERSION=$(${CONDA_RUN} python -c "import versions; versions.tensorrt_version()")
 ${CONDA_RUN} python -m pip install /opt/torch-tensorrt-builds/torch_tensorrt*+${CU_VERSION}*.whl tensorrt~=${TRT_VERSION} tensorrt-bindings~=${TRT_VERSION} --extra-index-url=https://pypi.ngc.nvidia.com
 
diff --git a/py/torch_tensorrt/_compile.py b/py/torch_tensorrt/_compile.py
index 9dd816e633..aa1bc53a0a 100644
--- a/py/torch_tensorrt/_compile.py
+++ b/py/torch_tensorrt/_compile.py
@@ -6,6 +6,7 @@
 
 import torch
 import torch.fx
+import torch_tensorrt.dynamo
 import torch_tensorrt.ts
 from torch_tensorrt._enums import dtype
 from torch_tensorrt._Input import Input
@@ -29,6 +30,7 @@
 __all__ = [
     "compile",
     "convert_method_to_trt_engine",
+    "save",
 ]
 
 
@@ -332,3 +334,68 @@ def convert_method_to_trt_engine(
         )
     else:
         raise RuntimeError("Module is an unknown format or the ir requested is unknown")
+
+
+def save(
+    module: Any,
+    file_path: str = "",
+    *,
+    output_format: str = "exported_program",
+    inputs: Optional[Sequence[torch.Tensor]] = None,
+    retrace: bool = False,
+) -> None:
+    """
+    Save the model to disk in the specified output format.
+    Arguments:
+        module : Compiled Torch-TensorRT module (Options include torch.jit.ScriptModule | torch.export.ExportedProgram | torch.fx.GraphModule)
+        inputs (torch.Tensor): Torch input tensors
+    """
+    module_type = _parse_module_type(module)
+    accepted_formats = {"exported_program", "torchscript"}
+    if inputs and not all(isinstance(input, torch.Tensor) for input in inputs):
+        raise ValueError(
+            "Not all inputs provided are torch.tensors. Please provide torch.tensors as inputs"
+        )
+    if output_format not in accepted_formats:
+        raise ValueError(
+            f"Provided output_format {output_format} is not supported. Supported options are exported_program | torchscript"
+        )
+    if not file_path:
+        raise ValueError("File path cannot be empty. Please provide a valid file path")
+
+    if module_type == _ModuleType.nn:
+        raise ValueError(
+            "Input model is of type nn.Module. Saving nn.Module directly is not supported. Supported model types torch.jit.ScriptModule | torch.fx.GraphModule | torch.export.ExportedProgram."
+        )
+    elif module_type == _ModuleType.ts:
+        if output_format == "exported_program":
+            raise ValueError(
+                "Provided model is a torch.jit.ScriptModule but the output_format specified is exported_program. Please verify the output_format"
+            )
+        else:
+            torch.jit.save(module, file_path)
+    elif module_type == _ModuleType.ep:
+        if output_format == "torchscript":
+            raise ValueError(
+                "Provided model is a torch.export.ExportedProgram but the output_format specified is torchscript. Please verify the output_format"
+            )
+        else:
+            torch.export.save(module, file_path)
+    elif module_type == _ModuleType.fx:
+        if not inputs:
+            raise ValueError(
+                "Provided model is a torch.fx.GraphModule however the inputs are empty. Please provide valid torch.tensors as inputs to trace and save the model"
+            )
+        # The module type is torch.fx.GraphModule
+        if output_format == "torchscript":
+            module_ts = torch.jit.trace(module, inputs)
+            torch.jit.save(module_ts, file_path)
+        else:
+            if not retrace:
+                from torch_tensorrt.dynamo._exporter import export
+
+                exp_program = export(module, inputs)
+                torch.export.save(exp_program, file_path)
+            else:
+                exp_program = torch.export.export(module, tuple(inputs), strict=False)
+                torch.export.save(exp_program, file_path)
diff --git a/py/torch_tensorrt/dynamo/_compiler.py b/py/torch_tensorrt/dynamo/_compiler.py
index 6312532f1c..b321eabcb2 100644
--- a/py/torch_tensorrt/dynamo/_compiler.py
+++ b/py/torch_tensorrt/dynamo/_compiler.py
@@ -30,7 +30,6 @@
     MIN_BLOCK_SIZE,
     NUM_AVG_TIMING_ITERS,
     OPTIMIZATION_LEVEL,
-    OUTPUT_FORMAT,
     PASS_THROUGH_BUILD_FAILURES,
     PRECISION,
     REFIT,
@@ -48,7 +47,6 @@
     dryrun_stats_display,
     parse_non_trt_nodes,
 )
-from torch_tensorrt.dynamo._exporter import export
 from torch_tensorrt.dynamo.conversion import (
     CompilationSettings,
     UnsupportedOperatorException,
@@ -102,9 +100,8 @@ def compile(
     enable_experimental_decompositions: bool = ENABLE_EXPERIMENTAL_DECOMPOSITIONS,
     dryrun: bool = DRYRUN,
     hardware_compatible: bool = HARDWARE_COMPATIBLE,
-    output_format: str = OUTPUT_FORMAT,
     **kwargs: Any,
-) -> Union[ExportedProgram, torch.jit.ScriptModule, torch.fx.GraphModule]:
+) -> torch.fx.GraphModule:
     """Compile a TorchScript module for NVIDIA GPUs using TensorRT
 
     Takes a existing TorchScript module and a set of settings to configure the compiler
@@ -246,14 +243,12 @@ def compile(
         "dla_global_dram_size": dla_global_dram_size,
         "dryrun": dryrun,
         "hardware_compatible": hardware_compatible,
-        "output_format": output_format,
     }
 
     settings = CompilationSettings(**compilation_options)
     logger.info("Compilation Settings: %s\n", settings)
     trt_gm = compile_module(gm, inputs, settings)
-    trt_result = export(trt_gm, torch_inputs, output_format)
-    return trt_result
+    return trt_gm
 
 
 def compile_module(
diff --git a/py/torch_tensorrt/dynamo/_defaults.py b/py/torch_tensorrt/dynamo/_defaults.py
index ec038c0dba..3d48ab3def 100644
--- a/py/torch_tensorrt/dynamo/_defaults.py
+++ b/py/torch_tensorrt/dynamo/_defaults.py
@@ -26,7 +26,6 @@
 REQUIRE_FULL_COMPILATION = False
 DRYRUN = False
 HARDWARE_COMPATIBLE = False
-OUTPUT_FORMAT = "exported_program"
 
 
 def default_device() -> Device:
diff --git a/py/torch_tensorrt/dynamo/_exporter.py b/py/torch_tensorrt/dynamo/_exporter.py
index c7e2f37795..bae20ac235 100644
--- a/py/torch_tensorrt/dynamo/_exporter.py
+++ b/py/torch_tensorrt/dynamo/_exporter.py
@@ -18,27 +18,16 @@
 def export(
     gm: torch.fx.GraphModule,
     inputs: Sequence[torch.Tensor],
-    output_format: str,
 ) -> ExportedProgram:
     """Export the result of TensorRT compilation into the desired output format.
 
     Arguments:
         gm (torch.fx.GraphModule): Compiled Torch-TensorRT module, generated by ``torch_tensorrt.dynamo.compile``
         inputs (torch.Tensor): Torch input tensors
-        output_format (str): Output format of the result of TRT compilation. Options include "exported_program" (or) "ep" | "torchscript" (or) "ts" | "graph_module" (or) "fx". Default is "exported_program"
     """
-    if output_format == "torchscript" or output_format == "ts":
-        return torch.jit.trace(gm, inputs)
-    elif output_format == "exported_program" or output_format == "ep":
-        patched_module = transform(gm, inputs)
-        exp_program = create_trt_exp_program(patched_module)
-        return exp_program
-    elif output_format == "graph_module" or output_format == "fx":
-        return gm
-    else:
-        raise ValueError(
-            f"Invalid output format {output_format} specified. Supported options include exported_program (or) ep | torchscript (or) ts | graph_module (or) fx"
-        )
+    patched_module = transform(gm, inputs)
+    exp_program = create_trt_exp_program(patched_module)
+    return exp_program
 
 
 def transform(
diff --git a/py/torch_tensorrt/dynamo/_settings.py b/py/torch_tensorrt/dynamo/_settings.py
index c00b049f45..2420a227d8 100644
--- a/py/torch_tensorrt/dynamo/_settings.py
+++ b/py/torch_tensorrt/dynamo/_settings.py
@@ -19,7 +19,6 @@
     MIN_BLOCK_SIZE,
     NUM_AVG_TIMING_ITERS,
     OPTIMIZATION_LEVEL,
-    OUTPUT_FORMAT,
     PASS_THROUGH_BUILD_FAILURES,
     PRECISION,
     REFIT,
@@ -71,7 +70,6 @@ class CompilationSettings:
             TRT Engines. Prints detailed logs of the graph structure and nature of partitioning. Optionally saves the
             ouptut to a file if a string path is specified
         hardware_compatible (bool): Build the TensorRT engines compatible with GPU architectures other than that of the GPU on which the engine was built (currently works for NVIDIA Ampere and newer)
-        output_format (str): Output format of the result of TRT compilation. Options include "exported_program" (or) "ep" | "torchscript" (or) "ts" | "graph_module" (or) "fx". Default is "exported_program"
     """
 
     precision: torch.dtype = PRECISION
@@ -99,4 +97,3 @@ class CompilationSettings:
     dla_global_dram_size: int = DLA_GLOBAL_DRAM_SIZE
     dryrun: Union[bool, str] = DRYRUN
     hardware_compatible: bool = HARDWARE_COMPATIBLE
-    output_format: str = OUTPUT_FORMAT
diff --git a/tests/py/dynamo/models/test_export_serde.py b/tests/py/dynamo/models/test_export_serde.py
index efa593890e..0905c5e859 100644
--- a/tests/py/dynamo/models/test_export_serde.py
+++ b/tests/py/dynamo/models/test_export_serde.py
@@ -42,18 +42,18 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    deser_trt_module = deser_trt_exp_program.module()
     # Check Pyt and TRT exported program outputs
-    cos_sim = cosine_similarity(model(input), trt_exp_program(input)[0])
+    cos_sim = cosine_similarity(model(input), trt_module(input)[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_base_model_full_compile TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
     )
     # Check Pyt and deserialized TRT exported program outputs
-    cos_sim = cosine_similarity(model(input), deser_trt_exp_program(input)[0])
+    cos_sim = cosine_similarity(model(input), deser_trt_module(input)[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_base_model_full_compile TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
@@ -93,12 +93,13 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
+    deser_trt_module = deser_trt_exp_program.module()
     # Check Pyt and TRT exported program outputs
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -107,7 +108,7 @@ def forward(self, x):
         )
 
     # Check Pyt and deserialized TRT exported program outputs
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -149,12 +150,13 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
+    deser_trt_module = deser_trt_exp_program.module()
     # Check Pyt and TRT exported program outputs
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -163,7 +165,7 @@ def forward(self, x):
         )
 
     # Check Pyt and deserialized TRT exported program outputs
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -207,12 +209,12 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    deser_trt_module = deser_trt_exp_program.module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -220,7 +222,7 @@ def forward(self, x):
             msg=f"test_hybrid_relu_fallback TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
         )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -248,19 +250,19 @@ def test_resnet18(ir):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    deser_trt_module = deser_trt_exp_program.module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     cos_sim = cosine_similarity(outputs_pyt, outputs_trt[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_resnet18 TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
     )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
 
     cos_sim = cosine_similarity(outputs_pyt, outputs_trt_deser[0])
     assertions.assertTrue(
@@ -303,12 +305,12 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    deser_trt_module = deser_trt_exp_program.module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
 
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
@@ -317,7 +319,7 @@ def forward(self, x):
             msg=f"test_hybrid_conv_fallback TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
         )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(

From eab0dba2955a87550fe12e7b67ae092597b8c453 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 18 Mar 2024 12:43:45 -0700
Subject: [PATCH 02/69] chore: Fix save failures

---
 core/runtime/TRTEngine.cpp                  |   2 +-
 py/torch_tensorrt/_compile.py               |   9 +-
 py/torch_tensorrt/dynamo/_exporter.py       | 135 +++++++++++++-------
 tests/py/dynamo/models/test_export_serde.py |   2 +-
 4 files changed, 100 insertions(+), 48 deletions(-)

diff --git a/core/runtime/TRTEngine.cpp b/core/runtime/TRTEngine.cpp
index 92e5d7a8ff..7a046f6d94 100644
--- a/core/runtime/TRTEngine.cpp
+++ b/core/runtime/TRTEngine.cpp
@@ -241,7 +241,7 @@ std::string TRTEngine::to_str() const {
               exec_ctx->getEngine().getTensorDataType(out_binding_names[o].c_str()))
        << std::endl;
   }
-  ss << "  }" << std::endl;
+  ss << "  ]" << std::endl;
   ss << "  Device: " << device_info << std::endl;
   ss << "  Hardware Compatibility: " << (hardware_compatible ? "Enabled" : "Disabled") << std::endl;
   // clang-format on
diff --git a/py/torch_tensorrt/_compile.py b/py/torch_tensorrt/_compile.py
index aa1bc53a0a..443dec8869 100644
--- a/py/torch_tensorrt/_compile.py
+++ b/py/torch_tensorrt/_compile.py
@@ -397,5 +397,10 @@ def save(
                 exp_program = export(module, inputs)
                 torch.export.save(exp_program, file_path)
             else:
-                exp_program = torch.export.export(module, tuple(inputs), strict=False)
-                torch.export.save(exp_program, file_path)
+                from torch._higher_order_ops.torchbind import enable_torchbind_tracing
+
+                with enable_torchbind_tracing():
+                    exp_program = torch.export.export(
+                        module, tuple(inputs), strict=False
+                    )
+                    torch.export.save(exp_program, file_path)
diff --git a/py/torch_tensorrt/dynamo/_exporter.py b/py/torch_tensorrt/dynamo/_exporter.py
index bae20ac235..cf06bc4531 100644
--- a/py/torch_tensorrt/dynamo/_exporter.py
+++ b/py/torch_tensorrt/dynamo/_exporter.py
@@ -1,3 +1,4 @@
+import copy
 import operator
 from typing import Any, Dict, Sequence, Tuple, cast
 
@@ -6,8 +7,11 @@
 from torch._subclasses.fake_tensor import FakeTensor
 from torch.export import ExportedProgram, ExportGraphSignature
 from torch.export.exported_program import (
+    CustomObjArgument,
     InputKind,
     InputSpec,
+    ModuleCallEntry,
+    ModuleCallSignature,
     OutputKind,
     OutputSpec,
     TensorArgument,
@@ -44,24 +48,27 @@ def transform(
 
     Returns an inlined torch.fx.GraphModule
     """
+    gm_export = copy.deepcopy(gm)
     # Run shape analysis
-    _, outputs_map = partitioning.run_shape_analysis(gm, inputs)
+    _, outputs_map = partitioning.run_shape_analysis(gm_export, inputs)
 
     # Inline TensorRT submodules
-    inline_trt_modules(gm, outputs_map)
+    inline_trt_modules(gm_export, outputs_map)
 
     # Inline pytorch submodules
-    inline_torch_modules(gm)
+    inline_torch_modules(gm_export)
 
     # Clean the graph
-    gm.delete_all_unused_submodules()
-    gm.graph.eliminate_dead_code()
-    gm.graph.lint()
+    gm_export.delete_all_unused_submodules()
+    gm_export.graph.eliminate_dead_code()
+    gm_export.graph.lint()
 
-    return gm
+    return gm_export
 
 
-def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule:
+def lift(
+    gm: torch.fx.GraphModule, graph_signature: Any
+) -> Tuple[torch.fx.GraphModule, ExportGraphSignature, Dict[str, Any], Dict[str, Any]]:
     """
     Given an unlifted fx.GraphModule, lift all parameters, buffers into placeholders.
     Arguments:
@@ -75,6 +82,7 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
     # exp_program.state_dict contains parameters and buffers whereas a graph_module's state_dict
     # has all parameters registered as torch.tensors.
     state_dict = gm.state_dict()
+    constants = {}
 
     fake_mode = detect_fake_mode(
         tuple(node.meta["val"] for node in gm.graph.nodes if node.op == "placeholder")
@@ -89,52 +97,68 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
             break
 
     # At first the user_inputs are only present in the graph_signature.input_specs and hence non_user_input_idx=0
-    # The input_specs should be of the form [params, buffers, constant_tensors, user_inputs]
+    # The input_specs should be of the form [params, buffers, constant_tensors, custom_obj, user_inputs]
     non_user_input_idx = 0
     for node in gm.graph.nodes:
         if node.op == "get_attr":
-            if node.target not in state_dict:
-                raise ValueError(
-                    f"The get_attr node : {node.name} with target: {node.target} value could not be found in state_dict. Please check the input exported_program's graphmodule parameters."
-                )
 
-            constant_tensor = state_dict[node.target]
-            input_kind = InputKind.CONSTANT_TENSOR
+            lift_val = None
+            input_kind = None
 
-            # state_dict has these parameters/buffers as torch.Tensors. We override them as torch.nn.Parameter/torch.Tensors respectively.
-            for name, _ in gm.named_parameters():
-                if node.target == name:
-                    input_kind = InputKind.PARAMETER
-                    state_dict[name] = torch.nn.Parameter(state_dict[name])
-                    break
-            for name, _ in gm.named_buffers():
-                if node.target == name:
-                    input_kind = InputKind.BUFFER
-                    break
+            if node.target not in state_dict:
+                constants[node.target] = getattr(gm, node.target)
+                input_kind = InputKind.CUSTOM_OBJ
+                lift_val = constants[node.target]
+            else:
+                lift_val = state_dict[node.target]
+
+                input_kind = InputKind.CONSTANT_TENSOR
+
+                # state_dict has these parameters/buffers as torch.Tensors. We override them as torch.nn.Parameter/torch.Tensors respectively.
+                for name, _ in gm.named_parameters():
+                    if node.target == name:
+                        input_kind = InputKind.PARAMETER
+                        state_dict[name] = torch.nn.Parameter(state_dict[name])
+                        break
+                for name, _ in gm.named_buffers():
+                    if node.target == name:
+                        input_kind = InputKind.BUFFER
+                        break
+
+            assert lift_val is not None and input_kind is not None
 
             # Replace get_attr nodes with placeholder nodes and copy metadata.
             with gm.graph.inserting_before(first_user_input):
-                const_placeholder_node = gm.graph.placeholder(node.target)
+                const_placeholder_node = gm.graph.placeholder(
+                    node.target.replace(".", "_")
+                )
                 # Copy the node meta into this new placeholder node
                 const_placeholder_node.meta = node.meta
-                const_placeholder_node.meta["val"] = cast(
-                    FakeTensor,
-                    torch.empty_strided(
-                        tuple(constant_tensor.shape),
-                        tuple([1] * len(constant_tensor.shape)),
-                    ),
-                )
+
+                if isinstance(lift_val, torch.Tensor):
+                    const_placeholder_node.meta["val"] = cast(
+                        FakeTensor,
+                        torch.empty_strided(
+                            tuple(lift_val.shape),
+                            tuple([1] * len(lift_val.shape)),
+                        ),
+                    )
 
                 node.replace_all_uses_with(const_placeholder_node)
                 gm.graph.erase_node(node)
 
                 # Add these parameters/buffers/constants to the existing graph signature
                 # before user inputs. These specs are looked up in the state_dict during ExportedProgram creation.
+                input_spec_arg = TensorArgument(name=const_placeholder_node.name)
+                if input_kind == InputKind.CUSTOM_OBJ:
+                    input_spec_arg = CustomObjArgument(
+                        name=const_placeholder_node.name, class_fqn=""
+                    )
                 graph_signature.input_specs.insert(
                     non_user_input_idx,
                     InputSpec(
                         kind=input_kind,
-                        arg=TensorArgument(name=const_placeholder_node.name),
+                        arg=input_spec_arg,
                         target=node.target,
                     ),
                 )
@@ -143,7 +167,7 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
     gm.graph.eliminate_dead_code()
     gm.graph.lint()
 
-    return gm, graph_signature, state_dict
+    return gm, graph_signature, state_dict, constants
 
 
 def get_duplicate_nodes(
@@ -281,18 +305,30 @@ def create_trt_exp_program(
         input_specs=input_specs, output_specs=output_specs
     )
 
+    module_call_graph = [
+        ModuleCallEntry(
+            "",
+            ModuleCallSignature(
+                inputs=[],
+                outputs=[],
+                in_spec=gm.graph._codegen.pytree_info.in_spec,
+                out_spec=gm.graph._codegen.pytree_info.out_spec,
+            ),
+        )
+    ]
+
     # Lift parameters/buffers/constants in the graph
     # torch.export serialization expects them to be lifted
-    gm, trt_graph_signature, state_dict = lift(gm, trt_graph_signature)
+    gm, trt_graph_signature, state_dict, constants = lift(gm, trt_graph_signature)
 
     trt_exp_program = ExportedProgram(
-        gm,
-        gm.graph,
-        trt_graph_signature,
-        state_dict,
-        {},
-        [],
-        [],
+        root=gm,
+        graph=gm.graph,
+        graph_signature=trt_graph_signature,
+        state_dict=state_dict,
+        range_constraints={},
+        module_call_graph=module_call_graph,
+        constants=constants,
     )
 
     return trt_exp_program
@@ -319,9 +355,13 @@ def inline_trt_modules(
         num_outputs = len(outputs_map[trt_module_node.name])
         # Insert a call_function node to perform inference on TRT engine
         with gm.graph.inserting_before(trt_module_node):
+            engine_name = f"{name}_engine"
+            setattr(gm, engine_name, trt_module.engine)
+            engine_node = gm.graph.get_attr(engine_name)
+
             trt_node = gm.graph.call_function(
                 torch.ops.tensorrt.execute_engine.default,
-                (trt_module_node.args, trt_module.engine),
+                (trt_module_node.args, engine_node),
             )
             trt_node.meta["val"] = []
             assert num_outputs > 0
@@ -337,6 +377,13 @@ def inline_trt_modules(
                     )
                 )
 
+            # meta["val"] should be a lighter version of a tensor. For eg: it should be a FakeTensor (with output shape and dtype properties)
+            # Lighter version of a custom_obj is not defined clearly. meta["val"] does not have any type expectations but
+            # for custom object nodes, it should be CustomObjArgument
+            engine_node.meta["val"] = CustomObjArgument(
+                name=engine_node.name, class_fqn=""
+            )
+
         if num_outputs == 1:
             # Insert getitem nodes as outputs (for export serialization to work)
             with gm.graph.inserting_after(trt_node):
diff --git a/tests/py/dynamo/models/test_export_serde.py b/tests/py/dynamo/models/test_export_serde.py
index 0905c5e859..40fa01c2c9 100644
--- a/tests/py/dynamo/models/test_export_serde.py
+++ b/tests/py/dynamo/models/test_export_serde.py
@@ -146,7 +146,6 @@ def forward(self, x):
             )
         ],
         "ir": ir,
-        "debug": True,
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
@@ -306,6 +305,7 @@ def forward(self, x):
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
     trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+
     torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
     deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
     deser_trt_module = deser_trt_exp_program.module()

From b191d62bafac9740657cb9dc67ccafb213d4914c Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 18 Mar 2024 16:29:04 -0700
Subject: [PATCH 03/69] chore: update to 2.3 rc build

---
 py/requirements.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/py/requirements.txt b/py/requirements.txt
index cd52d32436..419c325653 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -1,9 +1,9 @@
 numpy
 packaging
 pybind11==2.6.2
---extra-index-url https://download.pytorch.org/whl/nightly/cu121
-torch>=2.3.0.dev,<2.4.0
-torchvision>=0.18.0.dev,<0.19.0
+--index-url https://download.pytorch.org/whl/test/cu121
+torch>=2.3.0,<2.4.0
+torchvision>=0.18.0,<0.19.0
 --extra-index-url https://pypi.ngc.nvidia.com
 tensorrt==8.6.1
 pyyaml

From 8674a3c437d767c6e2b09db3a574af9a99c318d3 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 19 Mar 2024 16:18:17 -0700
Subject: [PATCH 04/69] chore: minor fixes

---
 py/torch_tensorrt/dynamo/_exporter.py         |  1 +
 .../lowering/test_aten_lowering_passes.py     | 12 ++++++++----
 tests/py/dynamo/models/test_models_export.py  | 19 ++++++++++---------
 tests/py/dynamo/testing_utilities.py          |  1 +
 4 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/py/torch_tensorrt/dynamo/_exporter.py b/py/torch_tensorrt/dynamo/_exporter.py
index cf06bc4531..d4a9fd3584 100644
--- a/py/torch_tensorrt/dynamo/_exporter.py
+++ b/py/torch_tensorrt/dynamo/_exporter.py
@@ -129,6 +129,7 @@ def lift(
 
             # Replace get_attr nodes with placeholder nodes and copy metadata.
             with gm.graph.inserting_before(first_user_input):
+                # Ensure name doesn't contain period as it is used for submodules
                 const_placeholder_node = gm.graph.placeholder(
                     node.target.replace(".", "_")
                 )
diff --git a/tests/py/dynamo/lowering/test_aten_lowering_passes.py b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
index bc75a8aa3d..3afc5e5923 100644
--- a/tests/py/dynamo/lowering/test_aten_lowering_passes.py
+++ b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
@@ -1,9 +1,12 @@
 import torch
-from torch.testing._internal.common_utils import TestCase, run_tests
-
 import torch_tensorrt
+from torch.testing._internal.common_utils import TestCase, run_tests
 
-from ..testing_utilities import DECIMALS_OF_AGREEMENT, lower_graph_testing
+from ..testing_utilities import (
+    DECIMALS_OF_AGREEMENT,
+    DECIMALS_OF_AGREEMENT_3,
+    lower_graph_testing,
+)
 
 
 class TestInputAsOutput(TestCase):
@@ -444,10 +447,11 @@ def forward(self, input, weight, bias):
         max_diff = float(
             torch.max(torch.abs(optimized_model_results - torch_model_results))
         )
+
         self.assertAlmostEqual(
             max_diff,
             0,
-            DECIMALS_OF_AGREEMENT,
+            DECIMALS_OF_AGREEMENT_3,
             msg=f"Linear TRT outputs don't match with the original model.",
         )
         torch._dynamo.reset()
diff --git a/tests/py/dynamo/models/test_models_export.py b/tests/py/dynamo/models/test_models_export.py
index fd7b40592a..bc8bf12c95 100644
--- a/tests/py/dynamo/models/test_models_export.py
+++ b/tests/py/dynamo/models/test_models_export.py
@@ -159,11 +159,11 @@ def test_bert_base_uncased(ir):
     model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
     input = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
     input2 = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    model = (
-        transformers_trace(model, input_names=["input_ids", "attention_mask"])
-        .eval()
-        .cuda()
-    )
+    # model = (
+    #     transformers_trace(model, input_names=["input_ids", "attention_mask"])
+    #     .eval()
+    #     .cuda()
+    # )
 
     compile_spec = {
         "inputs": [
@@ -182,8 +182,8 @@ def test_bert_base_uncased(ir):
         "enabled_precisions": {torch.float},
         "truncate_long_and_double": True,
         "ir": ir,
-        "min_block_size": 10,
-        "torch_executed_ops": {"torch.ops.aten.gelu.default"},
+        "min_block_size": 15,
+        "debug": True,
     }
     trt_mod = torchtrt.compile(model, **compile_spec)
     model_outputs = model(input, input2)
@@ -192,8 +192,9 @@ def test_bert_base_uncased(ir):
         len(model_outputs) == len(trt_model_outputs),
         msg=f"Number of outputs for BERT model compilation is different with Pytorch {len(model_outputs)} and TensorRT {len(trt_model_outputs)}. Please check the compilation.",
     )
-    for index, key in enumerate(model_outputs):
-        out, trt_out = model_outputs[key], trt_model_outputs[index]
+
+    for key, _ in model_outputs.items():
+        out, trt_out = model_outputs[key], trt_model_outputs[key]
         cos_sim = cosine_similarity(out, trt_out)
         assertions.assertTrue(
             cos_sim > COSINE_THRESHOLD,
diff --git a/tests/py/dynamo/testing_utilities.py b/tests/py/dynamo/testing_utilities.py
index 742b9fc1a3..c815d2fde4 100644
--- a/tests/py/dynamo/testing_utilities.py
+++ b/tests/py/dynamo/testing_utilities.py
@@ -14,6 +14,7 @@
 )
 
 DECIMALS_OF_AGREEMENT = 4
+DECIMALS_OF_AGREEMENT_3 = 3
 
 
 def fx_dynamo_testing_backend(

From f4e8fe9bc3f114dd8da3760dca510f78a8f58a0d Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 19 Mar 2024 17:04:38 -0700
Subject: [PATCH 05/69] chore: remove duplicate bert test case

---
 tests/py/dynamo/models/test_models_export.py | 53 --------------------
 1 file changed, 53 deletions(-)

diff --git a/tests/py/dynamo/models/test_models_export.py b/tests/py/dynamo/models/test_models_export.py
index bc8bf12c95..4d0f4e2e7f 100644
--- a/tests/py/dynamo/models/test_models_export.py
+++ b/tests/py/dynamo/models/test_models_export.py
@@ -105,55 +105,6 @@ def test_efficientnet_b0(ir):
     torch._dynamo.reset()
 
 
-@pytest.mark.unit
-def test_bert_base_uncased(ir):
-    model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
-    input = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    input2 = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    model = (
-        transformers_trace(model, input_names=["input_ids", "attention_mask"])
-        .eval()
-        .cuda()
-    )
-
-    compile_spec = {
-        "inputs": [
-            torchtrt.Input(
-                input.shape,
-                dtype=input.dtype,
-                format=torch.contiguous_format,
-            ),
-            torchtrt.Input(
-                input.shape,
-                dtype=input.dtype,
-                format=torch.contiguous_format,
-            ),
-        ],
-        "device": torchtrt.Device("cuda:0"),
-        "enabled_precisions": {torch.float},
-        "truncate_long_and_double": True,
-        "ir": ir,
-        "min_block_size": 10,
-    }
-    trt_mod = torchtrt.compile(model, **compile_spec)
-    model_outputs = model(input, input2)
-    trt_model_outputs = trt_mod(input, input2)
-    assertions.assertTrue(
-        len(model_outputs) == len(trt_model_outputs),
-        msg=f"Number of outputs for BERT model compilation is different with Pytorch {len(model_outputs)} and TensorRT {len(trt_model_outputs)}. Please check the compilation.",
-    )
-    for index, key in enumerate(model_outputs):
-        out, trt_out = model_outputs[key], trt_model_outputs[index]
-        cos_sim = cosine_similarity(out, trt_out)
-        assertions.assertTrue(
-            cos_sim > COSINE_THRESHOLD,
-            msg=f"HF BERT base-uncased TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
-        )
-
-    # Clean up model env
-    torch._dynamo.reset()
-
-
 @pytest.mark.unit
 def test_bert_base_uncased(ir):
     model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
@@ -183,7 +134,6 @@ def test_bert_base_uncased(ir):
         "truncate_long_and_double": True,
         "ir": ir,
         "min_block_size": 15,
-        "debug": True,
     }
     trt_mod = torchtrt.compile(model, **compile_spec)
     model_outputs = model(input, input2)
@@ -204,9 +154,6 @@ def test_bert_base_uncased(ir):
     # Clean up model env
     torch._dynamo.reset()
 
-    with torch.no_grad():
-        torch.cuda.empty_cache()
-
 
 @pytest.mark.unit
 def test_resnet18_half(ir):

From 4ae6ab95a98f5b1f644c3bfd3824ac76df442dc7 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 19 Mar 2024 17:05:51 -0700
Subject: [PATCH 06/69] chore: remove comments

---
 tests/py/dynamo/models/test_models_export.py | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/tests/py/dynamo/models/test_models_export.py b/tests/py/dynamo/models/test_models_export.py
index 4d0f4e2e7f..84f6bf7a36 100644
--- a/tests/py/dynamo/models/test_models_export.py
+++ b/tests/py/dynamo/models/test_models_export.py
@@ -110,11 +110,6 @@ def test_bert_base_uncased(ir):
     model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
     input = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
     input2 = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    # model = (
-    #     transformers_trace(model, input_names=["input_ids", "attention_mask"])
-    #     .eval()
-    #     .cuda()
-    # )
 
     compile_spec = {
         "inputs": [

From fff1b800f970f8ae56f9d7e48189095d57840a74 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 12 Mar 2024 02:11:29 -0700
Subject: [PATCH 07/69] chore: Upgrade to TRT 10.0

chore: updates to trt api

chore: trt 10 fixes

chore: more fixes
---
 .../converters/impl/constant_pad.cpp          |   2 +-
 .../converters/impl/conv_deconv.cpp           |   6 +-
 .../converters/impl/interpolate.cpp           |  50 +++---
 core/conversion/converters/impl/linear.cpp    |  30 ++--
 core/runtime/TRTEngine.cpp                    |  47 ++++--
 cpp/include/torch_tensorrt/ptq.h              |   8 +-
 py/torch_tensorrt/csrc/torch_tensorrt_py.cpp  |   5 +
 py/torch_tensorrt/dynamo/_compiler.py         |   2 +-
 .../dynamo/conversion/_TRTInterpreter.py      |   6 +-
 .../dynamo/conversion/_conversion.py          |   3 +-
 .../dynamo/conversion/impl/conv.py            |   2 +-
 .../dynamo/conversion/impl/deconv.py          |   2 +-
 .../conversion/impl/elementwise/base.py       |  11 --
 .../dynamo/conversion/impl/pad.py             |   8 +-
 .../dynamo/conversion/impl/permutation.py     |   4 +-
 .../dynamo/conversion/impl/upsample.py        |   6 +-
 .../runtime/_PythonTorchTensorRTModule.py     | 142 +++++++++---------
 .../fx/converters/acc_ops_converters.py       |  27 ++--
 py/torch_tensorrt/fx/utils.py                 |  18 ++-
 .../test_convert_method_to_trt_engine.py      |   8 +-
 20 files changed, 205 insertions(+), 182 deletions(-)

diff --git a/core/conversion/converters/impl/constant_pad.cpp b/core/conversion/converters/impl/constant_pad.cpp
index 4191cb1bab..20a091e730 100644
--- a/core/conversion/converters/impl/constant_pad.cpp
+++ b/core/conversion/converters/impl/constant_pad.cpp
@@ -55,7 +55,7 @@ auto constant_pad_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns
            util::toDims(c10::IntArrayRef(stride)));
        TORCHTRT_CHECK(slice_layer, "Unable to create slice layer from node: " << *n);
        slice_layer->setName((util::node_info(n) + "_slice").c_str());
-       slice_layer->setMode(nvinfer1::SliceMode::kFILL);
+       slice_layer->setMode(nvinfer1::SampleMode::kFILL);
        slice_layer->setInput(4, *value_itensor);
 
        if (ctx->input_is_dynamic) {
diff --git a/core/conversion/converters/impl/conv_deconv.cpp b/core/conversion/converters/impl/conv_deconv.cpp
index 66620197a9..bf0df00c64 100644
--- a/core/conversion/converters/impl/conv_deconv.cpp
+++ b/core/conversion/converters/impl/conv_deconv.cpp
@@ -61,7 +61,7 @@ nvinfer1::ILayer* add_bias_layer(
   auto* sliceLayer = ctx->net->addSlice(*input_tensor, dummy, dummy, stride);
   sliceLayer->setInput(1, *start);
   sliceLayer->setInput(2, *size);
-  sliceLayer->setMode(nvinfer1::SliceMode::kFILL);
+  sliceLayer->setMode(nvinfer1::SampleMode::kFILL);
   nvinfer1::ITensor* slice_output = sliceLayer->getOutput(0);
 
   nvinfer1::Dims constantDims;
@@ -194,7 +194,7 @@ bool add_conv_deconv(ConversionCtx* ctx, const torch::jit::Node* n, args& args)
       nvinfer1::IConvolutionLayer* convLayer =
           ctx->net->addConvolutionNd(*in, num_output_maps, filter_dim, kernel_weights, bias.data);
       convLayer->setStrideNd(stride);
-      convLayer->setPaddingMode(nvinfer1::PaddingMode::kCAFFE_ROUND_DOWN);
+      convLayer->setPaddingMode(nvinfer1::PaddingMode::kEXPLICIT_ROUND_DOWN);
       convLayer->setPaddingNd(padding);
       convLayer->setPostPadding(out_padding);
       convLayer->setDilationNd(dilation);
@@ -293,7 +293,7 @@ bool add_conv_deconv(ConversionCtx* ctx, const torch::jit::Node* n, args& args)
     TORCHTRT_CHECK(conv, "Unable to create convolution layer from node: " << *n);
 
     conv->setStrideNd(stride);
-    conv->setPaddingMode(nvinfer1::PaddingMode::kCAFFE_ROUND_DOWN);
+    conv->setPaddingMode(nvinfer1::PaddingMode::kEXPLICIT_ROUND_DOWN);
     conv->setPaddingNd(padding);
     conv->setPostPadding(out_padding);
     conv->setDilationNd(dilation);
diff --git a/core/conversion/converters/impl/interpolate.cpp b/core/conversion/converters/impl/interpolate.cpp
index fad2ca5121..61721e3d2c 100644
--- a/core/conversion/converters/impl/interpolate.cpp
+++ b/core/conversion/converters/impl/interpolate.cpp
@@ -72,7 +72,7 @@ void resize_layer_size(
     nvinfer1::ITensor* in,
     std::vector<int64_t> out_shape,
     std::vector<float> scales,
-    nvinfer1::ResizeMode mode,
+    nvinfer1::InterpolationMode mode,
     bool align_corners = false) {
   TORCHTRT_CHECK((out_shape.size() > 0) ^ (scales.size() > 0), "only one of out_shape or scales should be defined");
   auto resize_layer = ctx->net->addResize(*in);
@@ -141,7 +141,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  float scale = args[2].IValue()->toDouble();
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 1] = scale;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -150,7 +150,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -172,7 +172,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  float scale = scale_factors[0];
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 1] = scale;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -181,7 +181,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -203,7 +203,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -212,7 +212,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -236,7 +236,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -245,7 +245,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -270,7 +270,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  padded_scales[padded_scales.size() - 3] = scale_d;
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -279,7 +279,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -306,7 +306,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  padded_scales[padded_scales.size() - 3] = scale_d;
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kNEAREST);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -315,7 +315,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kNEAREST);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kNEAREST);
                }
 
                return true;
@@ -336,7 +336,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  float scale = args[3].IValue()->toDouble();
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 1] = scale;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -345,7 +345,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
@@ -368,7 +368,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  float scale = scale_factors[0];
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 1] = scale;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -377,7 +377,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
@@ -400,7 +400,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -410,7 +410,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
@@ -435,7 +435,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  std::vector<float> padded_scales(in_shape.size(), 1);
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -445,7 +445,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
@@ -470,7 +470,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  padded_scales[padded_scales.size() - 3] = scale_d;
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -480,7 +480,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
@@ -507,7 +507,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
                  padded_scales[padded_scales.size() - 3] = scale_d;
                  padded_scales[padded_scales.size() - 2] = scale_h;
                  padded_scales[padded_scales.size() - 1] = scale_w;
-                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, {}, padded_scales, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                } else {
                  // Case 2: user uses output size
                  auto out_size = util::toVec(util::toDims(args[1].unwrapToIntList()));
@@ -517,7 +517,7 @@ auto interpolate_registrations TORCHTRT_UNUSED =
 
                  auto out_shape = in_shape;
                  std::copy(out_size.begin(), out_size.end(), out_shape.begin() + (in_shape.size() - out_size.size()));
-                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::ResizeMode::kLINEAR, align_corners);
+                 resize_layer_size(ctx, n, in, out_shape, {}, nvinfer1::InterpolationMode::kLINEAR, align_corners);
                }
 
                return true;
diff --git a/core/conversion/converters/impl/linear.cpp b/core/conversion/converters/impl/linear.cpp
index 6289334736..39f9cb055d 100644
--- a/core/conversion/converters/impl/linear.cpp
+++ b/core/conversion/converters/impl/linear.cpp
@@ -40,22 +40,26 @@ auto linear_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns().pat
          in = in_shuffle->getOutput(0);
        }
 
-       auto w_tensor = args[1].IValue()->toTensor();
-       Weights w = Weights(ctx, w_tensor);
+       // Convert w_tensor to ITensor
+       auto weight = args[1].IValue()->toTensor();
+       auto weight_tensor = tensor_to_const(ctx, weight, util::node_info(n) + "_weight");
+       auto mm_layer = ctx->net->addMatrixMultiply(
+           *in, nvinfer1::MatrixOperation::kNONE, *weight_tensor, nvinfer1::MatrixOperation::kNONE);
 
-       nvinfer1::ILayer* new_layer;
-       if (!args[2].IValue()->isNone()) {
-         Weights b(ctx, args[2].IValue()->toTensor());
-         new_layer = ctx->net->addFullyConnected(*in, w.num_output_maps, w.data, b.data);
-       } else {
-         LOG_DEBUG("There is no bias for the linear layer");
-         new_layer = ctx->net->addFullyConnected(*in, w.num_output_maps, w.data, Weights().data);
-       }
+       TORCHTRT_CHECK(mm_layer, "Unable to create linear layer from node: " << *n);
+       mm_layer->setName(util::node_info(n).c_str());
 
-       TORCHTRT_CHECK(new_layer, "Unable to create linear layer from node: " << *n);
+       auto mm_output = mm_layer->getOutput(0);
 
-       new_layer->setName(util::node_info(n).c_str());
-       auto out_tensor = ctx->AssociateValueAndTensor(n->outputs()[0], new_layer->getOutput(0));
+       if (!args[2].IValue()->isNone()) {
+         // Convert bias to ITensor
+         auto bias = args[2].IValue()->toTensor();
+         auto bias_tensor = tensor_to_const(ctx, bias, util::node_info(n) + "_bias");
+         auto bias_add_layer = add_elementwise(
+             ctx, nvinfer1::ElementWiseOperation::kSUM, mm_output, bias_tensor, util::node_info(n) + "_bias_add");
+         mm_output = bias_add_layer->getOutput(0);
+       }
+       auto out_tensor = ctx->AssociateValueAndTensor(n->outputs()[0], mm_output);
 
        LOG_DEBUG("Output tensor shape: " << out_tensor->getDimensions());
 
diff --git a/core/runtime/TRTEngine.cpp b/core/runtime/TRTEngine.cpp
index 7a046f6d94..fcbb403e2c 100644
--- a/core/runtime/TRTEngine.cpp
+++ b/core/runtime/TRTEngine.cpp
@@ -120,16 +120,25 @@ TRTEngine::TRTEngine(
   } else {
     uint64_t inputs_size = _in_binding_names.size();
     in_binding_names.resize(inputs_size);
-    for (size_t pyt_idx = 0; pyt_idx < inputs_size; pyt_idx++) {
+    for (uint64_t pyt_idx = 0; pyt_idx < inputs_size; pyt_idx++) {
       auto binding_name = _in_binding_names[pyt_idx];
-      auto trt_idx = cuda_engine->getBindingIndex(binding_name.c_str());
-      std::string engine_binded_name = cuda_engine->getIOTensorName(trt_idx);
-      TORCHTRT_CHECK(
-          (binding_name == engine_binded_name),
-          "Could not find a TensorRT engine binding for input named " << binding_name);
+      // Check if the binding name provided is in the list of engine's bindings
+      // by iterating through nbIOTensors and verify it is an input binding
+      bool is_binding = false, is_input = false;
+      int32_t trt_idx;
+      for (int32_t idx = 0; idx < cuda_engine->getNbIOTensors(); idx++) {
+        std::string curr_bind_name = cuda_engine->getIOTensorName(idx);
+        if (curr_bind_name == binding_name) {
+          is_binding = true;
+          trt_idx = idx;
+          if (cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kINPUT) {
+            is_input = true;
+          }
+        }
+      }
+      TORCHTRT_CHECK(is_binding, "Could not find a TensorRT engine binding for input named " << binding_name);
       TORCHTRT_CHECK(
-          (cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kINPUT),
-          "Binding " << binding_name << " specified as input but found as output in TensorRT engine");
+          is_input, "Binding " << binding_name << " specified as input but found as output in TensorRT engine");
       LOG_DEBUG(
           "Input binding name: " << binding_name << " has TensorRT binding index: " << trt_idx
                                  << ", Torch binding index: " << pyt_idx);
@@ -141,11 +150,25 @@ TRTEngine::TRTEngine(
     out_binding_names.resize(outputs);
     for (size_t pyt_idx = 0; pyt_idx < outputs; pyt_idx++) {
       auto binding_name = _out_binding_names[pyt_idx];
-      auto trt_idx = cuda_engine->getBindingIndex(binding_name.c_str());
-      TORCHTRT_CHECK((trt_idx != -1), "Could not find a TensorRT engine binding for output named " << binding_name);
+      // Check if the binding name provided is in the list of engine's bindings
+      // by iterating through nbIOTensors and verify it is an output binding
+      bool is_binding = false, is_output = false;
+      int32_t trt_idx;
+      for (int32_t idx = 0; idx < cuda_engine->getNbIOTensors(); idx++) {
+        std::string curr_bind_name = cuda_engine->getIOTensorName(idx);
+        if (curr_bind_name == binding_name) {
+          is_binding = true;
+          trt_idx = idx;
+          if (cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kOUTPUT) {
+            is_output = true;
+          }
+        }
+      }
+
+      TORCHTRT_CHECK(is_binding, "Could not find a TensorRT engine binding for output named " << binding_name);
       TORCHTRT_CHECK(
-          !(cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kINPUT),
-          "Binding " << binding_name << " specified as output but found as input in TensorRT engine");
+          is_output, "Binding " << binding_name << " specified as output but found as input in TensorRT engine");
+
       LOG_DEBUG(
           "Output binding name: " << binding_name << " has TensorRT binding index: " << trt_idx
                                   << ", Torch binding index: " << inputs_size + pyt_idx);
diff --git a/cpp/include/torch_tensorrt/ptq.h b/cpp/include/torch_tensorrt/ptq.h
index d8570f0e6e..e88da06b0c 100644
--- a/cpp/include/torch_tensorrt/ptq.h
+++ b/cpp/include/torch_tensorrt/ptq.h
@@ -21,10 +21,10 @@
 #include "torch_tensorrt/macros.h"
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-namespace nvinfer1 {
-class IInt8Calibrator;
-class IInt8EntropyCalibrator2;
-} // namespace nvinfer1
+// namespace nvinfer1 {
+// class IInt8Calibrator;
+// class IInt8EntropyCalibrator2;
+// } // namespace nvinfer1
 
 namespace torch_tensorrt {
 namespace ptq {
diff --git a/py/torch_tensorrt/csrc/torch_tensorrt_py.cpp b/py/torch_tensorrt/csrc/torch_tensorrt_py.cpp
index 33c7e27398..c0655d9907 100644
--- a/py/torch_tensorrt/csrc/torch_tensorrt_py.cpp
+++ b/py/torch_tensorrt/csrc/torch_tensorrt_py.cpp
@@ -2,6 +2,7 @@
 #include "pybind11/stl.h"
 
 #include "ATen/core/jit_type.h"
+#include "NvInferRuntimeBase.h"
 #include "Python.h"
 #include "core/compiler.h"
 #include "core/conversion/conversion.h"
@@ -77,6 +78,10 @@ class pyIInt8Calibrator : public pyCalibratorTrampoline<nvinfer1::IInt8Calibrato
   using Derived = pyCalibratorTrampoline<nvinfer1::IInt8Calibrator>;
   using Derived::Derived;
 
+  nvinfer1::InterfaceInfo getInterfaceInfo() const noexcept override {
+    return nvinfer1::InterfaceInfo{"PYTHON CALIBRATOR", 1, 0};
+  }
+
   nvinfer1::CalibrationAlgoType getAlgorithm() noexcept override {
     try {
       PYBIND11_OVERLOAD_PURE_NAME(
diff --git a/py/torch_tensorrt/dynamo/_compiler.py b/py/torch_tensorrt/dynamo/_compiler.py
index b321eabcb2..ac430bf883 100644
--- a/py/torch_tensorrt/dynamo/_compiler.py
+++ b/py/torch_tensorrt/dynamo/_compiler.py
@@ -634,7 +634,7 @@ def convert_module_to_trt_engine(
     import io
 
     with io.BytesIO() as engine_bytes:
-        engine_bytes.write(interpreter_result.engine.serialize())
+        engine_bytes.write(interpreter_result.engine)
         engine_bytearray = engine_bytes.getvalue()
 
     return engine_bytearray
diff --git a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
index 06ae596ed0..ffcc9c195e 100644
--- a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
+++ b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
@@ -172,7 +172,7 @@ def run(
 
         if version.parse(trt.__version__) >= version.parse("8.2"):
             builder_config.profiling_verbosity = (
-                trt.ProfilingVerbosity.VERBOSE
+                trt.ProfilingVerbosity.DETAILED
                 if self.compilation_settings.debug
                 else trt.ProfilingVerbosity.LAYER_NAMES_ONLY
             )
@@ -252,7 +252,7 @@ def run(
         if tactic_sources is not None:
             builder_config.set_tactic_sources(tactic_sources=tactic_sources)
 
-        engine = self.builder.build_engine(self.ctx.net, builder_config)
+        engine = self.builder.build_serialized_network(self.ctx.net, builder_config)
         assert engine
 
         serialized_cache = (
@@ -263,7 +263,7 @@ def run(
         _LOGGER.info(
             f"Build TRT engine elapsed time: {datetime.now() - build_engine_start_time}"
         )
-        _LOGGER.info(f"TRT Engine uses: {engine.device_memory_size} bytes of Memory")
+        _LOGGER.info(f"TRT Engine uses: {engine.nbytes} bytes of Memory")
 
         return TRTInterpreterResult(
             engine, self._input_names, self._output_names, serialized_cache
diff --git a/py/torch_tensorrt/dynamo/conversion/_conversion.py b/py/torch_tensorrt/dynamo/conversion/_conversion.py
index 844cb6789a..f1f4af9236 100644
--- a/py/torch_tensorrt/dynamo/conversion/_conversion.py
+++ b/py/torch_tensorrt/dynamo/conversion/_conversion.py
@@ -87,8 +87,9 @@ def convert_module(
         from torch_tensorrt.dynamo.runtime import TorchTensorRTModule
 
         with io.BytesIO() as engine_bytes:
-            engine_bytes.write(interpreter_result.engine.serialize())
+            engine_bytes.write(interpreter_result.engine)
             engine_str = engine_bytes.getvalue()
+
         return TorchTensorRTModule(
             serialized_engine=engine_str,
             name=name,
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/conv.py b/py/torch_tensorrt/dynamo/conversion/impl/conv.py
index 26e0d59b8f..6c15b4b5fe 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/conv.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/conv.py
@@ -63,7 +63,7 @@ def convNd(
         )
 
     # Process weight terms
-    if ctx.net.has_explicit_precision or isinstance(weight, TRTTensor):
+    if isinstance(weight, TRTTensor):
         weight = get_trt_tensor(ctx, weight, f"{name}_weight")
         # Append new dimension (unsqueeze) if the convolution is 1d
         if is_conv1d:
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/deconv.py b/py/torch_tensorrt/dynamo/conversion/impl/deconv.py
index f66bff7c82..03a209e2a5 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/deconv.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/deconv.py
@@ -63,7 +63,7 @@ def deconvNd(
         )
 
     # Process weight terms
-    if ctx.net.has_explicit_precision or isinstance(weight, TRTTensor):
+    if isinstance(weight, TRTTensor):
         weight = get_trt_tensor(ctx, weight, f"{name}_weight")
         # Append new dimension (unsqueeze) if the deconvolution is 1d
         if is_deconv1d:
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
index 8282ee8698..6664a67cfe 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
@@ -147,17 +147,6 @@ def convert_binary_elementwise(
             ctx, rhs_val, trt_promoted_type, name, target, source_ir
         )
 
-    # Check the limitation in the doc string.
-    if ctx.net.has_implicit_batch_dimension:
-        if is_lhs_trt_tensor and not is_rhs_trt_tensor:
-            assert len(lhs_val.shape) >= len(
-                rhs_val.shape
-            ), f"{lhs_val.shape} >= {rhs_val.shape}"
-        elif not is_lhs_trt_tensor and is_rhs_trt_tensor:
-            assert len(rhs_val.shape) >= len(
-                lhs_val.shape
-            ), f"{rhs_val.shape} >= {lhs_val.shape}"
-
     lhs_val, rhs_val = broadcast(
         ctx.net, lhs_val, rhs_val, f"{name}_lhs", f"{name}_rhs"
     )
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/pad.py b/py/torch_tensorrt/dynamo/conversion/impl/pad.py
index 3764667ffb..9031426c5c 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/pad.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/pad.py
@@ -53,7 +53,7 @@ def constant_padNd(
     )
     value_const = get_trt_tensor(ctx, value, f"{name}_value", input.dtype)
     layer.set_input(4, value_const)
-    layer.mode = trt.SliceMode.FILL
+    layer.mode = trt.SampleMode.FILL
 
     set_layer_name(layer, target, name, source_ir)
     return layer.get_output(0)
@@ -91,7 +91,7 @@ def reflection_padNd(
         shape=tuple(new_shape),
         stride=tuple(stride_list),
     )
-    layer.mode = trt.SliceMode.REFLECT
+    layer.mode = trt.SampleMode.REFLECT
 
     set_layer_name(layer, target, name, source_ir)
     return layer.get_output(0)
@@ -129,7 +129,7 @@ def replication_padNd(
         shape=tuple(new_shape),
         stride=tuple(stride_list),
     )
-    layer.mode = trt.SliceMode.CLAMP
+    layer.mode = trt.SampleMode.CLAMP
 
     set_layer_name(layer, target, name, source_ir)
     return layer.get_output(0)
@@ -167,7 +167,7 @@ def circular_padNd(
         shape=tuple(new_shape),
         stride=tuple(stride_list),
     )
-    layer.mode = trt.SliceMode.WRAP
+    layer.mode = trt.SampleMode.WRAP
 
     set_layer_name(layer, target, name, source_ir)
     return layer.get_output(0)
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/permutation.py b/py/torch_tensorrt/dynamo/conversion/impl/permutation.py
index 48a91faa40..4fabebd176 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/permutation.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/permutation.py
@@ -66,7 +66,7 @@ def roll(
             shape=shape,
             stride=stride,
         )
-        layer.mode = trt.SliceMode.WRAP
+        layer.mode = trt.SampleMode.WRAP
         set_layer_name(layer, target, f"{name}_slice_wrap", source_ir)
         return layer.get_output(0)
 
@@ -83,7 +83,7 @@ def roll(
             shape=flatten_shape,
             stride=stride,
         )
-        layer.mode = trt.SliceMode.WRAP
+        layer.mode = trt.SampleMode.WRAP
         set_layer_name(layer, target, f"{name}_slice_wrap", source_ir)
         output = layer.get_output(0)
         output = impl.shuffle.reshape(
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/upsample.py b/py/torch_tensorrt/dynamo/conversion/impl/upsample.py
index 3313730ec3..c61aad4290 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/upsample.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/upsample.py
@@ -29,14 +29,14 @@ def upsample(
         resize_layer.scales = [1.0, 1.0] + list(scale_factors)
     else:
         raise RuntimeError(
-            f"At least one of out_shape and scale_factors should be specified."
+            "At least one of out_shape and scale_factors should be specified."
         )
 
     # interpolate mode
     if resize_mode == "nearest" or None:
-        resize_layer.resize_mode = trt.ResizeMode.NEAREST
+        resize_layer.resize_mode = trt.InterpolationMode.NEAREST
     elif resize_mode == "bilinear":
-        resize_layer.resize_mode = trt.ResizeMode.LINEAR
+        resize_layer.resize_mode = trt.InterpolationMode.LINEAR
         if align_corners is None or not align_corners:
             raise RuntimeError(
                 f"Interpolation works differently is align_corners is False for {resize_mode} mode in PyTorch and TensorRT."
diff --git a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
index 3a66ed3716..82f5817b01 100644
--- a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
+++ b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
@@ -2,7 +2,7 @@
 
 import logging
 from contextlib import nullcontext
-from typing import Any, Dict, List, Optional, Sequence, Tuple
+from typing import Any, Dict, List, Optional, Tuple
 
 import tensorrt as trt
 import torch
@@ -55,73 +55,69 @@ def __init__(
 
     def _initialize(self) -> None:
         self.initialized = True
+        logger = trt.Logger()
+        runtime = trt.Runtime(logger)
+        self.engine = runtime.deserialize_cuda_engine(self.engine)
         self.context = self.engine.create_execution_context()
 
         # Indices of inputs/outputs in the trt engine bindings, in the order
         # as they are in the original PyTorch model.
-        self.input_binding_indices_in_order: Sequence[int] = [
-            self.engine.get_binding_index(name) for name in self.input_names
-        ]
-        self.output_binding_indices_in_order: Sequence[int] = [
-            self.engine.get_binding_index(name) for name in self.output_names
-        ]
-        primary_input_outputs = set()
-        primary_input_outputs.update(self.input_binding_indices_in_order)
-        primary_input_outputs.update(self.output_binding_indices_in_order)
-        self.hidden_output_binding_indices_in_order: Sequence[int] = []
-        self.hidden_output_names: Sequence[str] = []
-        for i in range(
-            self.engine.num_bindings // self.engine.num_optimization_profiles
-        ):
-            if i not in primary_input_outputs:
-                self.hidden_output_binding_indices_in_order.append(i)
-                self.hidden_output_names.append(self.engine.get_binding_name(i))
 
-        assert (self.engine.num_bindings // self.engine.num_optimization_profiles) == (
+        # TODO: Verify if the following is required especially the hidden outputs
+        # self.input_binding_indices_in_order: Sequence[int] = [
+        #     self.engine.get_binding_index(name) for name in self.input_names
+        # ]
+        # self.output_binding_indices_in_order: Sequence[int] = [
+        #     self.engine.get_binding_index(name) for name in self.output_names
+        # ]
+        # primary_input_outputs = set()
+        # primary_input_outputs.update(self.input_binding_indices_in_order)
+        # primary_input_outputs.update(self.output_binding_indices_in_order)
+        # self.hidden_output_binding_indices_in_order: Sequence[int] = []
+        # self.hidden_output_names: Sequence[str] = []
+        # for i in range(
+        #     self.engine.num_bindings // self.engine.num_optimization_profiles
+        # ):
+        #     if i not in primary_input_outputs:
+        #         self.hidden_output_binding_indices_in_order.append(i)
+        #         self.hidden_output_names.append(self.engine.get_binding_name(i))
+
+        assert (
+            self.engine.num_io_tensors // self.engine.num_optimization_profiles
+        ) == (
             len(self.input_names)
             + len(self.output_names)
-            + len(self.hidden_output_names)
+            # + len(self.hidden_output_names) #TODO: Verify if this is required
         )
 
         self.input_dtypes = [
             unified_dtype_converter(
-                self.engine.get_binding_dtype(idx), Frameworks.TORCH
+                self.engine.get_tensor_dtype(input_name), Frameworks.TORCH
             )
-            for idx in self.input_binding_indices_in_order
+            for input_name in self.input_names
         ]
-        self.input_shapes: Sequence[Sequence[int]] = [
-            tuple(self.engine.get_binding_shape(idx))
-            for idx in self.input_binding_indices_in_order
+        self.input_shapes = [
+            self.engine.get_tensor_shape(input_name) for input_name in self.input_names
         ]
         self.output_dtypes = [
             unified_dtype_converter(
-                self.engine.get_binding_dtype(idx), Frameworks.TORCH
+                self.engine.get_tensor_dtype(output_name), Frameworks.TORCH
             )
-            for idx in self.output_binding_indices_in_order
+            for output_name in self.output_names
         ]
         self.output_shapes = [
-            (
-                tuple(self.engine.get_binding_shape(idx))
-                if self.engine.has_implicit_batch_dimension
-                else tuple()
-            )
-            for idx in self.output_binding_indices_in_order
-        ]
-        self.hidden_output_dtypes = [
-            unified_dtype_converter(
-                self.engine.get_binding_dtype(idx), Frameworks.TORCH
-            )
-            for idx in self.hidden_output_binding_indices_in_order
-        ]
-        self.hidden_output_shapes = [
-            (
-                tuple(self.engine.get_binding_shape(idx))
-                if self.engine.has_implicit_batch_dimension
-                else tuple()
-            )
-            for idx in self.hidden_output_binding_indices_in_order
+            self.engine.get_tensor_shape(output_name)
+            for output_name in self.output_names
         ]
 
+        # TODO: Verify what this is for ?
+        # self.hidden_output_dtypes = [
+        #     unified_dtype_converter(
+        #         self.engine.get_binding_dtype(idx), Frameworks.TORCH
+        #     )
+        #     for idx in self.hidden_output_binding_indices_in_order
+        # ]
+
     def _check_initialized(self) -> None:
         if not self.initialized:
             raise RuntimeError("PythonTorchTensorRTModule is not initialized.")
@@ -217,12 +213,12 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                 ), f"Wrong number of inputs, expect {len(self.input_names)} get {len(inputs)}."
 
                 contiguous_inputs: List[torch.Tensor] = [i.contiguous() for i in inputs]
-                bindings: List[Any] = [None] * (
-                    len(self.input_names)
-                    + len(self.output_names)
-                    + len(self.hidden_output_names)
-                )
-
+                bindings = []
+                # [None] * (
+                #     len(self.input_names)
+                #     + len(self.output_names)
+                #     # + len(self.hidden_output_names) # TODO: Verify if this is required
+                # )
                 for i, input_name in enumerate(self.input_names):
                     if not contiguous_inputs[i].is_cuda:
                         logger.warning(
@@ -241,11 +237,9 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                         contiguous_inputs[i].dtype == self.input_dtypes[i]
                     ), f"Dtype mismatch for {i}th input({input_name}). Expect {self.input_dtypes[i]}, got {contiguous_inputs[i].dtype}."
 
-                    idx = self.input_binding_indices_in_order[i]
-                    bindings[idx] = contiguous_inputs[i].data_ptr()
-
-                    self.context.set_binding_shape(
-                        idx, tuple(contiguous_inputs[i].shape)
+                    bindings.append(contiguous_inputs[i].data_ptr())
+                    self.context.set_input_shape(
+                        input_name, tuple(contiguous_inputs[i].shape)
                     )
 
             with (
@@ -258,26 +252,32 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                 # create output tensors
                 outputs: List[torch.Tensor] = []
 
-                for i, idx in enumerate(self.output_binding_indices_in_order):
-                    shape = tuple(self.context.get_binding_shape(idx))
+                for i, output_name in enumerate(self.output_names):
+                    shape = tuple(self.context.get_tensor_shape(output_name))
 
                     output = torch.empty(
                         size=shape,
                         dtype=self.output_dtypes[i],
                         device=torch.cuda.current_device(),
                     )
+                    bindings.append(output.data_ptr())
                     outputs.append(output)
-                    bindings[idx] = output.data_ptr()
 
-                for i, idx in enumerate(self.hidden_output_binding_indices_in_order):
-                    shape = tuple(self.context.get_binding_shape(idx))
+                # TODO: Check what is this for ?
+                # for i, idx in enumerate(self.hidden_output_binding_indices_in_order):
+                #     shape = tuple(self.context.get_binding_shape(idx))
 
-                    output = torch.empty(
-                        size=shape,
-                        dtype=self.hidden_output_dtypes[i],
-                        device=torch.cuda.current_device(),
-                    )
-                    bindings[idx] = output.data_ptr()
+                #     output = torch.empty(
+                #         size=shape,
+                #         dtype=self.hidden_output_dtypes[i],
+                #         device=torch.cuda.current_device(),
+                #     )
+
+            # Assign tensor address appropriately
+            for idx in range(self.engine.num_io_tensors):
+                self.context.set_tensor_address(
+                    self.engine.get_tensor_name(idx), bindings[idx]
+                )
 
             with (
                 torch.autograd.profiler.record_function(
@@ -286,9 +286,7 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                 if self.profiling_enabled
                 else nullcontext()
             ):
-                self.context.execute_async_v2(
-                    bindings, torch.cuda.current_stream().cuda_stream
-                )
+                self.context.execute_async_v3(torch.cuda.current_stream().cuda_stream)
 
             if len(outputs) == 1:
                 return outputs[0]
diff --git a/py/torch_tensorrt/fx/converters/acc_ops_converters.py b/py/torch_tensorrt/fx/converters/acc_ops_converters.py
index 1765077930..f998ddb27a 100644
--- a/py/torch_tensorrt/fx/converters/acc_ops_converters.py
+++ b/py/torch_tensorrt/fx/converters/acc_ops_converters.py
@@ -3,30 +3,27 @@
 import math
 import operator
 import warnings
-from typing import cast, Dict, Optional, Sequence, Tuple, Union
+from typing import Dict, Optional, Sequence, Tuple, Union, cast
 
 import numpy as np
 
 # @manual=//deeplearning/trt/python:py_tensorrt
 import tensorrt as trt
 import torch
-
-from ..converter_registry import tensorrt_converter
-
-from ..tracer.acc_tracer import acc_ops
-from ..types import *  # noqa: F403
 from torch.fx.immutable_collections import immutable_list
 from torch.fx.node import Argument, Target
-
-from ..utils import get_dynamic_dims, unified_dtype_converter, Frameworks
-
-from .converter_utils import *  # noqa: F403
+from torch_tensorrt.fx.converters.impl import activation, convolution
 from torch_tensorrt.fx.passes.lower_basic_pass import (
     trt_transposed_linear,
     trt_transposed_matmul,
 )
 from torch_tensorrt.fx.tracer.acc_tracer.acc_ops import contiguous
-from torch_tensorrt.fx.converters.impl import activation, convolution
+
+from ..converter_registry import tensorrt_converter
+from ..tracer.acc_tracer import acc_ops
+from ..types import *  # noqa: F403
+from ..utils import Frameworks, get_dynamic_dims, unified_dtype_converter
+from .converter_utils import *  # noqa: F403
 
 _LOGGER: logging.Logger = logging.getLogger(__name__)
 
@@ -323,7 +320,7 @@ def acc_ops_pad_with_slice_layer(
     )
 
     layer.set_input(4, value_const)
-    layer.mode = trt.SliceMode.FILL
+    layer.mode = trt.SampleMode.FILL
     set_layer_name(layer, target, name)
 
     return layer.get_output(0)
@@ -840,7 +837,7 @@ def acc_ops_tile(
         shapes = [1] * len(dims)
     strides = [1] * len(dims)
     layer = network.add_slice(input_val, starts, shapes, strides)
-    layer.mode = trt.SliceMode.WRAP
+    layer.mode = trt.SampleMode.WRAP
     set_layer_name(layer, target, name)
 
     if has_dynamic_shape(input_val.shape):  # type: ignore[union-attr]
@@ -3536,9 +3533,9 @@ def acc_ops_interpolate(
                 layer.scales = [1, 1] + list(scale_factor)
 
     if mode.lower() in ["linear", "bilinear", "trilinear"]:
-        layer.resize_mode = trt.ResizeMode.LINEAR
+        layer.resize_mode = trt.InterpolationMode.LINEAR
     else:
-        layer.resize_mode = trt.ResizeMode.NEAREST
+        layer.resize_mode = trt.InterpolationMode.NEAREST
 
     if (align_corners is not None) and align_corners:
         layer.coordinate_transformation = (
diff --git a/py/torch_tensorrt/fx/utils.py b/py/torch_tensorrt/fx/utils.py
index 4202e1e96b..9acc53ffc8 100644
--- a/py/torch_tensorrt/fx/utils.py
+++ b/py/torch_tensorrt/fx/utils.py
@@ -1,18 +1,21 @@
 from enum import Enum
-from typing import Dict, List, Optional, Callable, Union
+from typing import Callable, Dict, List, Optional, Union
+
 import numpy as np
-from packaging import version
 
 # @manual=//deeplearning/trt/python:py_tensorrt
 import tensorrt as trt
 import torch
 from functorch import make_fx
 from functorch.experimental import functionalize
+from torch_tensorrt._utils import sanitized_torch_version
 from torch_tensorrt.fx.passes.lower_basic_pass import (
     replace_op_with_indices,
     run_const_fold,
 )
-from torch_tensorrt._utils import sanitized_torch_version
+
+from packaging import version
+
 from .types import Shape, TRTDataType
 
 
@@ -45,6 +48,11 @@ class Frameworks(Enum):
         Frameworks.TORCH: torch.float32,
         Frameworks.TRT: trt.float32,
     },
+    trt.bool: {
+        Frameworks.NUMPY: bool,
+        Frameworks.TORCH: torch.bool,
+        Frameworks.TRT: trt.bool,
+    },
 }
 
 if trt.__version__ >= "7.0":
@@ -89,10 +97,10 @@ def unified_dtype_converter(
         The equivalent data type in the requested framework.
     """
     assert to in Frameworks, f"Expected valid Framework for translation, got {to}"
-
+    trt_major_version = int(trt.__version__.split(".")[0])
     if dtype in (np.int8, torch.int8, trt.int8):
         return DataTypeEquivalence[trt.int8][to]
-    elif trt.__version__ >= "7.0" and dtype in (np.bool_, torch.bool, trt.bool):
+    elif trt_major_version >= 7 and dtype in (np.bool_, torch.bool, trt.bool):
         return DataTypeEquivalence[trt.bool][to]
     elif dtype in (np.int32, torch.int32, trt.int32):
         return DataTypeEquivalence[trt.int32][to]
diff --git a/tests/py/dynamo/runtime/test_convert_method_to_trt_engine.py b/tests/py/dynamo/runtime/test_convert_method_to_trt_engine.py
index b10cae23fa..46a9ab392c 100644
--- a/tests/py/dynamo/runtime/test_convert_method_to_trt_engine.py
+++ b/tests/py/dynamo/runtime/test_convert_method_to_trt_engine.py
@@ -25,12 +25,10 @@ def forward(self, a, b):
             symbolic_traced_gm, "forward", inputs=[input_data_0, input_data_1]
         )
 
-        # Deserialize the TensorRT engine
-        with trt.Logger() as logger, trt.Runtime(logger) as runtime:
-            engine = runtime.deserialize_cuda_engine(trt_engine_str)
-
         # Inference on TRT Engine
-        py_trt_module = PythonTorchTensorRTModule(engine, ["a", "b"], ["output0"])
+        py_trt_module = PythonTorchTensorRTModule(
+            trt_engine_str, ["a", "b"], ["output0"]
+        )
         trt_output = py_trt_module(input_data_0, input_data_1).cpu()
 
         # Inference on PyTorch model

From 39ca77df3345179ec1560bfb54da5975fc67ca6b Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 21 Mar 2024 16:53:35 -0700
Subject: [PATCH 08/69] chore: more fixes

---
 .../conversion/impl/elementwise/base.py       |  1 +
 .../dynamo/conversion/impl/elementwise/ops.py |  1 +
 .../dynamo/conversion/impl/select.py          | 23 ++++++++++++-------
 .../dynamo/conversion/impl/shape.py           | 14 +++++++----
 .../fx/converters/converter_utils.py          | 10 +++++---
 py/torch_tensorrt/fx/utils.py                 |  7 ++++++
 tests/py/dynamo/conversion/test_erf_aten.py   |  6 +----
 tests/py/dynamo/conversion/test_neg_aten.py   |  6 +----
 8 files changed, 42 insertions(+), 26 deletions(-)

diff --git a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
index 6664a67cfe..615cd0bd62 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
@@ -150,6 +150,7 @@ def convert_binary_elementwise(
     lhs_val, rhs_val = broadcast(
         ctx.net, lhs_val, rhs_val, f"{name}_lhs", f"{name}_rhs"
     )
+
     layer = ctx.net.add_elementwise(lhs_val, rhs_val, op_type)
     set_layer_name(layer, target, name, source_ir)
     output = layer.get_output(0)
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/ops.py b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/ops.py
index d0f6d29482..77ec68629b 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/ops.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/ops.py
@@ -244,6 +244,7 @@ def add(
     lhs_val: Union[TRTTensor, int, float],
     rhs_val: Union[TRTTensor, int, float],
 ) -> TRTTensor:
+
     return convert_binary_elementwise(
         ctx, target, source_ir, name, trt.ElementWiseOperation.SUM, lhs_val, rhs_val
     )
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/select.py b/py/torch_tensorrt/dynamo/conversion/impl/select.py
index db586be65f..955ef2bb76 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/select.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/select.py
@@ -1,5 +1,5 @@
 import logging
-from typing import Optional, Sequence, Union, cast
+from typing import Any, Optional, cast
 
 import numpy as np
 import tensorrt as trt
@@ -9,6 +9,7 @@
 from torch_tensorrt.dynamo.conversion._ConversionContext import ConversionContext
 from torch_tensorrt.dynamo.conversion.converter_utils import (
     broadcastable,
+    cast_trt_tensor,
     get_positive_dim,
     get_trt_tensor,
     to_numpy,
@@ -81,7 +82,7 @@ def index(
     source_ir: Optional[SourceIR],
     name: str,
     input: TRTTensor,
-    index: Sequence[Union[TRTTensor, np.ndarray, torch.Tensor]],
+    index: Any,
 ) -> TRTTensor:
     adv_indx_indices = []
     tensor_indices = []
@@ -90,7 +91,7 @@ def index(
     # is_numpy is a flag to specify if all the indices are numpy or torchTensor.
     # If any is not this flag will be set to False
     _LOGGER.debug(
-        f"Determining whether aten.index constant-index optimization can be invoked"
+        "Determining whether aten.index constant-index optimization can be invoked"
     )
     is_numpy = all(
         isinstance(ind, (torch.Tensor, np.ndarray)) for ind in index if ind is not None
@@ -123,7 +124,7 @@ def index(
         return identity_layer.get_output(0)
     elif len(tensor_indices) == 1:
         indices_tensor = get_trt_tensor(
-            ctx, tensor_indices[0], name + f"_parameter_to_fp32_tensor"
+            ctx, tensor_indices[0], name + "_parameter_to_fp32_tensor"
         )
         index = adv_indx_indices[0]
         _LOGGER.debug(f"The advanced index indices is {adv_indx_indices}")
@@ -204,7 +205,7 @@ def index(
                 cum_adv_index = cum_adv_index + adv_index
                 multiplier = multiplier * input_shape[adv_indx_indices[i]]
             cum_adv_index = get_trt_tensor(
-                ctx, cum_adv_index, name + f"_index_sum_intermediate"
+                ctx, cum_adv_index, name + "_index_sum_intermediate"
             )
         else:
             multiplier = get_trt_tensor(
@@ -255,6 +256,12 @@ def index(
             cum_adv_index_shape_layer, target, name + "_cum_adv_index_shape", source_ir
         )
         cum_adv_index_shape_tensor = cum_adv_index_shape_layer.get_output(0)
+        cum_adv_index_shape_tensor = cast_trt_tensor(
+            ctx,
+            cum_adv_index_shape_tensor,
+            trt.int32,
+            name + "_cum_adv_index_shape_casted",
+        )
         cum_adv_index_shape = cum_adv_index.shape
         _LOGGER.debug(f"The shape for cumulative adv index is {cum_adv_index_shape}")
         # check if all advanced indices are consecutive
@@ -263,7 +270,7 @@ def index(
             adv_indx_count
             == adv_indx_indices[adv_indx_count - 1] - adv_indx_indices[0] + 1
         ):
-            _LOGGER.debug(f"The indices are continuous in this case")
+            _LOGGER.debug("The indices are continuous in this case")
             concat_tensor_reshape.append(
                 get_trt_tensor(ctx, -1, name + "_dynamic_concat")
             )
@@ -287,7 +294,7 @@ def index(
                 source_ir,
             )
             unfold_tensor = regular_index_shuffle_layer.get_output(0)
-            _LOGGER.debug(f"The tensor is unfolded now")
+            _LOGGER.debug("The tensor is unfolded now")
             _LOGGER.debug(f"The unfolded tensor shape is {unfold_tensor.shape}")
 
             # Transpose folded advanced indexed axis to its original location.
@@ -342,7 +349,7 @@ def index(
             reshape_output = unfold_advanced_shuffle_layer.get_output(0)
 
         else:
-            _LOGGER.debug(f"The indices are not continuous in this case")
+            _LOGGER.debug("The indices are not continuous in this case")
             concat_final_tensor = []
             concat_final_tensor.append(cum_adv_index_shape_tensor)
             for i in range(0, rank):
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/shape.py b/py/torch_tensorrt/dynamo/conversion/impl/shape.py
index ef30b186c1..7551d58059 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/shape.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/shape.py
@@ -8,11 +8,14 @@
 from torch.fx.node import Target
 from torch_tensorrt.dynamo._SourceIR import SourceIR
 from torch_tensorrt.dynamo.conversion._ConversionContext import ConversionContext
-from torch_tensorrt.dynamo.conversion.converter_utils import to_numpy
 from torch_tensorrt.dynamo.conversion.impl.elementwise.base import (
     convert_binary_elementwise,
 )
-from torch_tensorrt.fx.converters.converter_utils import set_layer_name
+from torch_tensorrt.fx.converters.converter_utils import (
+    Frameworks,
+    set_layer_name,
+    unified_dtype_converter,
+)
 from torch_tensorrt.fx.types import TRTTensor
 
 
@@ -48,16 +51,17 @@ def get_shape_with_dynamic_shape(
     """
     # Ger real shape info for input_val
     input_shape = ctx.net.add_shape(input_val).get_output(0)
-
+    # input_shape.dtype is int64 in TRT 10.0
+    input_np_dtype = unified_dtype_converter(input_shape.dtype, Frameworks.NUMPY)
     scale_layer = ctx.net.add_constant(
-        input_shape.shape, np.ascontiguousarray(shape, dtype=np.int32)
+        input_shape.shape, np.ascontiguousarray(shape, dtype=input_np_dtype)
     )
     set_layer_name(scale_layer, target, f"{name}_scale")
     scale_res = scale_layer.get_output(0)
 
     length = input_shape.shape[0]
     zero_layer = ctx.net.add_constant(
-        input_shape.shape, to_numpy(torch.zeros((length), dtype=torch.int32))
+        input_shape.shape, np.zeros(length, dtype=input_np_dtype)
     )
     set_layer_name(zero_layer, target, f"{name}_zeros")
 
diff --git a/py/torch_tensorrt/fx/converters/converter_utils.py b/py/torch_tensorrt/fx/converters/converter_utils.py
index 49bf401f58..510d4ef69b 100644
--- a/py/torch_tensorrt/fx/converters/converter_utils.py
+++ b/py/torch_tensorrt/fx/converters/converter_utils.py
@@ -1,8 +1,8 @@
 import operator
 import warnings
+from enum import Enum, auto
 from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
 
-from enum import Enum, auto
 import numpy as np
 
 # @manual=//deeplearning/trt/python:py_tensorrt
@@ -20,7 +20,7 @@
     TRTPluginFieldCollection,
     TRTTensor,
 )
-from ..utils import unified_dtype_converter, Frameworks
+from ..utils import Frameworks, unified_dtype_converter
 
 
 class SourceIR(Enum):
@@ -351,13 +351,17 @@ def prepend_ones(
     # compute the final shape.
     if has_dynamic_shape(tensor.shape):
         tensor_shape_layer = network.add_shape(tensor)
+        tensor_shape = tensor_shape_layer.get_output(0)
+        tensor_shape = type_cast(
+            network, "shape", name + "shape_casted", tensor_shape, trt.int32
+        )
         tensor_shape_layer.name = f"{name}_broadcast_orig_shape"
         prepend_shape_layer = network.add_constant(
             (num_prepend_ones,), np.ones((num_prepend_ones,), dtype=np.int32)
         )
         prepend_shape_layer.name = f"{name}_broadcast_prepend_ones"
         reshape_dim_layer = network.add_concatenation(
-            [prepend_shape_layer.get_output(0), tensor_shape_layer.get_output(0)]
+            [prepend_shape_layer.get_output(0), tensor_shape]
         )
         reshape_dim_layer.axis = 0
         reshape_dim_layer.name = f"{name}_broadcast_final_shape"
diff --git a/py/torch_tensorrt/fx/utils.py b/py/torch_tensorrt/fx/utils.py
index 9acc53ffc8..5bef21b6be 100644
--- a/py/torch_tensorrt/fx/utils.py
+++ b/py/torch_tensorrt/fx/utils.py
@@ -38,6 +38,11 @@ class Frameworks(Enum):
         Frameworks.TORCH: torch.int32,
         Frameworks.TRT: trt.int32,
     },
+    trt.int64: {
+        Frameworks.NUMPY: np.int64,
+        Frameworks.TORCH: torch.int64,
+        Frameworks.TRT: trt.int64,
+    },
     trt.float16: {
         Frameworks.NUMPY: np.float16,
         Frameworks.TORCH: torch.float16,
@@ -104,6 +109,8 @@ def unified_dtype_converter(
         return DataTypeEquivalence[trt.bool][to]
     elif dtype in (np.int32, torch.int32, trt.int32):
         return DataTypeEquivalence[trt.int32][to]
+    elif dtype in (np.int64, torch.int64, trt.int64):
+        return DataTypeEquivalence[trt.int64][to]
     elif dtype in (np.float16, torch.float16, trt.float16):
         return DataTypeEquivalence[trt.float16][to]
     elif dtype in (np.float32, torch.float32, trt.float32):
diff --git a/tests/py/dynamo/conversion/test_erf_aten.py b/tests/py/dynamo/conversion/test_erf_aten.py
index 3f52e436b4..d65788bc85 100644
--- a/tests/py/dynamo/conversion/test_erf_aten.py
+++ b/tests/py/dynamo/conversion/test_erf_aten.py
@@ -22,11 +22,7 @@ def forward(self, input):
                 return torch.ops.aten.erf.default(input)
 
         inputs = [torch.randn(x, dtype=type)]
-        self.run_test(
-            erf(),
-            inputs,
-            precision=type,
-        )
+        self.run_test(erf(), inputs, precision=type, output_dtypes=[type])
 
     @parameterized.expand(
         [
diff --git a/tests/py/dynamo/conversion/test_neg_aten.py b/tests/py/dynamo/conversion/test_neg_aten.py
index c49fc32c23..818d9c5a83 100644
--- a/tests/py/dynamo/conversion/test_neg_aten.py
+++ b/tests/py/dynamo/conversion/test_neg_aten.py
@@ -22,11 +22,7 @@ def forward(self, input):
                 return torch.ops.aten.neg.default(input)
 
         inputs = [torch.randn(x, dtype=type)]
-        self.run_test(
-            neg(),
-            inputs,
-            precision=type,
-        )
+        self.run_test(neg(), inputs, precision=type, output_dtypes=[type])
 
     @parameterized.expand(
         [

From 5431ee37dfe879a9bd2cdfbe3779227228dc630b Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 25 Mar 2024 09:54:01 -0700
Subject: [PATCH 09/69] chore: update trt version

---
 py/requirements.txt | 2 +-
 pyproject.toml      | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/py/requirements.txt b/py/requirements.txt
index 334f1e9c76..19c39c8647 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,5 +5,5 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-tensorrt==8.6.1
+tensorrt>=10.0
 pyyaml
diff --git a/pyproject.toml b/pyproject.toml
index 5c42700ef8..6c4940013d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,7 +8,7 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
-    "tensorrt>=8.6,<8.7",
+    "tensorrt>=10.0",
     "torch >=2.3.0.dev,<2.4.0",
     "pybind11==2.6.2",
     "numpy",
@@ -42,7 +42,7 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch >=2.3.0.dev,<2.4.0",
-    "tensorrt>=8.6,<8.7",
+    "tensorrt>=10.0",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",

From 0c03de5ca11d7c77adf3ce8cbe609bd832eced4e Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 25 Mar 2024 18:51:39 -0700
Subject: [PATCH 10/69] chore: more updates

---
 core/conversion/converters/converter_util.cpp    |  9 +++++++--
 core/conversion/converters/converter_util.h      |  3 +++
 core/conversion/converters/impl/constant_pad.cpp |  9 +++------
 core/conversion/converters/impl/conv_deconv.cpp  |  2 +-
 core/conversion/converters/impl/cumsum.cpp       |  2 +-
 core/conversion/converters/impl/expand.cpp       |  9 ++++-----
 core/conversion/converters/impl/interpolate.cpp  |  2 +-
 core/conversion/converters/impl/linear.cpp       |  7 +++++--
 core/conversion/converters/impl/select.cpp       | 13 +++++--------
 9 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/core/conversion/converters/converter_util.cpp b/core/conversion/converters/converter_util.cpp
index 3dcd2e9d80..39afe9945f 100644
--- a/core/conversion/converters/converter_util.cpp
+++ b/core/conversion/converters/converter_util.cpp
@@ -39,6 +39,12 @@ nvinfer1::ITensor* addPadding(
   }
 }
 
+nvinfer1::ITensor* getShapeOutput(ConversionCtx* ctx, nvinfer1::ITensor* input_tensor, const std::string& name) {
+  nvinfer1::ITensor* input_shape = ctx->net->addShape(*input_tensor)->getOutput(0);
+  input_shape = castITensor(ctx, input_shape, nvinfer1::DataType::kINT32, name);
+  return input_shape;
+}
+
 nvinfer1::ITensor* addUnpadding(
     ConversionCtx* ctx,
     const torch::jit::Node* n,
@@ -134,7 +140,7 @@ nvinfer1::ILayer* add_elementwise(
       }
       auto otherStaticShapeMask = tensor_to_const(ctx, thOtherStaticShapeMask);
       auto otherDynamicShapeMask = tensor_to_const(ctx, thOtherDynamicShapeMask);
-      auto selfShape = ctx->net->addShape(*self)->getOutput(0);
+      nvinfer1::ITensor* selfShape = getShapeOutput(ctx, self, std::string(name + "_shape_cast").c_str());
       // size of dynamic dimension of other need to the same as that of
       // corresponding dimension of self
       auto otherDynamicShape =
@@ -348,7 +354,6 @@ nvinfer1::ITensor* normalize_indices(
   auto neg_itensor = tensor_to_const(ctx, neg);
   // find the indices that = -1
   auto signs = clamp(ctx, indices, neg_itensor, zero_itensor, "clamp layer for " + name);
-
   // get the inputDim value where indices == -1, else 0
   auto mul = add_elementwise(ctx, nvinfer1::ElementWiseOperation::kPROD, signs, input_dim, "prod layer for " + name);
   TORCHTRT_CHECK(mul, "Unable to create mul layer in normalize_indices");
diff --git a/core/conversion/converters/converter_util.h b/core/conversion/converters/converter_util.h
index 3342302431..ad57c476e1 100644
--- a/core/conversion/converters/converter_util.h
+++ b/core/conversion/converters/converter_util.h
@@ -62,6 +62,9 @@ nvinfer1::ITensor* castITensor(
     nvinfer1::DataType dtype,
     const std::string& layer_name_prefix = "");
 
+// Get the shape of the input tensor and cast it to INT32 type
+nvinfer1::ITensor* getShapeOutput(ConversionCtx* ctx, nvinfer1::ITensor* input_tensor, const std::string& name = "");
+
 // Freeze an at::Tensor in a IConstant layer
 nvinfer1::ITensor* tensor_to_const(ConversionCtx* ctx, at::Tensor t, const std::string& name = std::string());
 
diff --git a/core/conversion/converters/impl/constant_pad.cpp b/core/conversion/converters/impl/constant_pad.cpp
index 20a091e730..42947e1c03 100644
--- a/core/conversion/converters/impl/constant_pad.cpp
+++ b/core/conversion/converters/impl/constant_pad.cpp
@@ -60,13 +60,10 @@ auto constant_pad_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns
 
        if (ctx->input_is_dynamic) {
          // build the size using inetwork layers
-         auto shape_layer = ctx->net->addShape(*in);
-         TORCHTRT_CHECK(shape_layer, "Unable to create shape layer from node: " << *n);
-         shape_layer->setName((util::node_info(n) + "_shape").c_str());
          auto total_padding_itensor = tensor_to_const(ctx, torch::tensor(total_padding, torch::kInt32));
-
-         auto add_layer = ctx->net->addElementWise(
-             *shape_layer->getOutput(0), *total_padding_itensor, nvinfer1::ElementWiseOperation::kSUM);
+         nvinfer1::ITensor* shapeOutput = getShapeOutput(ctx, in, (util::node_info(n) + "_shape").c_str());
+         auto add_layer =
+             ctx->net->addElementWise(*shapeOutput, *total_padding_itensor, nvinfer1::ElementWiseOperation::kSUM);
          TORCHTRT_CHECK(add_layer, "Unable to create add layer from node: " << *n);
          add_layer->setName((util::node_info(n) + "_add").c_str());
          slice_layer->setInput(2, *add_layer->getOutput(0));
diff --git a/core/conversion/converters/impl/conv_deconv.cpp b/core/conversion/converters/impl/conv_deconv.cpp
index bf0df00c64..aa7acc9cc4 100644
--- a/core/conversion/converters/impl/conv_deconv.cpp
+++ b/core/conversion/converters/impl/conv_deconv.cpp
@@ -33,7 +33,7 @@ nvinfer1::ILayer* add_bias_layer(
     nvinfer1::Dims& input_dims,
     nvinfer1::Dims& output_padding,
     Weights& bias) {
-  nvinfer1::ITensor* input_shape = ctx->net->addShape(*input_tensor)->getOutput(0);
+  nvinfer1::ITensor* input_shape = getShapeOutput(ctx, input_tensor, std::string("bias_shape_cast").c_str());
   // Add padding layer
   nvinfer1::ITensor* start;
   nvinfer1::ITensor* totalPadding;
diff --git a/core/conversion/converters/impl/cumsum.cpp b/core/conversion/converters/impl/cumsum.cpp
index 5c518fd635..f856ca5d4e 100644
--- a/core/conversion/converters/impl/cumsum.cpp
+++ b/core/conversion/converters/impl/cumsum.cpp
@@ -36,7 +36,7 @@ auto cumsum_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns().pat
          torch::Tensor axis = torch::tensor(input_dims.d[dim], torch::kInt32);
          tripLimit = tensor_to_const(ctx, axis);
        } else {
-         nvinfer1::ITensor* inpShape = ctx->net->addShape(*in)->getOutput(0);
+         nvinfer1::ITensor* inpShape = getShapeOutput(ctx, in);
          torch::Tensor dimValue = torch::tensor(dim, torch::kInt32);
          nvinfer1::ITensor* axis = tensor_to_const(ctx, dimValue);
          tripLimit = ctx->net->addGather(*inpShape, *axis, 0)->getOutput(0);
diff --git a/core/conversion/converters/impl/expand.cpp b/core/conversion/converters/impl/expand.cpp
index 6b22fea8d4..0e68768e15 100644
--- a/core/conversion/converters/impl/expand.cpp
+++ b/core/conversion/converters/impl/expand.cpp
@@ -19,11 +19,11 @@ nvinfer1::ITensor* concat(int max_rank, int old_rank, ConversionCtx* ctx, nvinfe
   if (max_rank - old_rank > 0) {
     torch::Tensor thOne = torch::tensor(std::vector<int32_t>(max_rank - old_rank, 1), torch::kInt32);
     auto one_tensor = tensor_to_const(ctx, thOne);
-    auto in_shape_tensor = ctx->net->addShape(*tensor)->getOutput(0);
+    auto in_shape_tensor = getShapeOutput(ctx, tensor);
     nvinfer1::ITensor* const args[2] = {one_tensor, in_shape_tensor};
     return ctx->net->addConcatenation(args, 2)->getOutput(0);
   } else { // max_rank - old_rank == 0
-    return ctx->net->addShape(*tensor)->getOutput(0);
+    return getShapeOutput(ctx, tensor);
   }
 }
 
@@ -221,8 +221,7 @@ auto expand_registrations TORCHTRT_UNUSED =
                auto targetDims = targetTensor->getDimensions();
                LOG_DEBUG("(expand_as layer) Expand input from " << input_dims << " to " << targetDims);
                if (ctx->input_is_dynamic) {
-                 return add_expand_dynamic(
-                     ctx, n, in, ctx->net->addShape(*targetTensor)->getOutput(0), targetDims, false);
+                 return add_expand_dynamic(ctx, n, in, getShapeOutput(ctx, targetTensor), targetDims, false);
                } else {
                  return add_expand(ctx, n, in, targetDims);
                }
@@ -357,7 +356,7 @@ auto expand_registrations TORCHTRT_UNUSED =
                if (ctx->input_is_dynamic) {
                  auto start_tensor = tensor_to_const(ctx, torch::tensor(start_vec, torch::kInt32));
 
-                 auto expand_output_shape = ctx->net->addShape(*expand->getOutput(0))->getOutput(0);
+                 auto expand_output_shape = getShapeOutput(ctx, expand->getOutput(0));
                  std::vector<int64_t> repeat_const_vec(repeat_shape_dims.nbDims, 1);
                  repeat_const_vec[dim + 1] = repeats;
                  auto repeat_const = tensor_to_const(ctx, torch::tensor(repeat_const_vec, torch::kInt32));
diff --git a/core/conversion/converters/impl/interpolate.cpp b/core/conversion/converters/impl/interpolate.cpp
index 61721e3d2c..748e3c9e1a 100644
--- a/core/conversion/converters/impl/interpolate.cpp
+++ b/core/conversion/converters/impl/interpolate.cpp
@@ -91,7 +91,7 @@ void resize_layer_size(
 
     auto dynamic_shape_mask = tensor_to_const(ctx, th_dynamic_shape_mask);
     auto static_shape_mask = tensor_to_const(ctx, th_static_shape_mask);
-    auto input_shape = ctx->net->addShape(*in)->getOutput(0);
+    nvinfer1::ITensor* input_shape = getShapeOutput(ctx, in);
     auto dynamic_shape =
         ctx->net->addElementWise(*input_shape, *dynamic_shape_mask, nvinfer1::ElementWiseOperation::kPROD)
             ->getOutput(0);
diff --git a/core/conversion/converters/impl/linear.cpp b/core/conversion/converters/impl/linear.cpp
index 39f9cb055d..0e4452dec0 100644
--- a/core/conversion/converters/impl/linear.cpp
+++ b/core/conversion/converters/impl/linear.cpp
@@ -40,11 +40,14 @@ auto linear_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns().pat
          in = in_shuffle->getOutput(0);
        }
 
-       // Convert w_tensor to ITensor
+       // Convert w_tensor to ITensor and broadcast 2d to 4d if needed
        auto weight = args[1].IValue()->toTensor();
        auto weight_tensor = tensor_to_const(ctx, weight, util::node_info(n) + "_weight");
+       auto weight_shape = util::toVec(weight_tensor->getDimensions());
+       weight_tensor = addPadding(ctx, n, weight_tensor, in->getDimensions().nbDims, false, false);
+
        auto mm_layer = ctx->net->addMatrixMultiply(
-           *in, nvinfer1::MatrixOperation::kNONE, *weight_tensor, nvinfer1::MatrixOperation::kNONE);
+           *in, nvinfer1::MatrixOperation::kNONE, *weight_tensor, nvinfer1::MatrixOperation::kTRANSPOSE);
 
        TORCHTRT_CHECK(mm_layer, "Unable to create linear layer from node: " << *n);
        mm_layer->setName(util::node_info(n).c_str());
diff --git a/core/conversion/converters/impl/select.cpp b/core/conversion/converters/impl/select.cpp
index 8334205879..d6b49aa609 100644
--- a/core/conversion/converters/impl/select.cpp
+++ b/core/conversion/converters/impl/select.cpp
@@ -368,8 +368,7 @@ auto select_registrations TORCHTRT_UNUSED =
                  int rank = inDims.nbDims;
                  LOG_WARNING("If indices include negative values, the exported graph will produce incorrect results.");
                  int adv_idx_count = adv_idx_indices.size();
-                 auto in_shape_itensor = ctx->net->addShape(*in)->getOutput(0);
-
+                 nvinfer1::ITensor* in_shape_itensor = getShapeOutput(ctx, in);
                  std::vector<nvinfer1::ITensor*> dim_tensor_list;
                  for (int i = 0; i < rank; i++) {
                    auto dim_tensor =
@@ -401,7 +400,7 @@ auto select_registrations TORCHTRT_UNUSED =
                  //  t: [x_1, x_2, ..., x_m, y_1, y_2, ..., y_n] -> t: [x_1*x_2* ...*x_m, y_1*y_2* ...*y_n]
                  nvinfer1::ITensor* flatten_tensor = NULL;
                  {
-                   auto shuffle_shape_tensor = ctx->net->addShape(*shuffle_out)->getOutput(0);
+                   nvinfer1::ITensor* shuffle_shape_tensor = getShapeOutput(ctx, shuffle_out);
                    auto d0 = tensor_to_const(ctx, torch::tensor({1}, torch::kInt32));
                    for (int i = 0; i < adv_idx_count; i++) {
                      auto dim_tensor =
@@ -479,7 +478,7 @@ auto select_registrations TORCHTRT_UNUSED =
 
                  nvinfer1::ITensor* reshape_output = NULL;
                  {
-                   auto cum_adv_index_shape_tensor = ctx->net->addShape(*cum_adv_index)->getOutput(0);
+                   nvinfer1::ITensor* cum_adv_index_shape_tensor = getShapeOutput(ctx, cum_adv_index);
                    // check if all advanced indices are consecutive.
                    if (adv_idx_count == (adv_idx_indices[adv_idx_count - 1] - adv_idx_indices[0] + 1)) {
                      // unfold regular index axes
@@ -559,8 +558,7 @@ auto select_registrations TORCHTRT_UNUSED =
                bool dynamic_shape = ctx->input_is_dynamic;
                auto input_dim = in->getDimensions();
                // add Shape Tensor
-               auto ishape_layer = ctx->net->addShape(*in);
-               auto ishape_tensor = ishape_layer->getOutput(0); // input shape
+               nvinfer1::ITensor* ishape_tensor = getShapeOutput(ctx, in);
                std::string node_name = n->outputs()[0]->debugName().c_str();
 
                int startIdx = 0;
@@ -605,6 +603,7 @@ auto select_registrations TORCHTRT_UNUSED =
                    stride_.d[i] = 1;
                  }
                }
+
                if (!dynamic_shape) {
                  auto slice_layer = ctx->net->addSlice(*in, start_, size_, stride_);
                  LOG_DEBUG("start_:" << start_);
@@ -617,7 +616,6 @@ auto select_registrations TORCHTRT_UNUSED =
                  LOG_DEBUG("Using dynamic version of slice");
                  // start tensor
                  at::Tensor start_tensor = torch::zeros({nbdims}).to(torch::kI32);
-                 ;
                  start_tensor[axis] = startIdx;
                  auto start_itensor = tensor_to_const(ctx, start_tensor);
 
@@ -647,7 +645,6 @@ auto select_registrations TORCHTRT_UNUSED =
 
                  // calculate size
                  auto size_itensor = get_slice_size(ctx, out_start, out_end, stride_itensor, nbdims, node_name);
-
                  // update slice layer
                  auto slice_layer = ctx->net->addSlice(*in, start_, size_, stride_);
                  slice_layer->setInput(1, *out_start); // start

From 982dbd25b3ffd2f4edbf5bd8c2fc321f2a35ab56 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 25 Mar 2024 11:57:39 -0700
Subject: [PATCH 11/69] parent f39e89e3964bc3d6ea3a6989b1e4099e1bb3e6dd author
 Dheeraj Peri <peri.dheeraj@gmail.com> 1711393059 -0700 committer Dheeraj Peri
 <peri.dheeraj@gmail.com> 1711393072 -0700

chore: minor updates

chore: Fix save failures

chore: minor fixes

chore: remove duplicate bert test case

chore: remove comments

chore: add load api

chore: minor updates

chore: minor updates

chore: minor updates

chore: more updates
---
 core/runtime/TRTEngine.cpp                    |   2 +-
 docsrc/user_guide/saving_models.rst           |  71 +++++----
 py/torch_tensorrt/_compile.py                 | 111 +++++++++++++-
 py/torch_tensorrt/dynamo/_compiler.py         |   9 +-
 py/torch_tensorrt/dynamo/_defaults.py         |   1 -
 py/torch_tensorrt/dynamo/_exporter.py         | 142 +++++++++++-------
 py/torch_tensorrt/dynamo/_settings.py         |   3 -
 .../lowering/test_aten_lowering_passes.py     |   4 +-
 tests/py/dynamo/models/test_export_serde.py   | 104 ++++++++-----
 tests/py/dynamo/models/test_models_export.py  |  63 +-------
 tests/py/dynamo/models/test_output_format.py  |  62 --------
 11 files changed, 311 insertions(+), 261 deletions(-)
 delete mode 100644 tests/py/dynamo/models/test_output_format.py

diff --git a/core/runtime/TRTEngine.cpp b/core/runtime/TRTEngine.cpp
index 92e5d7a8ff..7a046f6d94 100644
--- a/core/runtime/TRTEngine.cpp
+++ b/core/runtime/TRTEngine.cpp
@@ -241,7 +241,7 @@ std::string TRTEngine::to_str() const {
               exec_ctx->getEngine().getTensorDataType(out_binding_names[o].c_str()))
        << std::endl;
   }
-  ss << "  }" << std::endl;
+  ss << "  ]" << std::endl;
   ss << "  Device: " << device_info << std::endl;
   ss << "  Hardware Compatibility: " << (hardware_compatible ? "Enabled" : "Disabled") << std::endl;
   // clang-format on
diff --git a/docsrc/user_guide/saving_models.rst b/docsrc/user_guide/saving_models.rst
index 8379b44f0f..73fee6e23c 100644
--- a/docsrc/user_guide/saving_models.rst
+++ b/docsrc/user_guide/saving_models.rst
@@ -9,23 +9,22 @@ Saving models compiled with Torch-TensorRT
    :undoc-members:
    :show-inheritance:
 
-Saving models compiled with Torch-TensorRT varies slightly with the `ir` that has been used for compilation.
+Saving models compiled with Torch-TensorRT can be done using `torch_tensorrt.save` API.
 
 Dynamo IR
 -------------
 
-The output type of `ir=dynamo` compilation of Torch-TensorRT is `torch.export.ExportedProgram` object by default. 
-In addition, we provide a new parameter `output_format` in the `CompilationSetting` object provided before compilation.
-The `output_format` can take the following options 
+The output type of `ir=dynamo` compilation of Torch-TensorRT is `torch.fx.GraphModule` object by default. 
+We can save this object in either `TorchScript` (`torch.jit.ScriptModule`) or `ExportedProgram` (`torch.export.ExportedProgram`) formats by 
+specifying the `output_format` flag. Here are the options `output_format` will accept
 
-* `exported_program` (or) `ep` : This is the default. Returns an ExportedProgram 
-* `torchscript` (or) `ts` : This returns a TorchScript module
-* `graph_module` (or) `fx` : This returns a torch.fx.GraphModule which can be traced into Torchscript to save to disk.
+* `exported_program` : This is the default. We perform transformations on the graphmodule first and use `torch.export.save` to save the module.
+* `torchscript` : We trace the graphmodule via `torch.jit.trace` and save it via `torch.jit.save`.
 
-a) Torchscript
+a) ExportedProgram
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-If you set the `output_format="torchscript"`, this will return a `ScriptModule` which can be serialized via torch.jit.save
+Here's an example usage
 
 .. code-block:: python
 
@@ -34,19 +33,17 @@ If you set the `output_format="torchscript"`, this will return a `ScriptModule`
 
     model = MyModel().eval().cuda()
     inputs = [torch.randn((1, 3, 224, 224)).cuda()]
-    # trt_ts is a torch.jit.ScriptModule object
-    trt_ts = torch_tensorrt.compile(model, ir="dynamo", inputs, output_format="torchscript")
-    torch.jit.save(trt_ts, "trt_model.ts")
+    # trt_ep is a torch.fx.GraphModule object
+    trt_gm = torch_tensorrt.compile(model, ir="dynamo", inputs) 
+    torchtrt.save(trt_gm, "trt.ep", inputs=inputs)
 
     # Later, you can load it and run inference
-    model = torch.jit.load("trt_model.ts").cuda()
+    model = torch.export.load("trt.ep").module()
     model(*inputs)
 
-b) ExportedProgram
+b) Torchscript
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-`torch.export.ExportedProgram`, a new format introduced in Pytorch 2.X is the default return type of Torch-TensorRT compilation.
-
 .. code-block:: python
 
     import torch
@@ -54,30 +51,14 @@ b) ExportedProgram
 
     model = MyModel().eval().cuda()
     inputs = [torch.randn((1, 3, 224, 224)).cuda()]
-    # trt_ep is a torch.export.ExportedProgram object
-    trt_ep = torch_tensorrt.compile(model, ir="dynamo", inputs) 
-    torch.export.save(trt_ep, "trt_model.ep")
+    # trt_gm is a torch.fx.GraphModule object
+    trt_gm = torch_tensorrt.compile(model, ir="dynamo", inputs)
+    torch_tensorrt.save(trt_gm, "trt.ts", output_format="torchscript", inputs=inputs)
 
     # Later, you can load it and run inference
-    model = torch.export.load("trt_model.ep")
+    model = torch.jit.load("trt.ts").cuda()
     model(*inputs)
 
-c) GraphModule
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-We can also return a `torch.fx.GraphModule` object as the output of Torch-TensorRT compilation by setting `output_format="graph_module"`.
-Internally, partitioning, lowering, conversion phases operate using GraphModule objects. These can be either traced into a Torchscript modules or 
-exported into `ExportedProgram` objects
-
-.. code-block:: python
-
-    import torch
-    import torch_tensorrt
-
-    model = MyModel().eval().cuda()
-    inputs = [torch.randn((1, 3, 224, 224)).cuda()]
-    # trt_gm is a torch.fx.GraphModule object
-    trt_gm = torch_tensorrt.compile(model, ir="dynamo", inputs, output_format="graph_module") 
 
 Torchscript IR
 -------------
@@ -99,3 +80,21 @@ For `ir=ts`, this behavior stays the same in 2.X versions as well.
   model = torch.jit.load("trt_model.ts").cuda()
   model(*inputs)
 
+
+Loading the models
+--------------------
+
+We can load torchscript or exported_program models using `torch.jit.load` and `torch.export.load` APIs from PyTorch directly.
+Alternatively, we provide a light wrapper `torch_tensorrt.load(file_path)` which can load either of the above model types.
+
+Here's an example usage
+
+.. code-block:: python
+
+    import torch
+    import torch_tensorrt
+
+    # file_path can be trt.ep or trt.ts file obtained via saving the model (refer to the above section)
+    inputs = [torch.randn((1, 3, 224, 224)).cuda()]
+    model = torch_tensorrt.load(<file_path>).module()
+    model(*inputs)
\ No newline at end of file
diff --git a/py/torch_tensorrt/_compile.py b/py/torch_tensorrt/_compile.py
index 9dd816e633..7acf83124a 100644
--- a/py/torch_tensorrt/_compile.py
+++ b/py/torch_tensorrt/_compile.py
@@ -6,6 +6,7 @@
 
 import torch
 import torch.fx
+import torch_tensorrt.dynamo
 import torch_tensorrt.ts
 from torch_tensorrt._enums import dtype
 from torch_tensorrt._Input import Input
@@ -26,10 +27,7 @@
 
 logger = logging.getLogger(__name__)
 
-__all__ = [
-    "compile",
-    "convert_method_to_trt_engine",
-]
+__all__ = ["compile", "convert_method_to_trt_engine", "save", "load"]
 
 
 def _non_fx_input_interface(
@@ -332,3 +330,108 @@ def convert_method_to_trt_engine(
         )
     else:
         raise RuntimeError("Module is an unknown format or the ir requested is unknown")
+
+
+def load(file_path: str = "") -> Any:
+    """
+    Load either a Torchscript model or ExportedProgram. Autodetect the type using
+    try, except
+    """
+    try:
+        logger.debug("Loading the provided file using torch.jit.load()")
+        ts_module = torch.jit.load(file_path)
+        return ts_module
+    except Exception:
+        logger.debug(
+            "Loading the provided file via torch.jit.load() failed with the following error",
+            exc_info=True,
+        )
+        pass
+
+    try:
+        logger.debug("Loading the provided file using torch.export.load()")
+        exp_program = torch.export.load(file_path)
+        return exp_program
+    except Exception:
+        logger.debug(
+            "Loading the provided file via torch.export.load() failed with the following error",
+            exc_info=True,
+        )
+        raise ValueError(
+            "The file doesn't correspond to a valid Torchscript module or ExportedProgram. Please verify the file path."
+        )
+
+
+def save(
+    module: Any,
+    file_path: str = "",
+    *,
+    output_format: str = "exported_program",
+    inputs: Optional[Sequence[torch.Tensor]] = None,
+    retrace: bool = False,
+) -> None:
+    """
+    Save the model to disk in the specified output format.
+    Arguments:
+        module : Compiled Torch-TensorRT module (Options include torch.jit.ScriptModule | torch.export.ExportedProgram | torch.fx.GraphModule)
+        inputs (torch.Tensor): Torch input tensors
+        output_format: Format to save the model. Options include exported_program | torchscript.
+        retrace: When the module type is a fx.GraphModule, this option re-exports the graph using torch.export.export(strict=False) to save it.
+                This flag is experimental for now.
+    """
+    module_type = _parse_module_type(module)
+    accepted_formats = {"exported_program", "torchscript"}
+    if inputs is not None and not all(
+        isinstance(input, torch.Tensor) for input in inputs
+    ):
+        raise ValueError(
+            "Not all inputs provided are torch.tensors. Please provide torch.tensors as inputs"
+        )
+    if output_format not in accepted_formats:
+        raise ValueError(
+            f"Provided output_format {output_format} is not supported. Supported options are exported_program | torchscript"
+        )
+    if not file_path:
+        raise ValueError("File path cannot be empty. Please provide a valid file path")
+
+    if module_type == _ModuleType.nn:
+        raise ValueError(
+            "Input model is of type nn.Module. Saving nn.Module directly is not supported. Supported model types torch.jit.ScriptModule | torch.fx.GraphModule | torch.export.ExportedProgram."
+        )
+    elif module_type == _ModuleType.ts:
+        if output_format == "exported_program":
+            raise ValueError(
+                "Provided model is a torch.jit.ScriptModule but the output_format specified is exported_program. Please verify the output_format"
+            )
+        else:
+            torch.jit.save(module, file_path)
+    elif module_type == _ModuleType.ep:
+        if output_format == "torchscript":
+            raise ValueError(
+                "Provided model is a torch.export.ExportedProgram but the output_format specified is torchscript. Please verify the output_format"
+            )
+        else:
+            torch.export.save(module, file_path)
+    elif module_type == _ModuleType.fx:
+        if inputs is None:
+            raise ValueError(
+                "Provided model is a torch.fx.GraphModule however the inputs are empty. Please provide valid torch.tensors as inputs to trace and save the model"
+            )
+        # The module type is torch.fx.GraphModule
+        if output_format == "torchscript":
+            module_ts = torch.jit.trace(module, inputs)
+            torch.jit.save(module_ts, file_path)
+        else:
+            if not retrace:
+                from torch_tensorrt.dynamo._exporter import export
+
+                exp_program = export(module, inputs)
+                torch.export.save(exp_program, file_path)
+            else:
+                from torch._higher_order_ops.torchbind import enable_torchbind_tracing
+
+                with enable_torchbind_tracing():
+                    exp_program = torch.export.export(
+                        module, tuple(inputs), strict=False
+                    )
+                    torch.export.save(exp_program, file_path)
diff --git a/py/torch_tensorrt/dynamo/_compiler.py b/py/torch_tensorrt/dynamo/_compiler.py
index 6312532f1c..b321eabcb2 100644
--- a/py/torch_tensorrt/dynamo/_compiler.py
+++ b/py/torch_tensorrt/dynamo/_compiler.py
@@ -30,7 +30,6 @@
     MIN_BLOCK_SIZE,
     NUM_AVG_TIMING_ITERS,
     OPTIMIZATION_LEVEL,
-    OUTPUT_FORMAT,
     PASS_THROUGH_BUILD_FAILURES,
     PRECISION,
     REFIT,
@@ -48,7 +47,6 @@
     dryrun_stats_display,
     parse_non_trt_nodes,
 )
-from torch_tensorrt.dynamo._exporter import export
 from torch_tensorrt.dynamo.conversion import (
     CompilationSettings,
     UnsupportedOperatorException,
@@ -102,9 +100,8 @@ def compile(
     enable_experimental_decompositions: bool = ENABLE_EXPERIMENTAL_DECOMPOSITIONS,
     dryrun: bool = DRYRUN,
     hardware_compatible: bool = HARDWARE_COMPATIBLE,
-    output_format: str = OUTPUT_FORMAT,
     **kwargs: Any,
-) -> Union[ExportedProgram, torch.jit.ScriptModule, torch.fx.GraphModule]:
+) -> torch.fx.GraphModule:
     """Compile a TorchScript module for NVIDIA GPUs using TensorRT
 
     Takes a existing TorchScript module and a set of settings to configure the compiler
@@ -246,14 +243,12 @@ def compile(
         "dla_global_dram_size": dla_global_dram_size,
         "dryrun": dryrun,
         "hardware_compatible": hardware_compatible,
-        "output_format": output_format,
     }
 
     settings = CompilationSettings(**compilation_options)
     logger.info("Compilation Settings: %s\n", settings)
     trt_gm = compile_module(gm, inputs, settings)
-    trt_result = export(trt_gm, torch_inputs, output_format)
-    return trt_result
+    return trt_gm
 
 
 def compile_module(
diff --git a/py/torch_tensorrt/dynamo/_defaults.py b/py/torch_tensorrt/dynamo/_defaults.py
index ec038c0dba..3d48ab3def 100644
--- a/py/torch_tensorrt/dynamo/_defaults.py
+++ b/py/torch_tensorrt/dynamo/_defaults.py
@@ -26,7 +26,6 @@
 REQUIRE_FULL_COMPILATION = False
 DRYRUN = False
 HARDWARE_COMPATIBLE = False
-OUTPUT_FORMAT = "exported_program"
 
 
 def default_device() -> Device:
diff --git a/py/torch_tensorrt/dynamo/_exporter.py b/py/torch_tensorrt/dynamo/_exporter.py
index c7e2f37795..e9d166a1cc 100644
--- a/py/torch_tensorrt/dynamo/_exporter.py
+++ b/py/torch_tensorrt/dynamo/_exporter.py
@@ -1,3 +1,4 @@
+import copy
 import operator
 from typing import Any, Dict, Sequence, Tuple, cast
 
@@ -6,8 +7,11 @@
 from torch._subclasses.fake_tensor import FakeTensor
 from torch.export import ExportedProgram, ExportGraphSignature
 from torch.export.exported_program import (
+    CustomObjArgument,
     InputKind,
     InputSpec,
+    ModuleCallEntry,
+    ModuleCallSignature,
     OutputKind,
     OutputSpec,
     TensorArgument,
@@ -18,27 +22,16 @@
 def export(
     gm: torch.fx.GraphModule,
     inputs: Sequence[torch.Tensor],
-    output_format: str,
 ) -> ExportedProgram:
     """Export the result of TensorRT compilation into the desired output format.
 
     Arguments:
         gm (torch.fx.GraphModule): Compiled Torch-TensorRT module, generated by ``torch_tensorrt.dynamo.compile``
         inputs (torch.Tensor): Torch input tensors
-        output_format (str): Output format of the result of TRT compilation. Options include "exported_program" (or) "ep" | "torchscript" (or) "ts" | "graph_module" (or) "fx". Default is "exported_program"
     """
-    if output_format == "torchscript" or output_format == "ts":
-        return torch.jit.trace(gm, inputs)
-    elif output_format == "exported_program" or output_format == "ep":
-        patched_module = transform(gm, inputs)
-        exp_program = create_trt_exp_program(patched_module)
-        return exp_program
-    elif output_format == "graph_module" or output_format == "fx":
-        return gm
-    else:
-        raise ValueError(
-            f"Invalid output format {output_format} specified. Supported options include exported_program (or) ep | torchscript (or) ts | graph_module (or) fx"
-        )
+    patched_module = transform(gm, inputs)
+    exp_program = create_trt_exp_program(patched_module)
+    return exp_program
 
 
 def transform(
@@ -55,6 +48,10 @@ def transform(
 
     Returns an inlined torch.fx.GraphModule
     """
+    # Make a copy the graph since this function transforms the input graph and changes it's attributes.
+    # This transformed graph is meant to be consumed by `create_trt_exp_program`
+    gm = copy.deepcopy(gm)
+
     # Run shape analysis
     _, outputs_map = partitioning.run_shape_analysis(gm, inputs)
 
@@ -72,7 +69,9 @@ def transform(
     return gm
 
 
-def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule:
+def lift(
+    gm: torch.fx.GraphModule, graph_signature: Any
+) -> Tuple[torch.fx.GraphModule, ExportGraphSignature, Dict[str, Any], Dict[str, Any]]:
     """
     Given an unlifted fx.GraphModule, lift all parameters, buffers into placeholders.
     Arguments:
@@ -86,6 +85,7 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
     # exp_program.state_dict contains parameters and buffers whereas a graph_module's state_dict
     # has all parameters registered as torch.tensors.
     state_dict = gm.state_dict()
+    constants = {}
 
     fake_mode = detect_fake_mode(
         tuple(node.meta["val"] for node in gm.graph.nodes if node.op == "placeholder")
@@ -100,52 +100,69 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
             break
 
     # At first the user_inputs are only present in the graph_signature.input_specs and hence non_user_input_idx=0
-    # The input_specs should be of the form [params, buffers, constant_tensors, user_inputs]
+    # The input_specs should be of the form [params, buffers, constant_tensors, custom_obj, user_inputs]
     non_user_input_idx = 0
     for node in gm.graph.nodes:
         if node.op == "get_attr":
-            if node.target not in state_dict:
-                raise ValueError(
-                    f"The get_attr node : {node.name} with target: {node.target} value could not be found in state_dict. Please check the input exported_program's graphmodule parameters."
-                )
 
-            constant_tensor = state_dict[node.target]
-            input_kind = InputKind.CONSTANT_TENSOR
+            lift_val = None
+            input_kind = None
 
-            # state_dict has these parameters/buffers as torch.Tensors. We override them as torch.nn.Parameter/torch.Tensors respectively.
-            for name, _ in gm.named_parameters():
-                if node.target == name:
-                    input_kind = InputKind.PARAMETER
-                    state_dict[name] = torch.nn.Parameter(state_dict[name])
-                    break
-            for name, _ in gm.named_buffers():
-                if node.target == name:
-                    input_kind = InputKind.BUFFER
-                    break
+            if node.target not in state_dict:
+                constants[node.target] = getattr(gm, node.target)
+                input_kind = InputKind.CUSTOM_OBJ
+                lift_val = constants[node.target]
+            else:
+                lift_val = state_dict[node.target]
+
+                input_kind = InputKind.CONSTANT_TENSOR
+
+                # state_dict has these parameters/buffers as torch.Tensors. We override them as torch.nn.Parameter/torch.Tensors respectively.
+                for name, _ in gm.named_parameters():
+                    if node.target == name:
+                        input_kind = InputKind.PARAMETER
+                        state_dict[name] = torch.nn.Parameter(state_dict[name])
+                        break
+                for name, _ in gm.named_buffers():
+                    if node.target == name:
+                        input_kind = InputKind.BUFFER
+                        break
+
+            assert lift_val is not None and input_kind is not None
 
             # Replace get_attr nodes with placeholder nodes and copy metadata.
             with gm.graph.inserting_before(first_user_input):
-                const_placeholder_node = gm.graph.placeholder(node.target)
+                # Ensure name doesn't contain period as it is used for submodules
+                const_placeholder_node = gm.graph.placeholder(
+                    node.target.replace(".", "_")
+                )
                 # Copy the node meta into this new placeholder node
                 const_placeholder_node.meta = node.meta
-                const_placeholder_node.meta["val"] = cast(
-                    FakeTensor,
-                    torch.empty_strided(
-                        tuple(constant_tensor.shape),
-                        tuple([1] * len(constant_tensor.shape)),
-                    ),
-                )
+
+                if isinstance(lift_val, torch.Tensor):
+                    const_placeholder_node.meta["val"] = cast(
+                        FakeTensor,
+                        torch.empty_strided(
+                            tuple(lift_val.shape),
+                            tuple([1] * len(lift_val.shape)),
+                        ),
+                    )
 
                 node.replace_all_uses_with(const_placeholder_node)
                 gm.graph.erase_node(node)
 
                 # Add these parameters/buffers/constants to the existing graph signature
                 # before user inputs. These specs are looked up in the state_dict during ExportedProgram creation.
+                input_spec_arg = TensorArgument(name=const_placeholder_node.name)
+                if input_kind == InputKind.CUSTOM_OBJ:
+                    input_spec_arg = CustomObjArgument(
+                        name=const_placeholder_node.name, class_fqn=""
+                    )
                 graph_signature.input_specs.insert(
                     non_user_input_idx,
                     InputSpec(
                         kind=input_kind,
-                        arg=TensorArgument(name=const_placeholder_node.name),
+                        arg=input_spec_arg,
                         target=node.target,
                     ),
                 )
@@ -154,7 +171,7 @@ def lift(gm: torch.fx.GraphModule, graph_signature: Any) -> torch.fx.GraphModule
     gm.graph.eliminate_dead_code()
     gm.graph.lint()
 
-    return gm, graph_signature, state_dict
+    return gm, graph_signature, state_dict, constants
 
 
 def get_duplicate_nodes(
@@ -292,18 +309,30 @@ def create_trt_exp_program(
         input_specs=input_specs, output_specs=output_specs
     )
 
+    module_call_graph = [
+        ModuleCallEntry(
+            "",
+            ModuleCallSignature(
+                inputs=[],
+                outputs=[],
+                in_spec=gm.graph._codegen.pytree_info.in_spec,
+                out_spec=gm.graph._codegen.pytree_info.out_spec,
+            ),
+        )
+    ]
+
     # Lift parameters/buffers/constants in the graph
     # torch.export serialization expects them to be lifted
-    gm, trt_graph_signature, state_dict = lift(gm, trt_graph_signature)
+    gm, trt_graph_signature, state_dict, constants = lift(gm, trt_graph_signature)
 
     trt_exp_program = ExportedProgram(
-        gm,
-        gm.graph,
-        trt_graph_signature,
-        state_dict,
-        {},
-        [],
-        [],
+        root=gm,
+        graph=gm.graph,
+        graph_signature=trt_graph_signature,
+        state_dict=state_dict,
+        range_constraints={},
+        module_call_graph=module_call_graph,
+        constants=constants,
     )
 
     return trt_exp_program
@@ -330,9 +359,13 @@ def inline_trt_modules(
         num_outputs = len(outputs_map[trt_module_node.name])
         # Insert a call_function node to perform inference on TRT engine
         with gm.graph.inserting_before(trt_module_node):
+            engine_name = f"{name}_engine"
+            setattr(gm, engine_name, trt_module.engine)
+            engine_node = gm.graph.get_attr(engine_name)
+
             trt_node = gm.graph.call_function(
                 torch.ops.tensorrt.execute_engine.default,
-                (trt_module_node.args, trt_module.engine),
+                (trt_module_node.args, engine_node),
             )
             trt_node.meta["val"] = []
             assert num_outputs > 0
@@ -348,6 +381,13 @@ def inline_trt_modules(
                     )
                 )
 
+            # meta["val"] should be a lighter version of a tensor. For eg: it should be a FakeTensor (with output shape and dtype properties)
+            # Lighter version of a custom_obj is not defined clearly. meta["val"] does not have any type expectations but
+            # for custom object nodes, it should be CustomObjArgument
+            engine_node.meta["val"] = CustomObjArgument(
+                name=engine_node.name, class_fqn=""
+            )
+
         if num_outputs == 1:
             # Insert getitem nodes as outputs (for export serialization to work)
             with gm.graph.inserting_after(trt_node):
diff --git a/py/torch_tensorrt/dynamo/_settings.py b/py/torch_tensorrt/dynamo/_settings.py
index c00b049f45..2420a227d8 100644
--- a/py/torch_tensorrt/dynamo/_settings.py
+++ b/py/torch_tensorrt/dynamo/_settings.py
@@ -19,7 +19,6 @@
     MIN_BLOCK_SIZE,
     NUM_AVG_TIMING_ITERS,
     OPTIMIZATION_LEVEL,
-    OUTPUT_FORMAT,
     PASS_THROUGH_BUILD_FAILURES,
     PRECISION,
     REFIT,
@@ -71,7 +70,6 @@ class CompilationSettings:
             TRT Engines. Prints detailed logs of the graph structure and nature of partitioning. Optionally saves the
             ouptut to a file if a string path is specified
         hardware_compatible (bool): Build the TensorRT engines compatible with GPU architectures other than that of the GPU on which the engine was built (currently works for NVIDIA Ampere and newer)
-        output_format (str): Output format of the result of TRT compilation. Options include "exported_program" (or) "ep" | "torchscript" (or) "ts" | "graph_module" (or) "fx". Default is "exported_program"
     """
 
     precision: torch.dtype = PRECISION
@@ -99,4 +97,3 @@ class CompilationSettings:
     dla_global_dram_size: int = DLA_GLOBAL_DRAM_SIZE
     dryrun: Union[bool, str] = DRYRUN
     hardware_compatible: bool = HARDWARE_COMPATIBLE
-    output_format: str = OUTPUT_FORMAT
diff --git a/tests/py/dynamo/lowering/test_aten_lowering_passes.py b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
index bc75a8aa3d..b7c895ec11 100644
--- a/tests/py/dynamo/lowering/test_aten_lowering_passes.py
+++ b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
@@ -1,7 +1,6 @@
 import torch
-from torch.testing._internal.common_utils import TestCase, run_tests
-
 import torch_tensorrt
+from torch.testing._internal.common_utils import TestCase, run_tests
 
 from ..testing_utilities import DECIMALS_OF_AGREEMENT, lower_graph_testing
 
@@ -444,6 +443,7 @@ def forward(self, input, weight, bias):
         max_diff = float(
             torch.max(torch.abs(optimized_model_results - torch_model_results))
         )
+
         self.assertAlmostEqual(
             max_diff,
             0,
diff --git a/tests/py/dynamo/models/test_export_serde.py b/tests/py/dynamo/models/test_export_serde.py
index efa593890e..b6519815a4 100644
--- a/tests/py/dynamo/models/test_export_serde.py
+++ b/tests/py/dynamo/models/test_export_serde.py
@@ -42,18 +42,17 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     # Check Pyt and TRT exported program outputs
-    cos_sim = cosine_similarity(model(input), trt_exp_program(input)[0])
+    cos_sim = cosine_similarity(model(input), trt_module(input)[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_base_model_full_compile TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
     )
     # Check Pyt and deserialized TRT exported program outputs
-    cos_sim = cosine_similarity(model(input), deser_trt_exp_program(input)[0])
+    cos_sim = cosine_similarity(model(input), deser_trt_module(input)[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_base_model_full_compile TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
@@ -93,12 +92,12 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     # Check Pyt and TRT exported program outputs
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -107,7 +106,7 @@ def forward(self, x):
         )
 
     # Check Pyt and deserialized TRT exported program outputs
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -145,16 +144,15 @@ def forward(self, x):
             )
         ],
         "ir": ir,
-        "debug": True,
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     # Check Pyt and TRT exported program outputs
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -163,7 +161,7 @@ def forward(self, x):
         )
 
     # Check Pyt and deserialized TRT exported program outputs
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -207,12 +205,11 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
         assertions.assertTrue(
@@ -220,7 +217,7 @@ def forward(self, x):
             msg=f"test_hybrid_relu_fallback TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
         )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
@@ -248,19 +245,18 @@ def test_resnet18(ir):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
-
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
     cos_sim = cosine_similarity(outputs_pyt, outputs_trt[0])
     assertions.assertTrue(
         cos_sim > COSINE_THRESHOLD,
         msg=f"test_resnet18 TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
     )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
 
     cos_sim = cosine_similarity(outputs_pyt, outputs_trt_deser[0])
     assertions.assertTrue(
@@ -303,12 +299,12 @@ def forward(self, x):
     }
 
     exp_program = torchtrt.dynamo.trace(model, **compile_spec)
-    trt_exp_program = torchtrt.dynamo.compile(exp_program, **compile_spec)
-    torch.export.save(trt_exp_program, "/tmp/trt.ep")
-    deser_trt_exp_program = torch.export.load("/tmp/trt.ep")
+    trt_module = torchtrt.dynamo.compile(exp_program, **compile_spec)
 
+    torchtrt.save(trt_module, "/tmp/trt.ep", inputs=[input])
+    deser_trt_module = torchtrt.load("/tmp/trt.ep").module()
     outputs_pyt = model(input)
-    outputs_trt = trt_exp_program(input)
+    outputs_trt = trt_module(input)
 
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt[idx])
@@ -317,10 +313,50 @@ def forward(self, x):
             msg=f"test_hybrid_conv_fallback TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
         )
 
-    outputs_trt_deser = deser_trt_exp_program(input)
+    outputs_trt_deser = deser_trt_module(input)
     for idx in range(len(outputs_pyt)):
         cos_sim = cosine_similarity(outputs_pyt[idx], outputs_trt_deser[idx])
         assertions.assertTrue(
             cos_sim > COSINE_THRESHOLD,
             msg=f"test_hybrid_conv_fallback deserialized TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
         )
+
+
+@pytest.mark.unit
+def test_save_load_ts(ir):
+    """
+    This tests save/load API on Torchscript format (model still compiled using dynamo workflow)
+    """
+
+    class MyModule(torch.nn.Module):
+        def __init__(self):
+            super().__init__()
+            self.conv = torch.nn.Conv2d(3, 16, 3, stride=1, bias=True)
+            self.relu = torch.nn.ReLU()
+
+        def forward(self, x):
+            conv = self.conv(x)
+            relu = self.relu(conv)
+            mul = relu * 0.5
+            return mul
+
+    model = MyModule().eval().cuda()
+    input = torch.randn((1, 3, 224, 224)).to("cuda")
+
+    trt_gm = torchtrt.compile(model, ir=ir, inputs=[input], min_block_size=1)
+    assertions.assertTrue(
+        isinstance(trt_gm, torch.fx.GraphModule),
+        msg=f"test_save_load_ts output type does not match with torch.fx.GraphModule",
+    )
+    outputs_trt = trt_gm(input)
+    # Save it as torchscript representation
+    torchtrt.save(trt_gm, "/tmp/trt.ts", output_format="torchscript", inputs=[input])
+
+    trt_ts_module = torchtrt.load("/tmp/trt.ts")
+    outputs_trt_deser = trt_ts_module(input)
+
+    cos_sim = cosine_similarity(outputs_trt, outputs_trt_deser)
+    assertions.assertTrue(
+        cos_sim > COSINE_THRESHOLD,
+        msg=f"test_save_load_ts TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
+    )
diff --git a/tests/py/dynamo/models/test_models_export.py b/tests/py/dynamo/models/test_models_export.py
index fd7b40592a..84f6bf7a36 100644
--- a/tests/py/dynamo/models/test_models_export.py
+++ b/tests/py/dynamo/models/test_models_export.py
@@ -110,11 +110,6 @@ def test_bert_base_uncased(ir):
     model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
     input = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
     input2 = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    model = (
-        transformers_trace(model, input_names=["input_ids", "attention_mask"])
-        .eval()
-        .cuda()
-    )
 
     compile_spec = {
         "inputs": [
@@ -133,7 +128,7 @@ def test_bert_base_uncased(ir):
         "enabled_precisions": {torch.float},
         "truncate_long_and_double": True,
         "ir": ir,
-        "min_block_size": 10,
+        "min_block_size": 15,
     }
     trt_mod = torchtrt.compile(model, **compile_spec)
     model_outputs = model(input, input2)
@@ -142,58 +137,9 @@ def test_bert_base_uncased(ir):
         len(model_outputs) == len(trt_model_outputs),
         msg=f"Number of outputs for BERT model compilation is different with Pytorch {len(model_outputs)} and TensorRT {len(trt_model_outputs)}. Please check the compilation.",
     )
-    for index, key in enumerate(model_outputs):
-        out, trt_out = model_outputs[key], trt_model_outputs[index]
-        cos_sim = cosine_similarity(out, trt_out)
-        assertions.assertTrue(
-            cos_sim > COSINE_THRESHOLD,
-            msg=f"HF BERT base-uncased TRT outputs don't match with the original model. Cosine sim score: {cos_sim} Threshold: {COSINE_THRESHOLD}",
-        )
-
-    # Clean up model env
-    torch._dynamo.reset()
-
-
-@pytest.mark.unit
-def test_bert_base_uncased(ir):
-    model = BertModel.from_pretrained("bert-base-uncased").cuda().eval()
-    input = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    input2 = torch.randint(0, 1, (1, 14), dtype=torch.int32).to("cuda")
-    model = (
-        transformers_trace(model, input_names=["input_ids", "attention_mask"])
-        .eval()
-        .cuda()
-    )
 
-    compile_spec = {
-        "inputs": [
-            torchtrt.Input(
-                input.shape,
-                dtype=input.dtype,
-                format=torch.contiguous_format,
-            ),
-            torchtrt.Input(
-                input.shape,
-                dtype=input.dtype,
-                format=torch.contiguous_format,
-            ),
-        ],
-        "device": torchtrt.Device("cuda:0"),
-        "enabled_precisions": {torch.float},
-        "truncate_long_and_double": True,
-        "ir": ir,
-        "min_block_size": 10,
-        "torch_executed_ops": {"torch.ops.aten.gelu.default"},
-    }
-    trt_mod = torchtrt.compile(model, **compile_spec)
-    model_outputs = model(input, input2)
-    trt_model_outputs = trt_mod(input, input2)
-    assertions.assertTrue(
-        len(model_outputs) == len(trt_model_outputs),
-        msg=f"Number of outputs for BERT model compilation is different with Pytorch {len(model_outputs)} and TensorRT {len(trt_model_outputs)}. Please check the compilation.",
-    )
-    for index, key in enumerate(model_outputs):
-        out, trt_out = model_outputs[key], trt_model_outputs[index]
+    for key, _ in model_outputs.items():
+        out, trt_out = model_outputs[key], trt_model_outputs[key]
         cos_sim = cosine_similarity(out, trt_out)
         assertions.assertTrue(
             cos_sim > COSINE_THRESHOLD,
@@ -203,9 +149,6 @@ def test_bert_base_uncased(ir):
     # Clean up model env
     torch._dynamo.reset()
 
-    with torch.no_grad():
-        torch.cuda.empty_cache()
-
 
 @pytest.mark.unit
 def test_resnet18_half(ir):
diff --git a/tests/py/dynamo/models/test_output_format.py b/tests/py/dynamo/models/test_output_format.py
deleted file mode 100644
index 3d2e747ceb..0000000000
--- a/tests/py/dynamo/models/test_output_format.py
+++ /dev/null
@@ -1,62 +0,0 @@
-import unittest
-
-import pytest
-import timm
-import torch
-import torch_tensorrt as torchtrt
-import torchvision.models as models
-from torch_tensorrt.dynamo.utils import COSINE_THRESHOLD, cosine_similarity
-
-assertions = unittest.TestCase()
-
-
-@pytest.mark.unit
-def test_output_format(ir):
-    """
-    This tests output_format type in the compilation setting
-    """
-
-    class MyModule(torch.nn.Module):
-        def __init__(self):
-            super().__init__()
-            self.conv = torch.nn.Conv2d(3, 16, 3, stride=1, bias=True)
-            self.relu = torch.nn.ReLU()
-
-        def forward(self, x):
-            conv = self.conv(x)
-            relu = self.relu(conv)
-            mul = relu * 0.5
-            return mul
-
-    model = MyModule().eval().cuda()
-    input = torch.randn((1, 3, 224, 224)).to("cuda")
-
-    trt_ep = torchtrt.compile(model, ir="dynamo", inputs=[input], min_block_size=1)
-    assertions.assertTrue(
-        isinstance(trt_ep, torch.export.ExportedProgram),
-        msg=f"test_output_format output type does not match with torch.export.ExportedProgram",
-    )
-
-    trt_ts = torchtrt.compile(
-        model,
-        ir="dynamo",
-        inputs=[input],
-        min_block_size=1,
-        output_format="torchscript",
-    )
-    assertions.assertTrue(
-        isinstance(trt_ts, torch.jit.ScriptModule),
-        msg=f"test_output_format output type does not match with torch.jit.ScriptModule",
-    )
-
-    trt_gm = torchtrt.compile(
-        model,
-        ir="dynamo",
-        inputs=[input],
-        min_block_size=1,
-        output_format="graph_module",
-    )
-    assertions.assertTrue(
-        isinstance(trt_gm, torch.fx.GraphModule),
-        msg=f"test_output_format output type does not match with torch.fx.GraphModule",
-    )

From 1ae46e9c3cfd1fe3d13beeac28919fc6e24b1cf2 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 27 Mar 2024 09:07:47 -0700
Subject: [PATCH 12/69] chore: more updates

---
 core/conversion/converters/impl/conv_deconv.cpp |  9 ++++-----
 core/conversion/evaluators/eval_util.cpp        | 14 +++++---------
 py/requirements.txt                             |  2 +-
 pyproject.toml                                  |  4 ++--
 tests/core/partitioning/test_loading_model.cpp  |  2 +-
 tests/cpp/test_compiled_modules.cpp             |  2 +-
 tests/cpp/test_modules_as_engines.cpp           |  2 +-
 7 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/core/conversion/converters/impl/conv_deconv.cpp b/core/conversion/converters/impl/conv_deconv.cpp
index aa7acc9cc4..a779a3c1b9 100644
--- a/core/conversion/converters/impl/conv_deconv.cpp
+++ b/core/conversion/converters/impl/conv_deconv.cpp
@@ -146,9 +146,9 @@ bool add_conv_deconv(ConversionCtx* ctx, const torch::jit::Node* n, args& args)
       // TensorRT expects nbSpatialDims = 2 or 3
       filter_dim = util::unsqueezeDims(filter_dim, filter_dim.nbDims, 1, false);
       // Reshape input dimensions
-      in = addPadding(ctx, n, in, 4);
+      in = addPadding(ctx, n, in, 4, true, true, std::string(util::node_info(n) + "_input_shuffle"));
       LOG_DEBUG("Reshaping input dimensions to: " << in->getDimensions());
-      kernel = addPadding(ctx, n, kernel, 4);
+      kernel = addPadding(ctx, n, kernel, 4, true, true, std::string(util::node_info(n) + "_kernel_shuffle"));
       LOG_DEBUG("Reshaping kernel dimensions to: " << kernel->getDimensions());
       if (transposed) {
         num_output_maps = kernel_dims.d[1];
@@ -291,11 +291,10 @@ bool add_conv_deconv(ConversionCtx* ctx, const torch::jit::Node* n, args& args)
     // shape of convolution's weight: [out, in/groups, ...]
     auto conv = ctx->net->addConvolutionNd(*in, w.shape.d[0], w.kernel_shape, w.data, bias.data);
     TORCHTRT_CHECK(conv, "Unable to create convolution layer from node: " << *n);
-
     conv->setStrideNd(stride);
     conv->setPaddingMode(nvinfer1::PaddingMode::kEXPLICIT_ROUND_DOWN);
-    conv->setPaddingNd(padding);
-    conv->setPostPadding(out_padding);
+    conv->setPrePadding(padding);
+    conv->setPostPadding(padding);
     conv->setDilationNd(dilation);
     conv->setNbGroups(groups);
     new_layer = conv;
diff --git a/core/conversion/evaluators/eval_util.cpp b/core/conversion/evaluators/eval_util.cpp
index 71b6de9eb2..9b6139073d 100644
--- a/core/conversion/evaluators/eval_util.cpp
+++ b/core/conversion/evaluators/eval_util.cpp
@@ -34,11 +34,8 @@ c10::IValue dynamic_size_layer(ConversionCtx* ctx, const torch::jit::Node* n, kw
   auto in = args.at(n->input(0)).ITensorOrFreeze(ctx);
   auto input_dims = in->getDimensions();
   LOG_DEBUG("Input dimensions: " << input_dims);
-
-  auto shape_layer = ctx->net->addShape(*in);
-  TORCHTRT_CHECK(shape_layer, "Unable to create shape layer from node: " << *n);
-  auto shape_1d_tensor = shape_layer->getOutput(0);
-
+  nvinfer1::ITensor* shape_1d_tensor = torch_tensorrt::core::conversion::converters::getShapeOutput(
+      ctx, in, std::string(util::node_info(n) + "_dynamic_shape_layer_cast").c_str());
   if (n->inputs().size() != 1) {
     auto maxDim = static_cast<int64_t>(in->getDimensions().nbDims);
     auto dim = args.at(n->input(1)).unwrapToInt();
@@ -423,13 +420,12 @@ c10::optional<torch::jit::IValue> newTensorLikeImplementation(
     // broadcast constant to output shape
     std::vector<int64_t> start_vec(self->getDimensions().nbDims, 0);
     auto start_offset = util::toDims(c10::IntArrayRef(start_vec));
-    auto shape_layer = ctx->net->addShape(*self);
-    TORCHTRT_CHECK(shape_layer, "Unable to create shape layer from node: " << *n);
-    shape_layer->setName((util::node_info(n) + "_shape").c_str());
+    nvinfer1::ITensor* shape_output = torch_tensorrt::core::conversion::converters::getShapeOutput(
+        ctx, self, std::string(util::node_info(n) + "_shape").c_str());
     // slice implements expand
     auto slice_layer = ctx->net->addSlice(*constant_itensor, start_offset, self->getDimensions(), start_offset);
     TORCHTRT_CHECK(slice_layer, "Unable to create slice layer from node: " << *n);
-    slice_layer->setInput(2, *shape_layer->getOutput(0));
+    slice_layer->setInput(2, *shape_output);
     slice_layer->setName((util::node_info(n) + "_slice").c_str());
     auto out_tensor = ctx->AssociateValueAndTensor(n->outputs()[0], slice_layer->getOutput(0));
     LOG_DEBUG("Output tensor shape: " << out_tensor->getDimensions());
diff --git a/py/requirements.txt b/py/requirements.txt
index 19c39c8647..565395b59b 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,5 +5,5 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-tensorrt>=10.0
+tensorrt==10.0.0b6
 pyyaml
diff --git a/pyproject.toml b/pyproject.toml
index 6c4940013d..7468484f48 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,7 +8,7 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
-    "tensorrt>=10.0",
+    "tensorrt==10.0.0b6",
     "torch >=2.3.0.dev,<2.4.0",
     "pybind11==2.6.2",
     "numpy",
@@ -42,7 +42,7 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch >=2.3.0.dev,<2.4.0",
-    "tensorrt>=10.0",
+    "tensorrt==10.0.0b6",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",
diff --git a/tests/core/partitioning/test_loading_model.cpp b/tests/core/partitioning/test_loading_model.cpp
index b42368fe3e..67c42caef2 100644
--- a/tests/core/partitioning/test_loading_model.cpp
+++ b/tests/core/partitioning/test_loading_model.cpp
@@ -7,7 +7,7 @@
 
 #ifndef DISABLE_TEST_IN_CI
 
-TEST(Partitioning, ComputeResNet50FallbackGraphCorrectly) {
+TEST(Partitioning, ComputeConditionalLoadingGraphCorrectly) {
   torch::jit::script::Module mod;
   try {
     mod = torch::jit::load("tests/modules/conditional_scripted.jit.pt");
diff --git a/tests/cpp/test_compiled_modules.cpp b/tests/cpp/test_compiled_modules.cpp
index 62bae5756d..7def168249 100644
--- a/tests/cpp/test_compiled_modules.cpp
+++ b/tests/cpp/test_compiled_modules.cpp
@@ -58,7 +58,7 @@ INSTANTIATE_TEST_SUITE_P(
         PathAndInput({"tests/modules/resnet18_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
         PathAndInput({"tests/modules/mobilenet_v2_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
         PathAndInput({"tests/modules/efficientnet_b0_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
-        PathAndInput({"tests/modules/bert_base_uncased_traced.jit.pt", {{1, 14}, {1, 14}}, {at::kInt, at::kInt}}),
+        PathAndInput({"tests/modules/bert_base_uncased_traced.jit.pt", {{1, 14}, {1, 14}}, {at::kInt, at::kInt}})));
 // NOTE: ViT tests are disabled until Python 3.11 issue is resolved
 // https://github.com/huggingface/pytorch-image-models/issues/1946 PathAndInput({"tests/modules/vit_scripted.jit.pt",
 // {{1, 3, 224, 224}}, {at::kFloat}})));
diff --git a/tests/cpp/test_modules_as_engines.cpp b/tests/cpp/test_modules_as_engines.cpp
index 4cb9dd9f8d..cc9fdd24a4 100644
--- a/tests/cpp/test_modules_as_engines.cpp
+++ b/tests/cpp/test_modules_as_engines.cpp
@@ -29,7 +29,7 @@ INSTANTIATE_TEST_SUITE_P(
     testing::Values(
         PathAndInput({"tests/modules/resnet18_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
         PathAndInput({"tests/modules/mobilenet_v2_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
-        PathAndInput({"tests/modules/efficientnet_b0_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}}),
+        PathAndInput({"tests/modules/efficientnet_b0_scripted.jit.pt", {{1, 3, 224, 224}}, {at::kFloat}})));
 // NOTE: ViT tests are disabled until Python 3.11 issue is resolved
 // https://github.com/huggingface/pytorch-image-models/issues/1946 PathAndInput({"tests/modules/vit_scripted.jit.pt",
 // {{1, 3, 224, 224}}, {at::kFloat}})));

From beb59206d082d8f0842ccca6d30b714dffccc07f Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 27 Mar 2024 09:22:53 -0700
Subject: [PATCH 13/69] chore: Update versions

---
 README.md | 4 ++--
 WORKSPACE | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 875b640304..eecae762cf 100644
--- a/README.md
+++ b/README.md
@@ -116,10 +116,10 @@ torch.jit.save(trt_ts_module, "trt_torchscript_module.ts") # save the TRT embedd
 These are the following dependencies used to verify the testcases. Torch-TensorRT can work with other versions, but the tests are not guaranteed to pass.
 
 - Bazel 5.2.0
-- Libtorch 2.3.0.dev (latest nightly) (built with CUDA 12.1)
+- Libtorch 2.3.0 (built with CUDA 12.1)
 - CUDA 12.1
 - cuDNN 8.9.5
-- TensorRT 8.6.1
+- TensorRT 10.0.0.6
 
 ## Prebuilt Binaries and Wheel files
 
diff --git a/WORKSPACE b/WORKSPACE
index edc5c9a050..76e9a602fa 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -81,10 +81,10 @@ http_archive(
 http_archive(
     name = "tensorrt",
     build_file = "@//third_party/tensorrt/archive:BUILD",
-    sha256 = "0f8157a5fc5329943b338b893591373350afa90ca81239cdadd7580cd1eba254",
-    strip_prefix = "TensorRT-8.6.1.6",
+    sha256 = "7ad5c8eab8fe8803bef5d8cee54ec1f407797ac8edb8ea3186cb9f24af726486",
+    strip_prefix = "TensorRT-10.0.0.6",
     urls = [
-        "https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz",
+        "https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/tars/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz",
     ],
 )
 

From f0068c64ba4b5d214a3e1beb52bf15eaaae7cf21 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 27 Mar 2024 10:15:38 -0700
Subject: [PATCH 14/69] chore: update tensorrt version in CI

---
 dev_dep_versions.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dev_dep_versions.yml b/dev_dep_versions.yml
index 442485474c..b07db5533f 100644
--- a/dev_dep_versions.yml
+++ b/dev_dep_versions.yml
@@ -1,4 +1,4 @@
-__version__: "2.3.0.dev0"
+__version__: "2.3.0"
 __cuda_version__: "12.1"
 __cudnn_version__: "8.9"
-__tensorrt_version__: "8.6"
+__tensorrt_version__: "10.0.0b6"

From 39261b9d2d421496df5bd1d99b237aa459b9862f Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 27 Mar 2024 14:28:17 -0700
Subject: [PATCH 15/69] chore: more updates

---
 core/conversion/converters/impl/conv_deconv.cpp     |  3 +--
 core/conversion/converters/impl/interpolate.cpp     | 13 ++++++++-----
 .../passes/unpack_scaled_dot_product_attention.cpp  |  8 ++++----
 .../test_scaled_dot_product_attention.cpp           |  9 ++++++---
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/core/conversion/converters/impl/conv_deconv.cpp b/core/conversion/converters/impl/conv_deconv.cpp
index a779a3c1b9..c71007ac03 100644
--- a/core/conversion/converters/impl/conv_deconv.cpp
+++ b/core/conversion/converters/impl/conv_deconv.cpp
@@ -293,8 +293,7 @@ bool add_conv_deconv(ConversionCtx* ctx, const torch::jit::Node* n, args& args)
     TORCHTRT_CHECK(conv, "Unable to create convolution layer from node: " << *n);
     conv->setStrideNd(stride);
     conv->setPaddingMode(nvinfer1::PaddingMode::kEXPLICIT_ROUND_DOWN);
-    conv->setPrePadding(padding);
-    conv->setPostPadding(padding);
+    conv->setPaddingNd(padding);
     conv->setDilationNd(dilation);
     conv->setNbGroups(groups);
     new_layer = conv;
diff --git a/core/conversion/converters/impl/interpolate.cpp b/core/conversion/converters/impl/interpolate.cpp
index 748e3c9e1a..64542d14f6 100644
--- a/core/conversion/converters/impl/interpolate.cpp
+++ b/core/conversion/converters/impl/interpolate.cpp
@@ -77,7 +77,6 @@ void resize_layer_size(
   TORCHTRT_CHECK((out_shape.size() > 0) ^ (scales.size() > 0), "only one of out_shape or scales should be defined");
   auto resize_layer = ctx->net->addResize(*in);
   TORCHTRT_CHECK(resize_layer, "Unable to create interpolation (resizing) layer from node" << *n);
-
   if (out_shape.size() > 0) {
     auto th_dynamic_shape_mask = torch::zeros(out_shape.size(), torch::kInt32);
     auto th_static_shape_mask = torch::zeros(out_shape.size(), torch::kInt32);
@@ -108,13 +107,17 @@ void resize_layer_size(
 
   resize_layer->setResizeMode(mode);
   resize_layer->setName(util::node_info(n).c_str());
-#if NV_TENSORRT_MAJOR < 8
-  resize_layer->setAlignCorners(align_corners);
-#else
+
   if (align_corners) {
     resize_layer->setCoordinateTransformation(nvinfer1::ResizeCoordinateTransformation::kALIGN_CORNERS);
+  } else {
+    if (mode == nvinfer1::InterpolationMode::kLINEAR) {
+      resize_layer->setCoordinateTransformation(nvinfer1::ResizeCoordinateTransformation::kHALF_PIXEL);
+    } else {
+      // kASYMMETRIC is the default transformation in TensorRT
+      resize_layer->setCoordinateTransformation(nvinfer1::ResizeCoordinateTransformation::kASYMMETRIC);
+    }
   }
-#endif
   auto layer_output = ctx->AssociateValueAndTensor(n->outputs()[0], resize_layer->getOutput(0));
 
   LOG_DEBUG("Output tensor shape: " << layer_output->getDimensions());
diff --git a/core/lowering/passes/unpack_scaled_dot_product_attention.cpp b/core/lowering/passes/unpack_scaled_dot_product_attention.cpp
index bfe0004bd6..3c347f65ca 100644
--- a/core/lowering/passes/unpack_scaled_dot_product_attention.cpp
+++ b/core/lowering/passes/unpack_scaled_dot_product_attention.cpp
@@ -12,12 +12,12 @@ namespace passes {
 // https://pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html
 void UnpackScaledDotProductAttention(std::shared_ptr<torch::jit::Graph>& graph) {
   std::string sdpa_pattern = R"IR(
-    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal):
-      %out: Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %dropout_p, %is_causal)
+    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal, %scale):
+      %out: Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %dropout_p, %is_causal, %scale)
       return (%out))IR";
 
   std::string unpacked_sdpa_pattern = R"IR(
-    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal):
+    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal, %scale):
       %none : NoneType = prim::Constant()
       %1 : int = prim::Constant[value=-1]()
       %2 : int = prim::Constant[value=-2]()
@@ -33,7 +33,7 @@ void UnpackScaledDotProductAttention(std::shared_ptr<torch::jit::Graph>& graph)
       return(%out))IR";
 
   std::string unpacked_sdpa_attn_biased_pattern = R"IR(
-    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal):
+    graph(%query, %key, %value, %attn_mask, %dropout_p, %is_causal, %scale):
       %none : NoneType = prim::Constant()
       %0 : int = prim::Constant[value=1]()
       %1 : int = prim::Constant[value=-1]()
diff --git a/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp b/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
index 785363ccca..7fa859e324 100644
--- a/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
+++ b/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
@@ -10,8 +10,9 @@ TEST(Converters, ATenScaledDotProductAttentionConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor):
         %none : NoneType = prim::Constant()
         %0 : float = prim::Constant[value=0.]()
+        %scale : float = prim::Constant[value=1.]()
         %false : bool = prim::Constant[value=0]()
-        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %none, %0, %false)
+        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %none, %0, %false, %scale)
         return (%3))IR";
 
   auto g = std::make_shared<torch::jit::Graph>();
@@ -36,7 +37,8 @@ TEST(Converters, ATenScaledDotProductAttnMaskFloatConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor, %attn_mask : Tensor):
         %0 : float = prim::Constant[value=0.]()
         %false : bool = prim::Constant[value=0]()
-        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false)
+        %scale : float = prim::Constant[value=1.]()
+        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false, %scale)
         return (%3))IR";
 
   auto g = std::make_shared<torch::jit::Graph>();
@@ -62,7 +64,8 @@ TEST(Converters, ATenScaledDotProductAttnMaskBoolConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor, %attn_mask : Tensor):
         %0 : float = prim::Constant[value=0.]()
         %false : bool = prim::Constant[value=0]()
-        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false)
+        %scale : float = prim::Constant[value=1.]()
+        %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false, %scale)
         return (%3))IR";
 
   auto g = std::make_shared<torch::jit::Graph>();

From 3753150fb75e9a6637acffa35f2f3b4b63d15afa Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 05:12:26 -0700
Subject: [PATCH 16/69] chore: more fixes

---
 .../test_scaled_dot_product_attention.cpp     |  6 ++---
 .../test_trt_intercompatibility.py            | 24 ++++++++++---------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp b/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
index 7fa859e324..5550d5409b 100644
--- a/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
+++ b/tests/core/conversion/converters/test_scaled_dot_product_attention.cpp
@@ -10,7 +10,7 @@ TEST(Converters, ATenScaledDotProductAttentionConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor):
         %none : NoneType = prim::Constant()
         %0 : float = prim::Constant[value=0.]()
-        %scale : float = prim::Constant[value=1.]()
+        %scale : NoneType = prim::Constant()
         %false : bool = prim::Constant[value=0]()
         %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %none, %0, %false, %scale)
         return (%3))IR";
@@ -37,7 +37,7 @@ TEST(Converters, ATenScaledDotProductAttnMaskFloatConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor, %attn_mask : Tensor):
         %0 : float = prim::Constant[value=0.]()
         %false : bool = prim::Constant[value=0]()
-        %scale : float = prim::Constant[value=1.]()
+        %scale : NoneType = prim::Constant()
         %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false, %scale)
         return (%3))IR";
 
@@ -64,7 +64,7 @@ TEST(Converters, ATenScaledDotProductAttnMaskBoolConvertsCorrectly) {
       graph(%query : Tensor, %key : Tensor, %value : Tensor, %attn_mask : Tensor):
         %0 : float = prim::Constant[value=0.]()
         %false : bool = prim::Constant[value=0]()
-        %scale : float = prim::Constant[value=1.]()
+        %scale : NoneType = prim::Constant()
         %3 : Tensor = aten::scaled_dot_product_attention(%query, %key, %value, %attn_mask, %0, %false, %scale)
         return (%3))IR";
 
diff --git a/tests/py/ts/integrations/test_trt_intercompatibility.py b/tests/py/ts/integrations/test_trt_intercompatibility.py
index b938e4a1ac..4c84ad088f 100644
--- a/tests/py/ts/integrations/test_trt_intercompatibility.py
+++ b/tests/py/ts/integrations/test_trt_intercompatibility.py
@@ -1,9 +1,10 @@
 import unittest
-import torch_tensorrt as torchtrt
+
+import tensorrt as trt
 import torch
+import torch_tensorrt as torchtrt
 import torchvision.models as models
-import tensorrt as trt
-from utils import cosine_similarity, COSINE_THRESHOLD
+from utils import COSINE_THRESHOLD, cosine_similarity
 
 
 class TestPyTorchToTRTEngine(unittest.TestCase):
@@ -31,18 +32,19 @@ def test_pt_to_trt(self):
         with trt.Runtime(TRT_LOGGER) as rt:
             engine = rt.deserialize_cuda_engine(trt_engine)
             with engine.create_execution_context() as ctx:
-                out = torch.empty(size=tuple(engine.get_binding_shape(1))).to("cuda:0")
+                out = torch.empty(
+                    size=tuple(engine.get_tensor_shape(engine.get_tensor_name(1)))
+                ).to("cuda:0")
                 bindings = [
                     self.input.contiguous().data_ptr(),
                     out.contiguous().data_ptr(),
                 ]
-                ctx.execute_async(
-                    batch_size=1,
-                    bindings=bindings,
-                    stream_handle=torch.cuda.current_stream(
-                        device="cuda:0"
-                    ).cuda_stream,
-                )
+
+                # Assign tensor address appropriately
+                for idx in range(engine.num_io_tensors):
+                    ctx.set_tensor_address(engine.get_tensor_name(idx), bindings[idx])
+                ctx.execute_async_v3(torch.cuda.current_stream().cuda_stream)
+
                 cos_sim = cosine_similarity(self.model(self.input), out)
                 self.assertTrue(
                     cos_sim > COSINE_THRESHOLD,

From c355766f659f15fe02bf373e004e10039047d58d Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 05:54:57 -0700
Subject: [PATCH 17/69] chore: remove NvUtils.h

---
 third_party/tensorrt/local/BUILD | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 9cbe98a41e..59d0ef01d8 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -29,9 +29,7 @@ config_setting(
 cc_library(
     name = "nvinfer_headers",
     hdrs = select({
-        ":aarch64_linux": [
-            "include/aarch64-linux-gnu/NvUtils.h",
-        ] + glob(
+        ":aarch64_linux": glob(
             [
                 "include/aarch64-linux-gnu/NvInfer*.h",
             ],
@@ -40,9 +38,7 @@ cc_library(
                 "include/aarch64-linux-gnu/NvInferPluginUtils.h",
             ],
         ),
-        ":ci_rhel_x86_64_linux": [
-            "include/NvUtils.h",
-        ] + glob(
+        ":ci_rhel_x86_64_linux": glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -51,9 +47,7 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        ":windows": [
-            "include/NvUtils.h",
-        ] + glob(
+        ":windows": glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -62,9 +56,7 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        "//conditions:default": [
-            "include/x86_64-linux-gnu/NvUtils.h",
-        ] + glob(
+        "//conditions:default": glob(
             [
                 "include/x86_64-linux-gnu/NvInfer*.h",
             ],

From 2d237dca528d0743c4b748e60c7969de46660464 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 07:14:43 -0700
Subject: [PATCH 18/69] chore: more updates

---
 WORKSPACE                                              | 10 ----------
 core/conversion/converters/impl/chunk.cpp              |  4 ----
 core/ir/ir.cpp                                         |  1 -
 core/plugins/impl/interpolate_plugin.h                 |  1 -
 core/plugins/impl/normalize_plugin.h                   |  1 -
 third_party/tensorrt/local/BUILD                       |  2 --
 .../ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl   |  6 ------
 7 files changed, 25 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 76e9a602fa..95abcea2d3 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -68,16 +68,6 @@ http_archive(
 # Either place them in the distdir directory in third_party and use the --distdir flag
 # or modify the urls to "file:///<PATH TO TARBALL>/<TARBALL NAME>.tar.gz
 
-http_archive(
-    name = "cudnn",
-    build_file = "@//third_party/cudnn/archive:BUILD",
-    sha256 = "2a2eb89a2ab51071151c6082f1e816c702167a711a9372f9f73a7b5c4b06e01a",
-    strip_prefix = "cudnn-linux-x86_64-8.9.5.30_cuda12-archive",
-    urls = [
-        "https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.5/local_installers/12.x/cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz",
-    ],
-)
-
 http_archive(
     name = "tensorrt",
     build_file = "@//third_party/tensorrt/archive:BUILD",
diff --git a/core/conversion/converters/impl/chunk.cpp b/core/conversion/converters/impl/chunk.cpp
index a7191133fb..b3d2441706 100644
--- a/core/conversion/converters/impl/chunk.cpp
+++ b/core/conversion/converters/impl/chunk.cpp
@@ -17,7 +17,6 @@ auto cat_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns()
               auto chunks = args[1].unwrapToInt();
               auto dim = args[2].unwrapToInt();
               bool dynamic_shape = ctx->input_is_dynamic;
-              int size = in->getDimensions().nbDims;
               int maxDim = static_cast<int32_t>(in->getDimensions().d[dim]);
 
               c10::ListTypePtr lt = n->output()->type()->expect<c10::ListType>();
@@ -41,9 +40,6 @@ auto cat_registrations TORCHTRT_UNUSED = RegisterNodeConversionPatterns()
               size_.nbDims = nbdims;
               stride_.nbDims = nbdims;
 
-              int startIdx = 0;
-              int endIdx = maxDim;
-
               for (int i = 0; i < nbdims; i++) {
                 start_.d[i] = 0;
                 size_.d[i] = 0;
diff --git a/core/ir/ir.cpp b/core/ir/ir.cpp
index c98d17c5ef..b67e228f1f 100644
--- a/core/ir/ir.cpp
+++ b/core/ir/ir.cpp
@@ -151,7 +151,6 @@ c10::optional<at::ScalarType> get_value_first_calc_dtype_opt(torch::jit::Block*
 
     // If node outputs a Tensor it might be a result of tensor calcuation so check to see
     // if any inputs to the calculation can give us hints
-    c10::optional<torch::jit::Node*> const_tensor_n = {};
 
     // Backtrace to constants which will immediately give us the Tensor type if possible
     for (auto in : ins) {
diff --git a/core/plugins/impl/interpolate_plugin.h b/core/plugins/impl/interpolate_plugin.h
index ced4cbee20..ce009af03e 100644
--- a/core/plugins/impl/interpolate_plugin.h
+++ b/core/plugins/impl/interpolate_plugin.h
@@ -3,7 +3,6 @@
 #include <ATen/ATen.h>
 #include <ATen/cuda/CUDAEvent.h>
 #include <cuda_runtime_api.h>
-#include <cudnn.h>
 #include <iostream>
 #include <sstream>
 #include <string>
diff --git a/core/plugins/impl/normalize_plugin.h b/core/plugins/impl/normalize_plugin.h
index 28c3a5c5da..5d51a68293 100644
--- a/core/plugins/impl/normalize_plugin.h
+++ b/core/plugins/impl/normalize_plugin.h
@@ -3,7 +3,6 @@
 #include <ATen/ATen.h>
 #include <ATen/cuda/CUDAEvent.h>
 #include <cuda_runtime_api.h>
-#include <cudnn.h>
 #include <iostream>
 #include <sstream>
 #include <string>
diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 59d0ef01d8..c317e16688 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -104,7 +104,6 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )
 
@@ -358,7 +357,6 @@ cc_library(
     deps = [
         "nvinfer",
         "@cuda//:cudart",
-        "@cudnn",
     ],
     alwayslink = True,
 )
diff --git a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
index db6cfb0b5d..8ff4f74aaf 100644
--- a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
+++ b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
@@ -73,12 +73,6 @@ http_archive(
 # Locally installed dependencies (use in cases of custom dependencies or aarch64)
 ####################################################################################
 
-new_local_repository(
-    name = "cudnn",
-    path = "/usr/",
-    build_file = "@//third_party/cudnn/local:BUILD"
-)
-
 new_local_repository(
    name = "tensorrt",
    path = "/usr/",

From e4b442913b7200d66af92c90ebb54d77321bd536 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 07:30:35 -0700
Subject: [PATCH 19/69] chore: change lib64 to lib in rhel BUILD file

---
 third_party/tensorrt/local/BUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index c317e16688..1967308243 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -329,7 +329,7 @@ cc_library(
     name = "nvinferplugin",
     srcs = select({
         ":aarch64_linux": ["lib/aarch64-linux-gnu/libnvinfer_plugin.so"],
-        ":ci_rhel_x86_64_linux": ["lib64/libnvinfer_plugin.so"],
+        ":ci_rhel_x86_64_linux": ["lib/libnvinfer_plugin.so"],
         ":windows": ["lib/nvinfer_plugin.dll"],
         "//conditions:default": ["lib/x86_64-linux-gnu/libnvinfer_plugin.so"],
     }),

From fa4fb9cea4946d702e4cb869e76942fbaf4bcfda Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 07:40:28 -0700
Subject: [PATCH 20/69] chore: more updates

---
 third_party/tensorrt/local/BUILD | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 1967308243..31aa906ba4 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -79,7 +79,7 @@ cc_import(
     name = "nvinfer_static_lib",
     static_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvinfer_static.a",
-        ":ci_rhel_x86_64_linux": "lib64/libnvinfer_static.a",
+        ":ci_rhel_x86_64_linux": "lib/libnvinfer_static.a",
         ":windows": "lib/nvinfer.lib",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer_static.a",
     }),
@@ -90,7 +90,7 @@ cc_import(
     name = "nvinfer_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvinfer.so",
-        ":ci_rhel_x86_64_linux": "lib64/libnvinfer.so",
+        ":ci_rhel_x86_64_linux": "lib/libnvinfer.so",
         ":windows": "lib/nvinfer.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer.so",
     }),
@@ -113,7 +113,7 @@ cc_import(
     name = "nvparsers_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvparsers.so",
-        ":ci_rhel_x86_64_linux": "lib64/libnvparsers.so",
+        ":ci_rhel_x86_64_linux": "lib/libnvparsers.so",
         ":windows": "lib/nvparsers.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvparsers.so",
     }),
@@ -177,7 +177,7 @@ cc_import(
     name = "nvonnxparser_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvonnxparser.so",
-        ":ci_rhel_x86_64_linux": "lib64/libnvonnxparser.so",
+        ":ci_rhel_x86_64_linux": "lib/libnvonnxparser.so",
         ":windows": "lib/nvonnxparser.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser.so",
     }),
@@ -233,7 +233,7 @@ cc_import(
     name = "nvonnxparser_runtime_lib",
     shared_library = select({
         ":aarch64_linux": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so",
-        ":ci_rhel_x86_64_linux": "lib64/libnvonnxparser_runtime.so",
+        ":ci_rhel_x86_64_linux": "lib/libnvonnxparser_runtime.so",
         ":windows": "lib/nvonnxparser_runtime.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so",
     }),
@@ -281,7 +281,7 @@ cc_import(
     name = "nvcaffeparser_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvcaffe_parsers.so",
-        ":ci_rhel_x86_64_linux": "lib64/libnvcaffe_parsers.so",
+        ":ci_rhel_x86_64_linux": "lib/libnvcaffe_parsers.so",
         ":windows": "lib/nvcaffe_parsers.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvcaffe_parsers.so",
     }),

From e11eb60edd8718c775f23b753d658a43f83edbe5 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 09:36:52 -0700
Subject: [PATCH 21/69] chore: fix TRT version

---
 dev_dep_versions.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dev_dep_versions.yml b/dev_dep_versions.yml
index b07db5533f..e2434d0c45 100644
--- a/dev_dep_versions.yml
+++ b/dev_dep_versions.yml
@@ -1,4 +1,4 @@
 __version__: "2.3.0"
 __cuda_version__: "12.1"
 __cudnn_version__: "8.9"
-__tensorrt_version__: "10.0.0b6"
+__tensorrt_version__: "10.0"

From 092feb225e8844d94c5e7b11d65b5e413cf88c48 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 09:50:03 -0700
Subject: [PATCH 22/69] chore: more updates

---
 dev_dep_versions.yml          | 2 +-
 packaging/pre_build_script.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dev_dep_versions.yml b/dev_dep_versions.yml
index e2434d0c45..b07db5533f 100644
--- a/dev_dep_versions.yml
+++ b/dev_dep_versions.yml
@@ -1,4 +1,4 @@
 __version__: "2.3.0"
 __cuda_version__: "12.1"
 __cudnn_version__: "8.9"
-__tensorrt_version__: "10.0"
+__tensorrt_version__: "10.0.0b6"
diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index 18cd5d9fe2..9bab9a58c3 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -5,7 +5,7 @@ python3 -m pip install pyyaml
 TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
 yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
 yum check-update
-yum install -y ninja-build gettext tensorrt-${TRT_VERSION}.*
+yum install -y ninja-build gettext tensorrt-${TRT_VERSION}
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \
     && chmod +x /usr/bin/bazel

From 09ecf263741fb0e945033f602c424a2e5aabb4ad Mon Sep 17 00:00:00 2001
From: Evan Li <zewenl@nvidia.com>
Date: Wed, 3 Apr 2024 00:32:54 +0000
Subject: [PATCH 23/69] fix shape bug in bitwise ops

---
 .../conversion/impl/elementwise/base.py       | 42 ++++++++++++++++---
 1 file changed, 36 insertions(+), 6 deletions(-)

diff --git a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
index 615cd0bd62..f93ec52504 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
@@ -7,12 +7,13 @@
 import torch
 from torch.fx.node import Target
 from torch_tensorrt.dynamo._SourceIR import SourceIR
+from torch_tensorrt.dynamo.conversion import impl
 from torch_tensorrt.dynamo.conversion._ConversionContext import ConversionContext
 from torch_tensorrt.dynamo.conversion.converter_utils import (
     cast_trt_tensor,
     get_trt_tensor,
 )
-from torch_tensorrt.fx.converters.converter_utils import broadcast, set_layer_name
+from torch_tensorrt.fx.converters.converter_utils import set_layer_name
 from torch_tensorrt.fx.types import TRTElementWiseOp, TRTTensor
 from torch_tensorrt.fx.utils import Frameworks, unified_dtype_converter
 
@@ -140,16 +141,45 @@ def convert_binary_elementwise(
 
     if trt_promoted_type != lhs_val.dtype:
         lhs_val = cast_trt_tensor(
-            ctx, lhs_val, trt_promoted_type, name, target, source_ir
+            ctx, lhs_val, trt_promoted_type, f"{name}_cast_lhs_val", target, source_ir
         )
     if trt_promoted_type != rhs_val.dtype:
         rhs_val = cast_trt_tensor(
-            ctx, rhs_val, trt_promoted_type, name, target, source_ir
+            ctx, rhs_val, trt_promoted_type, f"{name}_cast_rhs_val", target, source_ir
         )
 
-    lhs_val, rhs_val = broadcast(
-        ctx.net, lhs_val, rhs_val, f"{name}_lhs", f"{name}_rhs"
-    )
+    lhs_val_shape = lhs_val.shape
+    rhs_val_shape = rhs_val.shape
+    rank_diff = len(lhs_val_shape) - len(rhs_val_shape)
+    if rank_diff > 0:
+        rhs_val = impl.slice.expand(
+            ctx, target, source_ir, f"{name}_expand_rhs_val", rhs_val, lhs_val_shape
+        )
+    elif rank_diff < 0:
+        lhs_val = impl.slice.expand(
+            ctx, target, source_ir, f"{name}_expand_lhs_val", lhs_val, rhs_val_shape
+        )
+    else:
+        if tuple(lhs_val_shape) != tuple(rhs_val_shape):
+            sum_diff = sum(lhs_val_shape) - sum(rhs_val_shape)
+            if sum_diff > 0:
+                rhs_val = impl.slice.expand(
+                    ctx,
+                    target,
+                    source_ir,
+                    f"{name}_expand_rhs_val",
+                    rhs_val,
+                    lhs_val_shape,
+                )
+            elif sum_diff < 0:
+                lhs_val = impl.slice.expand(
+                    ctx,
+                    target,
+                    source_ir,
+                    f"{name}_expand_lhs_val",
+                    lhs_val,
+                    rhs_val_shape,
+                )
 
     layer = ctx.net.add_elementwise(lhs_val, rhs_val, op_type)
     set_layer_name(layer, target, name, source_ir)

From 85e04c5d5697e60395b79829cf80322da1de41f9 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 19:07:46 -0700
Subject: [PATCH 24/69] chore: update to rhel9

---
 packaging/pre_build_script.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index 9bab9a58c3..ae73d2b773 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -3,7 +3,7 @@
 # Install dependencies
 python3 -m pip install pyyaml
 TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
-yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
+yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
 yum check-update
 yum install -y ninja-build gettext tensorrt-${TRT_VERSION}
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \

From 41229d63ae3465304f451a0b43703ea9754e0d97 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 2 Apr 2024 19:26:52 -0700
Subject: [PATCH 25/69] chore: change trt version

---
 dev_dep_versions.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dev_dep_versions.yml b/dev_dep_versions.yml
index b07db5533f..4bbfe9d188 100644
--- a/dev_dep_versions.yml
+++ b/dev_dep_versions.yml
@@ -1,4 +1,4 @@
 __version__: "2.3.0"
 __cuda_version__: "12.1"
 __cudnn_version__: "8.9"
-__tensorrt_version__: "10.0.0b6"
+__tensorrt_version__: "10.0.0.6"

From 9d7a65618a039802eb568264eccf1be4172a3750 Mon Sep 17 00:00:00 2001
From: Evan Li <zewenl@nvidia.com>
Date: Wed, 3 Apr 2024 18:23:40 +0000
Subject: [PATCH 26/69] fix test bug and add more tests

---
 tests/py/dynamo/conversion/test_arange_aten.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tests/py/dynamo/conversion/test_arange_aten.py b/tests/py/dynamo/conversion/test_arange_aten.py
index 035b957865..e06239eb4e 100644
--- a/tests/py/dynamo/conversion/test_arange_aten.py
+++ b/tests/py/dynamo/conversion/test_arange_aten.py
@@ -15,14 +15,18 @@ class TestArangeConverter(DispatchTestCase):
             (5, 0, -1),
             (5, 1, -2),
             (5, 3, -3),
+            (5, -2, -1),
+            (-5, -2, 2),
+            (-5, -3, 1),
+            (-2, -5, -1),
         ]
     )
     def test_arange(self, start, end, step):
         class Arange(nn.Module):
             def forward(self, x):
-                return torch.ops.aten.arange.start_step(start, x.shape[0], step)
+                return torch.ops.aten.arange.start_step(start, end, step)
 
-        inputs = [torch.randn(end, 1)]
+        inputs = [torch.randn(1, 1)]
         self.run_test(
             Arange(),
             inputs,

From 5e911a9765c4aad015a6075afd4b30bcca1efa79 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 3 Apr 2024 11:35:30 -0700
Subject: [PATCH 27/69] chore: delete mirror of rules_pkg

---
 WORKSPACE                          | 1 -
 third_party/tensorrt/archive/BUILD | 2 --
 2 files changed, 3 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 95abcea2d3..13c07a6008 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -17,7 +17,6 @@ http_archive(
     name = "rules_pkg",
     sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
     urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
         "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
     ],
 )
diff --git a/third_party/tensorrt/archive/BUILD b/third_party/tensorrt/archive/BUILD
index 221f2ce4b3..5c07794a20 100644
--- a/third_party/tensorrt/archive/BUILD
+++ b/third_party/tensorrt/archive/BUILD
@@ -45,7 +45,6 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )
 
@@ -182,6 +181,5 @@ cc_library(
         "nvinferplugin_headers",
         "nvinferplugin_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )

From dae0eb2321418e575c826231ce2d2e5194837f06 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 3 Apr 2024 16:10:12 -0700
Subject: [PATCH 28/69] chore: fix conv test

---
 tests/core/conversion/converters/test_conv_deconv.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/core/conversion/converters/test_conv_deconv.cpp b/tests/core/conversion/converters/test_conv_deconv.cpp
index 27baa1df5e..faaf7f2474 100644
--- a/tests/core/conversion/converters/test_conv_deconv.cpp
+++ b/tests/core/conversion/converters/test_conv_deconv.cpp
@@ -126,13 +126,13 @@ TEST(Converters, ATenConv1dWithWeightTensorsConvertsCorrectly) {
         %5 : int = prim::Constant[value=127]()
         %quant_input : Tensor = aten::fake_quantize_per_tensor_affine(%0, %3, %4, %2, %5)
         %6 : int = prim::Constant[value=6]()
-        %7 : int = prim::Constant[value=5]()
+        %7 : int = prim::Constant[value=4]()
         %8 : Device = prim::Constant[value="cuda:0"]()
         %9 : None = prim::Constant()
         %10 : int[] = prim::ListConstruct(%7)
         %11 : Tensor = aten::full(%10, %3, %6, %9, %8, %9)
         %12 : int[] = prim::ListConstruct(%7)
-        %13 : int = prim::Constant[value=1]()
+        %13 : int = prim::Constant[value=0]()
         %14 : Tensor = aten::full(%12, %13, %6, %9, %8, %9)
         %quant_wts : Tensor = aten::fake_quantize_per_channel_affine(%1, %11, %14, %13, %2, %5)
         %15 : None = prim::Constant()

From 4676cd2d289f23870aa0b1e6829ad498e6855146 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 3 Apr 2024 17:06:25 -0700
Subject: [PATCH 29/69] chore: fix trt version range

---
 py/requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/py/requirements.txt b/py/requirements.txt
index 565395b59b..19c39c8647 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,5 +5,5 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-tensorrt==10.0.0b6
+tensorrt>=10.0
 pyyaml

From 88efe8e7258c4af254299c7ba37f4af4176cba5b Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 3 Apr 2024 17:10:04 -0700
Subject: [PATCH 30/69] chore: fix trt rangfe

---
 pyproject.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pyproject.toml b/pyproject.toml
index 7468484f48..05404f87b7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,7 +8,7 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
-    "tensorrt==10.0.0b6",
+    "tensorrt>=10.0",
     "torch >=2.3.0.dev,<2.4.0",
     "pybind11==2.6.2",
     "numpy",

From f9b40e672da686591830b7a1bef1280231af6a2b Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 3 Apr 2024 17:18:01 -0700
Subject: [PATCH 31/69] chore: minor fix

---
 pyproject.toml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index 05404f87b7..7a78047be7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,7 +9,7 @@ requires = [
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
     "tensorrt>=10.0",
-    "torch >=2.3.0.dev,<2.4.0",
+    "torch>=2.3.0.dev,<2.4.0",
     "pybind11==2.6.2",
     "numpy",
 ]
@@ -42,7 +42,7 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch >=2.3.0.dev,<2.4.0",
-    "tensorrt==10.0.0b6",
+    "tensorrt>=10.0",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",

From b86aec27a3c8932d94222ca970d0f4178f742841 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 4 Apr 2024 10:26:46 -0700
Subject: [PATCH 32/69] chore: update rules_pkg

---
 WORKSPACE | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 13c07a6008..4a7a1556d3 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -15,9 +15,9 @@ py_repositories()
 
 http_archive(
     name = "rules_pkg",
-    sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
+    sha256 = "d250924a2ecc5176808fc4c25d5cf5e9e79e6346d79d5ab1c493e289e722d1d0",
     urls = [
-        "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
+        "https://github.com/bazelbuild/rules_pkg/releases/download/0.10.1/rules_pkg-0.10.1.tar.gz",
     ],
 )
 

From 6630281671d52adb765e4d816a8d5315bfbbc6ce Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 4 Apr 2024 13:16:53 -0700
Subject: [PATCH 33/69] chore: minor fixes

---
 WORKSPACE                                              | 4 ++--
 py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 4a7a1556d3..13c07a6008 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -15,9 +15,9 @@ py_repositories()
 
 http_archive(
     name = "rules_pkg",
-    sha256 = "d250924a2ecc5176808fc4c25d5cf5e9e79e6346d79d5ab1c493e289e722d1d0",
+    sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
     urls = [
-        "https://github.com/bazelbuild/rules_pkg/releases/download/0.10.1/rules_pkg-0.10.1.tar.gz",
+        "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
     ],
 )
 
diff --git a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
index ffcc9c195e..a1f6614c85 100644
--- a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
+++ b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
@@ -188,6 +188,7 @@ def run(
             if self.compilation_settings.version_compatible:
                 _LOGGER.info("Using version compatible")
                 builder_config.set_flag(trt.BuilderFlag.VERSION_COMPATIBLE)
+                builder_config.set_flag(trt.BuilderFlag.EXCLUDE_LEAN_RUNTIME)
             if self.compilation_settings.hardware_compatible:
                 _LOGGER.info("Using hardware compatible")
                 builder_config.hardware_compatibility_level = (

From fca55fe06bcba9d9282f275a2aa713f94a73b500 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 4 Apr 2024 14:22:06 -0700
Subject: [PATCH 34/69] chore: expt

---
 WORKSPACE                          | 17 +++++++++++++---
 third_party/tensorrt/archive/BUILD |  2 ++
 third_party/tensorrt/local/BUILD   | 32 ++++++++++++++++++++----------
 3 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 13c07a6008..edc5c9a050 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -17,6 +17,7 @@ http_archive(
     name = "rules_pkg",
     sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
     urls = [
+        "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
         "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
     ],
 )
@@ -67,13 +68,23 @@ http_archive(
 # Either place them in the distdir directory in third_party and use the --distdir flag
 # or modify the urls to "file:///<PATH TO TARBALL>/<TARBALL NAME>.tar.gz
 
+http_archive(
+    name = "cudnn",
+    build_file = "@//third_party/cudnn/archive:BUILD",
+    sha256 = "2a2eb89a2ab51071151c6082f1e816c702167a711a9372f9f73a7b5c4b06e01a",
+    strip_prefix = "cudnn-linux-x86_64-8.9.5.30_cuda12-archive",
+    urls = [
+        "https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.5/local_installers/12.x/cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz",
+    ],
+)
+
 http_archive(
     name = "tensorrt",
     build_file = "@//third_party/tensorrt/archive:BUILD",
-    sha256 = "7ad5c8eab8fe8803bef5d8cee54ec1f407797ac8edb8ea3186cb9f24af726486",
-    strip_prefix = "TensorRT-10.0.0.6",
+    sha256 = "0f8157a5fc5329943b338b893591373350afa90ca81239cdadd7580cd1eba254",
+    strip_prefix = "TensorRT-8.6.1.6",
     urls = [
-        "https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/tars/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz",
+        "https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz",
     ],
 )
 
diff --git a/third_party/tensorrt/archive/BUILD b/third_party/tensorrt/archive/BUILD
index 5c07794a20..221f2ce4b3 100644
--- a/third_party/tensorrt/archive/BUILD
+++ b/third_party/tensorrt/archive/BUILD
@@ -45,6 +45,7 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
+        "@cudnn",
     ],
 )
 
@@ -181,5 +182,6 @@ cc_library(
         "nvinferplugin_headers",
         "nvinferplugin_lib",
         "@cuda//:cudart",
+        "@cudnn",
     ],
 )
diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 31aa906ba4..9cbe98a41e 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -29,7 +29,9 @@ config_setting(
 cc_library(
     name = "nvinfer_headers",
     hdrs = select({
-        ":aarch64_linux": glob(
+        ":aarch64_linux": [
+            "include/aarch64-linux-gnu/NvUtils.h",
+        ] + glob(
             [
                 "include/aarch64-linux-gnu/NvInfer*.h",
             ],
@@ -38,7 +40,9 @@ cc_library(
                 "include/aarch64-linux-gnu/NvInferPluginUtils.h",
             ],
         ),
-        ":ci_rhel_x86_64_linux": glob(
+        ":ci_rhel_x86_64_linux": [
+            "include/NvUtils.h",
+        ] + glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -47,7 +51,9 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        ":windows": glob(
+        ":windows": [
+            "include/NvUtils.h",
+        ] + glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -56,7 +62,9 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        "//conditions:default": glob(
+        "//conditions:default": [
+            "include/x86_64-linux-gnu/NvUtils.h",
+        ] + glob(
             [
                 "include/x86_64-linux-gnu/NvInfer*.h",
             ],
@@ -79,7 +87,7 @@ cc_import(
     name = "nvinfer_static_lib",
     static_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvinfer_static.a",
-        ":ci_rhel_x86_64_linux": "lib/libnvinfer_static.a",
+        ":ci_rhel_x86_64_linux": "lib64/libnvinfer_static.a",
         ":windows": "lib/nvinfer.lib",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer_static.a",
     }),
@@ -90,7 +98,7 @@ cc_import(
     name = "nvinfer_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvinfer.so",
-        ":ci_rhel_x86_64_linux": "lib/libnvinfer.so",
+        ":ci_rhel_x86_64_linux": "lib64/libnvinfer.so",
         ":windows": "lib/nvinfer.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer.so",
     }),
@@ -104,6 +112,7 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
+        "@cudnn",
     ],
 )
 
@@ -113,7 +122,7 @@ cc_import(
     name = "nvparsers_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvparsers.so",
-        ":ci_rhel_x86_64_linux": "lib/libnvparsers.so",
+        ":ci_rhel_x86_64_linux": "lib64/libnvparsers.so",
         ":windows": "lib/nvparsers.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvparsers.so",
     }),
@@ -177,7 +186,7 @@ cc_import(
     name = "nvonnxparser_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvonnxparser.so",
-        ":ci_rhel_x86_64_linux": "lib/libnvonnxparser.so",
+        ":ci_rhel_x86_64_linux": "lib64/libnvonnxparser.so",
         ":windows": "lib/nvonnxparser.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser.so",
     }),
@@ -233,7 +242,7 @@ cc_import(
     name = "nvonnxparser_runtime_lib",
     shared_library = select({
         ":aarch64_linux": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so",
-        ":ci_rhel_x86_64_linux": "lib/libnvonnxparser_runtime.so",
+        ":ci_rhel_x86_64_linux": "lib64/libnvonnxparser_runtime.so",
         ":windows": "lib/nvonnxparser_runtime.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so",
     }),
@@ -281,7 +290,7 @@ cc_import(
     name = "nvcaffeparser_lib",
     shared_library = select({
         ":aarch64_linux": "lib/aarch64-linux-gnu/libnvcaffe_parsers.so",
-        ":ci_rhel_x86_64_linux": "lib/libnvcaffe_parsers.so",
+        ":ci_rhel_x86_64_linux": "lib64/libnvcaffe_parsers.so",
         ":windows": "lib/nvcaffe_parsers.dll",
         "//conditions:default": "lib/x86_64-linux-gnu/libnvcaffe_parsers.so",
     }),
@@ -329,7 +338,7 @@ cc_library(
     name = "nvinferplugin",
     srcs = select({
         ":aarch64_linux": ["lib/aarch64-linux-gnu/libnvinfer_plugin.so"],
-        ":ci_rhel_x86_64_linux": ["lib/libnvinfer_plugin.so"],
+        ":ci_rhel_x86_64_linux": ["lib64/libnvinfer_plugin.so"],
         ":windows": ["lib/nvinfer_plugin.dll"],
         "//conditions:default": ["lib/x86_64-linux-gnu/libnvinfer_plugin.so"],
     }),
@@ -357,6 +366,7 @@ cc_library(
     deps = [
         "nvinfer",
         "@cuda//:cudart",
+        "@cudnn",
     ],
     alwayslink = True,
 )

From 1ca01e782915a8073f546e53b9f171e9675e4731 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 4 Apr 2024 18:19:23 -0700
Subject: [PATCH 35/69] chore: update WORKSPACE tmpl

---
 toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl | 1 -
 1 file changed, 1 deletion(-)

diff --git a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
index 8ff4f74aaf..4a37bb6091 100644
--- a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
+++ b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
@@ -17,7 +17,6 @@ http_archive(
     name = "rules_pkg",
     sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
     urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
         "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
     ],
 )

From 6ffb85ee051604aa5c57d8c8802bc47525fcc22d Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 5 Apr 2024 16:50:34 -0700
Subject: [PATCH 36/69] chore: fix

---
 packaging/pre_build_script.sh | 3 ++-
 pyproject.toml                | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index ae73d2b773..41fb47ff79 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -2,10 +2,11 @@
 
 # Install dependencies
 python3 -m pip install pyyaml
+yum install -y ninja-build gettext
 TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
 yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
 yum check-update
-yum install -y ninja-build gettext tensorrt-${TRT_VERSION}
+yum install tensorrt-${TRT_VERSION}
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \
     && chmod +x /usr/bin/bazel
diff --git a/pyproject.toml b/pyproject.toml
index 1e29a43565..dd4cada7f2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,7 +8,7 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
-    "tensorrt>=8.6,<8.7",
+    "tensorrt==10.0.0b6",
     "torch==2.3.0",
     "pybind11==2.6.2",
     "numpy",
@@ -42,7 +42,7 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch==2.3.0",
-    "tensorrt>=8.6,<8.7",
+    "tensorrt==10.0.0b6",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",

From 76af510ebb7129460d70b759677673878d767c01 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 5 Apr 2024 17:05:18 -0700
Subject: [PATCH 37/69] chore: remove cudnn dep

---
 third_party/tensorrt/archive/BUILD | 2 --
 third_party/tensorrt/local/BUILD   | 2 --
 2 files changed, 4 deletions(-)

diff --git a/third_party/tensorrt/archive/BUILD b/third_party/tensorrt/archive/BUILD
index 221f2ce4b3..5c07794a20 100644
--- a/third_party/tensorrt/archive/BUILD
+++ b/third_party/tensorrt/archive/BUILD
@@ -45,7 +45,6 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )
 
@@ -182,6 +181,5 @@ cc_library(
         "nvinferplugin_headers",
         "nvinferplugin_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )
diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 9cbe98a41e..5136563521 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -112,7 +112,6 @@ cc_library(
         "nvinfer_headers",
         "nvinfer_lib",
         "@cuda//:cudart",
-        "@cudnn",
     ],
 )
 
@@ -366,7 +365,6 @@ cc_library(
     deps = [
         "nvinfer",
         "@cuda//:cudart",
-        "@cudnn",
     ],
     alwayslink = True,
 )

From f9cf75ae8b7c91d88195b182fda784fb6fcce792 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 5 Apr 2024 17:20:35 -0700
Subject: [PATCH 38/69] chore: fix

---
 third_party/tensorrt/local/BUILD | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD
index 5136563521..c317e16688 100644
--- a/third_party/tensorrt/local/BUILD
+++ b/third_party/tensorrt/local/BUILD
@@ -29,9 +29,7 @@ config_setting(
 cc_library(
     name = "nvinfer_headers",
     hdrs = select({
-        ":aarch64_linux": [
-            "include/aarch64-linux-gnu/NvUtils.h",
-        ] + glob(
+        ":aarch64_linux": glob(
             [
                 "include/aarch64-linux-gnu/NvInfer*.h",
             ],
@@ -40,9 +38,7 @@ cc_library(
                 "include/aarch64-linux-gnu/NvInferPluginUtils.h",
             ],
         ),
-        ":ci_rhel_x86_64_linux": [
-            "include/NvUtils.h",
-        ] + glob(
+        ":ci_rhel_x86_64_linux": glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -51,9 +47,7 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        ":windows": [
-            "include/NvUtils.h",
-        ] + glob(
+        ":windows": glob(
             [
                 "include/NvInfer*.h",
             ],
@@ -62,9 +56,7 @@ cc_library(
                 "include/NvInferPluginUtils.h",
             ],
         ),
-        "//conditions:default": [
-            "include/x86_64-linux-gnu/NvUtils.h",
-        ] + glob(
+        "//conditions:default": glob(
             [
                 "include/x86_64-linux-gnu/NvInfer*.h",
             ],

From 33ba8b2c619b57f151d6eba74dfc885f8af03d2a Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 8 Apr 2024 14:27:27 -0700
Subject: [PATCH 39/69] chore: updates

---
 packaging/pre_build_script.sh                       |  6 +++---
 .../WORKSPACE.x86_64.release.rhel.tmpl              | 13 +++++--------
 2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index 41fb47ff79..5905e44d2e 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -4,9 +4,9 @@
 python3 -m pip install pyyaml
 yum install -y ninja-build gettext
 TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
-yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
-yum check-update
-yum install tensorrt-${TRT_VERSION}
+wget -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
+tar -xvzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
+export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \
     && chmod +x /usr/bin/bazel
diff --git a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
index 4a37bb6091..cad54b1707 100644
--- a/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
+++ b/toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl
@@ -68,14 +68,11 @@ http_archive(
     urls = ["https://download.pytorch.org/libtorch/test/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip"],
 )
 
-####################################################################################
-# Locally installed dependencies (use in cases of custom dependencies or aarch64)
-####################################################################################
-
-new_local_repository(
-   name = "tensorrt",
-   path = "/usr/",
-   build_file = "@//third_party/tensorrt/local:BUILD"
+http_archive(
+    name = "tensorrt",
+    urls = ["file:////opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz",],
+    build_file = "@//third_party/tensorrt/archive:BUILD",
+    strip_prefix = "TensorRT-10.0.0.6"
 )
 
 # #########################################################################

From 923377c86e5a664ac13c992188c91748fcc44b07 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 8 Apr 2024 21:44:50 -0700
Subject: [PATCH 40/69] chore: update post-build script

---
 .github/workflows/build-test.yml | 8 +++++++-
 packaging/post_build_script.sh   | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 5573bb8d28..febc475c09 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -36,7 +36,7 @@ jobs:
           - repository: pytorch/tensorrt
             pre-script: packaging/pre_build_script.sh
             env-var-script: packaging/env_vars.txt
-            post-script: ""
+            post-script: packaging/post_build_script.sh
             smoke-test-script: ""
             package-name: torch_tensorrt
     name: Build torch-tensorrt whl package
@@ -64,6 +64,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-torchscript-fe
@@ -99,6 +100,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-dynamo-converters
@@ -126,6 +128,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-dynamo-fe
@@ -154,6 +157,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-dynamo-serde
@@ -181,6 +185,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-torch-compile-be
@@ -209,6 +214,7 @@ jobs:
           - repository: pytorch/tensorrt
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
+            post-script: packaging/post_build_script.sh
     uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
     with:
       job-name: tests-py-dynamo-core
diff --git a/packaging/post_build_script.sh b/packaging/post_build_script.sh
index e69de29bb2..c42774070a 100644
--- a/packaging/post_build_script.sh
+++ b/packaging/post_build_script.sh
@@ -0,0 +1 @@
+python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp38-none-linux_x86_64.whl
\ No newline at end of file

From 89f04dbbaf50075e7f4c0e5f4fe86f04ada43f2c Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 8 Apr 2024 22:07:54 -0700
Subject: [PATCH 41/69] chore: remove trt dep

---
 pyproject.toml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index dd4cada7f2..acad8561c6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,7 +8,6 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
-    "tensorrt==10.0.0b6",
     "torch==2.3.0",
     "pybind11==2.6.2",
     "numpy",
@@ -42,7 +41,6 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch==2.3.0",
-    "tensorrt==10.0.0b6",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",

From 7620acca4d2d73e01d3edf9af9bf51dc29075d5b Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 8 Apr 2024 22:20:14 -0700
Subject: [PATCH 42/69] chore: updates

---
 packaging/pre_build_script.sh | 2 +-
 py/requirements.txt           | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index 5905e44d2e..3243afd69f 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -10,7 +10,7 @@ export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBR
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \
     && chmod +x /usr/bin/bazel
-
+python -m pip install -r py/requirements.txt
 export TORCH_BUILD_NUMBER=$(python -c "import torch, urllib.parse as ul; print(ul.quote_plus(torch.__version__))")
 
 cat toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl | envsubst > WORKSPACE
diff --git a/py/requirements.txt b/py/requirements.txt
index 19c39c8647..360fdbb01d 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,5 +5,10 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-tensorrt>=10.0
 pyyaml
+# Extras
+ninja>=1.11.0
+cffi>=1.15.1
+pybind11==2.6.2
+wheel>=0.40.0
+future>=0.18.3

From 62332fb4236442ca8e08f8323cdad10c3bfec9c0 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 00:17:52 -0700
Subject: [PATCH 43/69] chore: set ld_library path in post script

---
 packaging/post_build_script.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/packaging/post_build_script.sh b/packaging/post_build_script.sh
index c42774070a..1ee8f77467 100644
--- a/packaging/post_build_script.sh
+++ b/packaging/post_build_script.sh
@@ -1 +1,2 @@
+export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
 python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp38-none-linux_x86_64.whl
\ No newline at end of file

From 96a8bf61e4027634d8bd85f3e6a4411816912c81 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 13:20:29 -0700
Subject: [PATCH 44/69] chore: updates

---
 packaging/pre_build_script.sh | 2 +-
 py/torch_tensorrt/__init__.py | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index 3243afd69f..c518992ab6 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -3,7 +3,7 @@
 # Install dependencies
 python3 -m pip install pyyaml
 yum install -y ninja-build gettext
-TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
+TRT_VERSION=10.0.0.6 #$(python3 -c "import versions; versions.tensorrt_version()")
 wget -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
 tar -xvzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
 export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
diff --git a/py/torch_tensorrt/__init__.py b/py/torch_tensorrt/__init__.py
index b9d2af39c5..f97de95d52 100644
--- a/py/torch_tensorrt/__init__.py
+++ b/py/torch_tensorrt/__init__.py
@@ -60,7 +60,7 @@ def _find_lib(name: str, paths: List[str]) -> str:
 
     elif sys.platform.startswith("linux"):
         LINUX_PATHS = ["/usr/local/cuda-12.1/lib64", "/usr/lib", "/usr/lib64"]
-
+        print("==== BOOL CHECK", "LD_LIBRARY_PATH" in os.environ)
         if "LD_LIBRARY_PATH" in os.environ:
             LINUX_PATHS += os.environ["LD_LIBRARY_PATH"].split(os.path.pathsep)
 
@@ -92,9 +92,8 @@ def _find_lib(name: str, paths: List[str]) -> str:
 from torch_tensorrt.runtime import *  # noqa: F403
 
 if version.parse(sanitized_torch_version()) >= version.parse("2.1.dev"):
-    from torch_tensorrt.dynamo import backend  # noqa: F401
-
     from torch_tensorrt import dynamo  # noqa: F401
+    from torch_tensorrt.dynamo import backend  # noqa: F401
 
 
 def _register_with_torch() -> None:

From 041f6a38e834bb94004c0a4910f08794a3024992 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 13:48:58 -0700
Subject: [PATCH 45/69] chore: updates

---
 packaging/post_build_script.sh | 1 +
 py/torch_tensorrt/__init__.py  | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/packaging/post_build_script.sh b/packaging/post_build_script.sh
index 1ee8f77467..0d5d045cd0 100644
--- a/packaging/post_build_script.sh
+++ b/packaging/post_build_script.sh
@@ -1,2 +1,3 @@
 export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
+echo $LD_LIBRARY_PATH
 python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp38-none-linux_x86_64.whl
\ No newline at end of file
diff --git a/py/torch_tensorrt/__init__.py b/py/torch_tensorrt/__init__.py
index f97de95d52..01f310637b 100644
--- a/py/torch_tensorrt/__init__.py
+++ b/py/torch_tensorrt/__init__.py
@@ -60,7 +60,12 @@ def _find_lib(name: str, paths: List[str]) -> str:
 
     elif sys.platform.startswith("linux"):
         LINUX_PATHS = ["/usr/local/cuda-12.1/lib64", "/usr/lib", "/usr/lib64"]
-        print("==== BOOL CHECK", "LD_LIBRARY_PATH" in os.environ)
+        print(
+            "==== BOOL CHECK",
+            "LD_LIBRARY_PATH" in os.environ,
+            " path: ",
+            os.environ["LD_LIBRARY_PATH"],
+        )
         if "LD_LIBRARY_PATH" in os.environ:
             LINUX_PATHS += os.environ["LD_LIBRARY_PATH"].split(os.path.pathsep)
 

From 83e9a0bc4f7e4281da00ea56df03f965883e285a Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 15:31:31 -0700
Subject: [PATCH 46/69] chore: disable smoke test

---
 .github/workflows/build-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index febc475c09..b05cb1e276 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -37,7 +37,7 @@ jobs:
             pre-script: packaging/pre_build_script.sh
             env-var-script: packaging/env_vars.txt
             post-script: packaging/post_build_script.sh
-            smoke-test-script: ""
+            smoke-test-script: packaging/smoke_test_script.sh
             package-name: torch_tensorrt
     name: Build torch-tensorrt whl package
     uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main

From e8529b057e7658654114e31a2e5fecca7ec0faf9 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 15:51:56 -0700
Subject: [PATCH 47/69] chore: updates

---
 .github/workflows/build-test.yml | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index b05cb1e276..330006f76e 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -15,7 +15,7 @@ on:
 
 jobs:
   generate-matrix:
-    uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main
+    uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@release/2.3
     with:
       package-type: wheel
       os: linux
@@ -40,7 +40,7 @@ jobs:
             smoke-test-script: packaging/smoke_test_script.sh
             package-name: torch_tensorrt
     name: Build torch-tensorrt whl package
-    uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main
+    uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@release/2.3
     with:
       repository: ${{ matrix.repository }}
       ref: ""
@@ -65,7 +65,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-torchscript-fe
       repository: "pytorch/tensorrt"
@@ -101,7 +101,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-dynamo-converters
       repository: "pytorch/tensorrt"
@@ -129,7 +129,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-dynamo-fe
       repository: "pytorch/tensorrt"
@@ -158,7 +158,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-dynamo-serde
       repository: "pytorch/tensorrt"
@@ -186,7 +186,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-torch-compile-be
       repository: "pytorch/tensorrt"
@@ -215,7 +215,7 @@ jobs:
             package-name: torch_tensorrt
             pre-script: packaging/pre_build_script.sh
             post-script: packaging/post_build_script.sh
-    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@main
+    uses: pytorch/tensorrt/.github/workflows/linux-test.yml@release/2.3
     with:
       job-name: tests-py-dynamo-core
       repository: "pytorch/tensorrt"

From 1357112a12995d25f9c6865544e8a71434d8a945 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Tue, 9 Apr 2024 16:41:16 -0700
Subject: [PATCH 48/69] chore: updates

---
 packaging/smoke_test_script.sh | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 packaging/smoke_test_script.sh

diff --git a/packaging/smoke_test_script.sh b/packaging/smoke_test_script.sh
new file mode 100644
index 0000000000..e69de29bb2

From 608a6d274abea87d0939bb0917ae7e42c9efb605 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 10 Apr 2024 08:20:39 -0700
Subject: [PATCH 49/69] chore: updates

---
 .github/scripts/install-torch-tensorrt.sh | 12 +++++++++++-
 .github/workflows/build-test.yml          |  3 ++-
 packaging/post_build_script.sh            |  3 ---
 packaging/smoke_test_script.sh            |  6 ++++++
 py/requirements.txt                       |  8 +-------
 5 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/.github/scripts/install-torch-tensorrt.sh b/.github/scripts/install-torch-tensorrt.sh
index 48c6c90cbf..10d5023557 100644
--- a/.github/scripts/install-torch-tensorrt.sh
+++ b/.github/scripts/install-torch-tensorrt.sh
@@ -5,6 +5,16 @@ source ${BUILD_ENV_FILE}
 ${CONDA_RUN} ${PIP_INSTALL_TORCH} torchvision
 ${CONDA_RUN} python -m pip install pyyaml mpmath==1.3.0
 export TRT_VERSION=$(${CONDA_RUN} python -c "import versions; versions.tensorrt_version()")
-${CONDA_RUN} python -m pip install /opt/torch-tensorrt-builds/torch_tensorrt*+${CU_VERSION}*.whl tensorrt~=${TRT_VERSION} tensorrt-bindings~=${TRT_VERSION} --extra-index-url=https://pypi.ngc.nvidia.com
+
+# Print PYTHON_VERSION
+printf "PYTHON_VERSION is equal to %s" ${PYTHON_VERSION//./}
+
+# Install TensorRT manually
+wget -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
+tar -xvzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
+python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp${PYTHON_VERSION//./}-none-linux_x86_64.whl
+
+# Install Torch-TensorRT
+${CONDA_RUN} python -m pip install /opt/torch-tensorrt-builds/torch_tensorrt*+${CU_VERSION}*.whl
 
 echo -e "Running test script";
diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 330006f76e..89b41df3a3 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -79,7 +79,8 @@ jobs:
         export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
         pushd .
         cd tests/modules
-        ${CONDA_RUN} python -m pip install --pre -r requirements.txt --use-deprecated=legacy-resolver
+        # Don't use requirements.txt here as it contains tensorrt and torch which should have been installed by now.
+        ${CONDA_RUN} python -m pip install numpy packaging pyyaml pybind11==2.6.2
         ${CONDA_RUN} python hub.py
         popd
         pushd .
diff --git a/packaging/post_build_script.sh b/packaging/post_build_script.sh
index 0d5d045cd0..e69de29bb2 100644
--- a/packaging/post_build_script.sh
+++ b/packaging/post_build_script.sh
@@ -1,3 +0,0 @@
-export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
-echo $LD_LIBRARY_PATH
-python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp38-none-linux_x86_64.whl
\ No newline at end of file
diff --git a/packaging/smoke_test_script.sh b/packaging/smoke_test_script.sh
index e69de29bb2..d3bed3249e 100644
--- a/packaging/smoke_test_script.sh
+++ b/packaging/smoke_test_script.sh
@@ -0,0 +1,6 @@
+# Smoke test is intentionally disabled.
+# The issue was smoke test installs the built torch_tensorrt wheel file and checks `import torch_tensorrt; print(torch_tensorrt.__version__)`
+# Since tensorrt cannot be pip installable in CI, the smoke test will fail.
+# One way we tried to handle it is manually install tensorrt wheel while by extracting from the tarball.
+# However, the TensorRT-10.0.0.6/lib path doesn't seem to show up in LD_LIBRARY_PATH even if we explicitly set it.
+# TODO: Implement a custom smoke_test script to verify torch_tensorrt installation.
\ No newline at end of file
diff --git a/py/requirements.txt b/py/requirements.txt
index 360fdbb01d..e3356a8c59 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,10 +5,4 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-pyyaml
-# Extras
-ninja>=1.11.0
-cffi>=1.15.1
-pybind11==2.6.2
-wheel>=0.40.0
-future>=0.18.3
+pyyaml
\ No newline at end of file

From 1b34b3246da47b4a621b8d818b8e57d86a9679d0 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 10 Apr 2024 08:56:19 -0700
Subject: [PATCH 50/69] chore: updates

---
 .github/workflows/build-test.yml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 89b41df3a3..278a4aecf3 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -77,6 +77,7 @@ jobs:
       script: |
         export USE_HOST_DEPS=1
         export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/modules
         # Don't use requirements.txt here as it contains tensorrt and torch which should have been installed by now.
@@ -113,6 +114,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/dynamo
         ${CONDA_RUN} python -m pip install --pre pytest-xdist timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver
@@ -141,6 +143,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/dynamo
         ${CONDA_RUN} python -m pip install --pre pytest timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver
@@ -170,6 +173,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/dynamo
         ${CONDA_RUN} python -m pip install --pre pytest timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver
@@ -198,6 +202,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/dynamo
         ${CONDA_RUN} python -m pip install --pre pytest-xdist timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver
@@ -227,6 +232,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/dynamo
         ${CONDA_RUN} python -m pip install --pre pytest-xdist timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver

From 89cb55a6af0aeacf4063ea5510c3049a5763e401 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 10 Apr 2024 11:45:13 -0700
Subject: [PATCH 51/69] chore: updates

---
 .github/workflows/build-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 278a4aecf3..c32d42c78e 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -81,7 +81,7 @@ jobs:
         pushd .
         cd tests/modules
         # Don't use requirements.txt here as it contains tensorrt and torch which should have been installed by now.
-        ${CONDA_RUN} python -m pip install numpy packaging pyyaml pybind11==2.6.2
+        ${CONDA_RUN} python -m pip install numpy packaging pyyaml transformers pybind11==2.6.2
         ${CONDA_RUN} python hub.py
         popd
         pushd .

From 4323e36461b4caeb90c9eca47e7f6887e92bed15 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 10 Apr 2024 12:41:49 -0700
Subject: [PATCH 52/69] chore: updates

---
 .github/workflows/build-test.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index c32d42c78e..1b1fa72f2f 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -81,7 +81,7 @@ jobs:
         pushd .
         cd tests/modules
         # Don't use requirements.txt here as it contains tensorrt and torch which should have been installed by now.
-        ${CONDA_RUN} python -m pip install numpy packaging pyyaml transformers pybind11==2.6.2
+        ${CONDA_RUN} python -m pip install numpy packaging pyyaml transformers timm pybind11==2.6.2
         ${CONDA_RUN} python hub.py
         popd
         pushd .

From 60b3e51bcc4e6fc93bc84909fe8cfb27617d54af Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Wed, 10 Apr 2024 15:07:23 -0700
Subject: [PATCH 53/69] chore: update hw_compat

---
 tests/py/dynamo/runtime/gen_hw_compat.py  |  33 ++++++++++++++++++++++
 tests/py/dynamo/runtime/test_hw_compat.py |   6 ++--
 tests/py/ts/models/hw_compat.ts           | Bin 386982 -> 110354 bytes
 3 files changed, 35 insertions(+), 4 deletions(-)
 create mode 100644 tests/py/dynamo/runtime/gen_hw_compat.py

diff --git a/tests/py/dynamo/runtime/gen_hw_compat.py b/tests/py/dynamo/runtime/gen_hw_compat.py
new file mode 100644
index 0000000000..e279015aa2
--- /dev/null
+++ b/tests/py/dynamo/runtime/gen_hw_compat.py
@@ -0,0 +1,33 @@
+# This script is used to generate hw_compat.ts file that's used in test_hw_compat.py
+# Generate the model on a different hardware compared to the one you're testing on to
+# verify HW compatibility feature.
+
+import torch
+import torch_tensorrt
+
+
+class MyModule(torch.nn.Module):
+    def __init__(self):
+        super().__init__()
+        self.conv = torch.nn.Conv2d(3, 16, 3, stride=1, bias=True)
+        self.relu = torch.nn.ReLU()
+
+    def forward(self, x):
+        out = self.conv(x)
+        out = self.relu(out)
+        return out
+
+
+model = MyModule().eval().cuda()
+inputs = torch.randn((1, 3, 224, 224)).to("cuda")
+
+trt_gm = torch_tensorrt.compile(
+    model,
+    ir="dynamo",
+    inputs=inputs,
+    min_block_size=1,
+    hardware_compatible=True,
+    version_compatible=True,
+)
+trt_script_model = torch.jit.trace(trt_gm, inputs)
+torch.jit.save(trt_script_model, "hw_compat.ts")
diff --git a/tests/py/dynamo/runtime/test_hw_compat.py b/tests/py/dynamo/runtime/test_hw_compat.py
index 4218cc7de0..aa238c7a4a 100644
--- a/tests/py/dynamo/runtime/test_hw_compat.py
+++ b/tests/py/dynamo/runtime/test_hw_compat.py
@@ -59,16 +59,14 @@ def forward(self, x):
         "Detected incorrect ABI version, please update this test case",
     )
     def test_hw_compat_3080_build(self):
-        inputs = [torch.randn(5, 7).cuda()]
+        inputs = [torch.randn(1, 3, 224, 224).cuda()]
 
         cwd = os.getcwd()
         os.chdir(os.path.dirname(os.path.realpath(__file__)))
         model = torch.jit.load("../../ts/models/hw_compat.ts").cuda()
         out = model(*inputs)
         self.assertTrue(
-            isinstance(out, tuple)
-            and len(out) == 1
-            and isinstance(out[0], torch.Tensor),
+            len(out) == 1 and isinstance(out, torch.Tensor),
             "Invalid output detected",
         )
         os.chdir(cwd)
diff --git a/tests/py/ts/models/hw_compat.ts b/tests/py/ts/models/hw_compat.ts
index ab43e5e040ef3850c8e0b879a973dc759565830e..27726233f28119dc4c1b52793e03efc7da7fc3da 100644
GIT binary patch
literal 110354
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

literal 386982
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%0DlbSevh3v`AK6u~1>OK5B
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
XkJtSs46Mc2I(t_qu<+#mx_kd0(QA<p


From 05627cd8aa329739e8655eed5637fecb5130c673 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 12 Apr 2024 14:45:50 -0700
Subject: [PATCH 54/69] chore: updates

---
 .../conversion/impl/normalization/ops.py      | 14 +++++-
 .../dynamo/conversion/test_layer_norm_aten.py | 49 -------------------
 2 files changed, 13 insertions(+), 50 deletions(-)

diff --git a/py/torch_tensorrt/dynamo/conversion/impl/normalization/ops.py b/py/torch_tensorrt/dynamo/conversion/impl/normalization/ops.py
index f45d067349..bbe566d0b7 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/normalization/ops.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/normalization/ops.py
@@ -452,6 +452,7 @@ def pdist(
     p: float = 2,
 ) -> Union[TRTTensor, Sequence[TRTTensor]]:
     shape = input.shape
+    # Extend input from shape [N, D] to [N, 1, D]
     extend_input = impl.shuffle.reshape(
         ctx,
         target,
@@ -460,7 +461,18 @@ def pdist(
         input,
         shape=shape[0:1] + (1,) + shape[1:],
     )
-    x = impl.elementwise.sub(ctx, target, source_ir, f"{name}_sub", extend_input, input)
+    # Expand the input from [N, 1, D] to [N, N, D]
+    x = impl.slice.expand(
+        ctx,
+        target,
+        source_ir,
+        f"{name}_sub",
+        extend_input,
+        (shape[0], shape[0]) + shape[1:],
+    )
+    # Subtract the expanded input from original input. Result shape = [N, N, D]
+    # This matrix has the distance of each sample to every other sample and hence the shape is [N, N, D]
+    x = impl.elementwise.sub(ctx, target, source_ir, f"{name}_sub", x, input)
 
     if p == 0:
         # norm = torch.sum(x!=0, dim=2)
diff --git a/tests/py/dynamo/conversion/test_layer_norm_aten.py b/tests/py/dynamo/conversion/test_layer_norm_aten.py
index 8013768214..7f43234211 100644
--- a/tests/py/dynamo/conversion/test_layer_norm_aten.py
+++ b/tests/py/dynamo/conversion/test_layer_norm_aten.py
@@ -24,31 +24,6 @@ def forward(self, x):
             inputs,
         )
 
-    def test_layernorm_with_dynamic_shape(self):
-        class LayerNorm(torch.nn.Module):
-            def forward(self, x):
-                return torch.ops.aten.layer_norm.default(
-                    x,
-                    torch.tensor([3, 224, 224]),
-                    torch.ones((3, 224, 224)),
-                    torch.zeros((3, 224, 224)),
-                    1e-05,
-                    True,
-                )
-
-        input_specs = [
-            Input(
-                shape=(-1, 3, 224, 224),
-                dtype=torch.float32,
-                shape_ranges=[((1, 3, 224, 224), (1, 3, 224, 224), (2, 3, 224, 224))],
-            ),
-        ]
-
-        self.run_test_with_dynamic_shape(
-            LayerNorm(),
-            input_specs,
-        )
-
 
 class TestNativeLayerNormConverter(DispatchTestCase):
     def test_layer_norm(self):
@@ -68,30 +43,6 @@ def forward(self, x):
             inputs,
         )
 
-    def test_layernorm_with_dynamic_shape(self):
-        class LayerNorm(torch.nn.Module):
-            def forward(self, x):
-                return torch.ops.aten.native_layer_norm.default(
-                    x,
-                    torch.tensor([3, 224, 224]),
-                    torch.ones((3, 224, 224)),
-                    torch.zeros((3, 224, 224)),
-                    1e-05,
-                )[0]
-
-        input_specs = [
-            Input(
-                shape=(-1, 3, 224, 224),
-                dtype=torch.float32,
-                shape_ranges=[((1, 3, 224, 224), (1, 3, 224, 224), (2, 3, 224, 224))],
-            ),
-        ]
-
-        self.run_test_with_dynamic_shape(
-            LayerNorm(),
-            input_specs,
-        )
-
 
 if __name__ == "__main__":
     run_tests()

From d16585f0be1c5085739d7c09b29acb81d359e921 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 12 Apr 2024 16:26:37 -0700
Subject: [PATCH 55/69] chore: update streams

---
 core/runtime/execute_engine.cpp                               | 3 +--
 .../dynamo/runtime/_PythonTorchTensorRTModule.py              | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/core/runtime/execute_engine.cpp b/core/runtime/execute_engine.cpp
index 5ff163fbfb..165328f16c 100644
--- a/core/runtime/execute_engine.cpp
+++ b/core/runtime/execute_engine.cpp
@@ -178,8 +178,7 @@ std::vector<at::Tensor> execute_engine(std::vector<at::Tensor> inputs, c10::intr
       enqueue_profiler_guard =
           std::make_unique<torch::autograd::profiler::RecordProfile>(compiled_engine->enqueue_profile_path);
     }
-    c10::cuda::CUDAStream stream = c10::cuda::getCurrentCUDAStream(inputs[0].device().index());
-
+    c10::cuda::CUDAStream stream = c10::cuda::getStreamFromPool(/*isHighPriority=*/true, inputs[0].device().index());
     // nvinfer1::IExecutionContext::enqueue is not thread safe and we need a mutex for it.
     std::unique_lock<std::mutex> lock(compiled_engine->mu);
     compiled_engine->exec_ctx->enqueueV3(stream);
diff --git a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
index 82f5817b01..a296deaba9 100644
--- a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
+++ b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
@@ -59,7 +59,7 @@ def _initialize(self) -> None:
         runtime = trt.Runtime(logger)
         self.engine = runtime.deserialize_cuda_engine(self.engine)
         self.context = self.engine.create_execution_context()
-
+        self.stream = torch.cuda.Stream(torch.cuda.current_device())
         # Indices of inputs/outputs in the trt engine bindings, in the order
         # as they are in the original PyTorch model.
 
@@ -286,7 +286,7 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                 if self.profiling_enabled
                 else nullcontext()
             ):
-                self.context.execute_async_v3(torch.cuda.current_stream().cuda_stream)
+                self.context.execute_async_v3(self.stream.cuda_stream)
 
             if len(outputs) == 1:
                 return outputs[0]

From 3d149ef78a4e39c9a249b66790721d0e02a92e7d Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 12 Apr 2024 21:30:42 -0700
Subject: [PATCH 56/69] chore: updates

---
 py/torch_tensorrt/dynamo/conversion/impl/shape.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/py/torch_tensorrt/dynamo/conversion/impl/shape.py b/py/torch_tensorrt/dynamo/conversion/impl/shape.py
index 0727eecef7..e19f44ab3a 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/shape.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/shape.py
@@ -9,6 +9,7 @@
 from torch_tensorrt.dynamo._SourceIR import SourceIR
 from torch_tensorrt.dynamo.conversion._ConversionContext import ConversionContext
 from torch_tensorrt.dynamo.conversion.converter_utils import (
+    cast_trt_tensor,
     get_positive_dim,
     get_trt_tensor,
 )
@@ -38,6 +39,12 @@ def shape(
     """
     shape_layer = ctx.net.add_shape(input_val)
     input_shape = shape_layer.get_output(0)
+    input_shape = cast_trt_tensor(
+        ctx,
+        input_shape,
+        trt.int32,
+        name + "_shape_casted",
+    )
     set_layer_name(shape_layer, target, name + "_shape", source_ir)
 
     n_dims = len(input_val.shape)
@@ -82,6 +89,12 @@ def get_shape_with_dynamic_shape(
     """
     # Ger real shape info for input_val
     input_shape = ctx.net.add_shape(input_val).get_output(0)
+    input_shape = cast_trt_tensor(
+        ctx,
+        input_shape,
+        trt.int32,
+        name + "_int32_casted",
+    )
     # input_shape.dtype is int64 in TRT 10.0
     input_np_dtype = unified_dtype_converter(input_shape.dtype, Frameworks.NUMPY)
     scale_layer = ctx.net.add_constant(

From 3addcae373f550603c904dd110c4d906dbf4bfb9 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Sat, 13 Apr 2024 01:07:35 -0700
Subject: [PATCH 57/69] chore: updates

---
 .github/scripts/install-torch-tensorrt.sh | 7 ++-----
 core/runtime/execute_engine.cpp           | 2 +-
 packaging/pre_build_script.sh             | 6 +++---
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/.github/scripts/install-torch-tensorrt.sh b/.github/scripts/install-torch-tensorrt.sh
index 10d5023557..b2b19b139d 100644
--- a/.github/scripts/install-torch-tensorrt.sh
+++ b/.github/scripts/install-torch-tensorrt.sh
@@ -6,12 +6,9 @@ ${CONDA_RUN} ${PIP_INSTALL_TORCH} torchvision
 ${CONDA_RUN} python -m pip install pyyaml mpmath==1.3.0
 export TRT_VERSION=$(${CONDA_RUN} python -c "import versions; versions.tensorrt_version()")
 
-# Print PYTHON_VERSION
-printf "PYTHON_VERSION is equal to %s" ${PYTHON_VERSION//./}
-
 # Install TensorRT manually
-wget -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
-tar -xvzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
+wget -q -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
+tar -xzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
 python -m pip install /opt/torch-tensorrt-builds/TensorRT-10.0.0.6/python/tensorrt-10.0.0b6-cp${PYTHON_VERSION//./}-none-linux_x86_64.whl
 
 # Install Torch-TensorRT
diff --git a/core/runtime/execute_engine.cpp b/core/runtime/execute_engine.cpp
index 165328f16c..a1ee30e994 100644
--- a/core/runtime/execute_engine.cpp
+++ b/core/runtime/execute_engine.cpp
@@ -178,7 +178,7 @@ std::vector<at::Tensor> execute_engine(std::vector<at::Tensor> inputs, c10::intr
       enqueue_profiler_guard =
           std::make_unique<torch::autograd::profiler::RecordProfile>(compiled_engine->enqueue_profile_path);
     }
-    c10::cuda::CUDAStream stream = c10::cuda::getStreamFromPool(/*isHighPriority=*/true, inputs[0].device().index());
+    c10::cuda::CUDAStream stream = c10::cuda::getCurrentCUDAStream(inputs[0].device().index());
     // nvinfer1::IExecutionContext::enqueue is not thread safe and we need a mutex for it.
     std::unique_lock<std::mutex> lock(compiled_engine->mu);
     compiled_engine->exec_ctx->enqueueV3(stream);
diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index c518992ab6..befb6e38d9 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -3,9 +3,9 @@
 # Install dependencies
 python3 -m pip install pyyaml
 yum install -y ninja-build gettext
-TRT_VERSION=10.0.0.6 #$(python3 -c "import versions; versions.tensorrt_version()")
-wget -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
-tar -xvzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
+TRT_VERSION=$(python3 -c "import versions; versions.tensorrt_version()")
+wget -q -P /opt/torch-tensorrt-builds/ https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.0.0/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
+tar -xzf /opt/torch-tensorrt-builds/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz -C /opt/torch-tensorrt-builds/
 export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \

From b0e92d87979bf10d5a7b7ac356868c8f006f7787 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 15 Apr 2024 12:49:39 -0700
Subject: [PATCH 58/69] chore: update hw_compat.ts

---
 tests/py/ts/models/hw_compat.ts | Bin 110354 -> 110418 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/tests/py/ts/models/hw_compat.ts b/tests/py/ts/models/hw_compat.ts
index 27726233f28119dc4c1b52793e03efc7da7fc3da..ed71663c0c77a406307a3e7c23d331c1b44b7243 100644
GIT binary patch
delta 5077
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
MYZsmT<@TBX4FM?A?f?J)

delta 5023
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


From d285d27d6384fa8101fcebe74136400d42effca8 Mon Sep 17 00:00:00 2001
From: Evan Li <zewenl@nvidia.com>
Date: Mon, 15 Apr 2024 14:06:20 -0700
Subject: [PATCH 59/69] fix dynamic shape bugs for test_binary_ops_aten

---
 .../conversion/impl/elementwise/base.py       | 71 +++++++++++--------
 1 file changed, 40 insertions(+), 31 deletions(-)

diff --git a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
index f93ec52504..d835110159 100644
--- a/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/elementwise/base.py
@@ -13,7 +13,11 @@
     cast_trt_tensor,
     get_trt_tensor,
 )
-from torch_tensorrt.fx.converters.converter_utils import set_layer_name
+from torch_tensorrt.fx.converters.converter_utils import (
+    broadcast,
+    has_dynamic_shape,
+    set_layer_name,
+)
 from torch_tensorrt.fx.types import TRTElementWiseOp, TRTTensor
 from torch_tensorrt.fx.utils import Frameworks, unified_dtype_converter
 
@@ -148,38 +152,43 @@ def convert_binary_elementwise(
             ctx, rhs_val, trt_promoted_type, f"{name}_cast_rhs_val", target, source_ir
         )
 
-    lhs_val_shape = lhs_val.shape
-    rhs_val_shape = rhs_val.shape
-    rank_diff = len(lhs_val_shape) - len(rhs_val_shape)
-    if rank_diff > 0:
-        rhs_val = impl.slice.expand(
-            ctx, target, source_ir, f"{name}_expand_rhs_val", rhs_val, lhs_val_shape
-        )
-    elif rank_diff < 0:
-        lhs_val = impl.slice.expand(
-            ctx, target, source_ir, f"{name}_expand_lhs_val", lhs_val, rhs_val_shape
+    if has_dynamic_shape(lhs_val.shape) or has_dynamic_shape(rhs_val.shape):
+        lhs_val, rhs_val = broadcast(
+            ctx.net, lhs_val, rhs_val, f"{name}_lhs", f"{name}_rhs"
         )
     else:
-        if tuple(lhs_val_shape) != tuple(rhs_val_shape):
-            sum_diff = sum(lhs_val_shape) - sum(rhs_val_shape)
-            if sum_diff > 0:
-                rhs_val = impl.slice.expand(
-                    ctx,
-                    target,
-                    source_ir,
-                    f"{name}_expand_rhs_val",
-                    rhs_val,
-                    lhs_val_shape,
-                )
-            elif sum_diff < 0:
-                lhs_val = impl.slice.expand(
-                    ctx,
-                    target,
-                    source_ir,
-                    f"{name}_expand_lhs_val",
-                    lhs_val,
-                    rhs_val_shape,
-                )
+        lhs_val_shape = lhs_val.shape
+        rhs_val_shape = rhs_val.shape
+        rank_diff = len(lhs_val_shape) - len(rhs_val_shape)
+        if rank_diff > 0:
+            rhs_val = impl.slice.expand(
+                ctx, target, source_ir, f"{name}_expand_rhs_val", rhs_val, lhs_val_shape
+            )
+        elif rank_diff < 0:
+            lhs_val = impl.slice.expand(
+                ctx, target, source_ir, f"{name}_expand_lhs_val", lhs_val, rhs_val_shape
+            )
+        else:
+            if tuple(lhs_val_shape) != tuple(rhs_val_shape):
+                sum_diff = sum(lhs_val_shape) - sum(rhs_val_shape)
+                if sum_diff > 0:
+                    rhs_val = impl.slice.expand(
+                        ctx,
+                        target,
+                        source_ir,
+                        f"{name}_expand_rhs_val",
+                        rhs_val,
+                        lhs_val_shape,
+                    )
+                elif sum_diff < 0:
+                    lhs_val = impl.slice.expand(
+                        ctx,
+                        target,
+                        source_ir,
+                        f"{name}_expand_lhs_val",
+                        lhs_val,
+                        rhs_val_shape,
+                    )
 
     layer = ctx.net.add_elementwise(lhs_val, rhs_val, op_type)
     set_layer_name(layer, target, name, source_ir)

From d78a8466c961ae11e061ea4d253a0bcb4809cbcd Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 15 Apr 2024 18:40:05 -0700
Subject: [PATCH 60/69] chore: revert layer_norm test

---
 .../dynamo/conversion/test_layer_norm_aten.py | 49 +++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/tests/py/dynamo/conversion/test_layer_norm_aten.py b/tests/py/dynamo/conversion/test_layer_norm_aten.py
index 7f43234211..8013768214 100644
--- a/tests/py/dynamo/conversion/test_layer_norm_aten.py
+++ b/tests/py/dynamo/conversion/test_layer_norm_aten.py
@@ -24,6 +24,31 @@ def forward(self, x):
             inputs,
         )
 
+    def test_layernorm_with_dynamic_shape(self):
+        class LayerNorm(torch.nn.Module):
+            def forward(self, x):
+                return torch.ops.aten.layer_norm.default(
+                    x,
+                    torch.tensor([3, 224, 224]),
+                    torch.ones((3, 224, 224)),
+                    torch.zeros((3, 224, 224)),
+                    1e-05,
+                    True,
+                )
+
+        input_specs = [
+            Input(
+                shape=(-1, 3, 224, 224),
+                dtype=torch.float32,
+                shape_ranges=[((1, 3, 224, 224), (1, 3, 224, 224), (2, 3, 224, 224))],
+            ),
+        ]
+
+        self.run_test_with_dynamic_shape(
+            LayerNorm(),
+            input_specs,
+        )
+
 
 class TestNativeLayerNormConverter(DispatchTestCase):
     def test_layer_norm(self):
@@ -43,6 +68,30 @@ def forward(self, x):
             inputs,
         )
 
+    def test_layernorm_with_dynamic_shape(self):
+        class LayerNorm(torch.nn.Module):
+            def forward(self, x):
+                return torch.ops.aten.native_layer_norm.default(
+                    x,
+                    torch.tensor([3, 224, 224]),
+                    torch.ones((3, 224, 224)),
+                    torch.zeros((3, 224, 224)),
+                    1e-05,
+                )[0]
+
+        input_specs = [
+            Input(
+                shape=(-1, 3, 224, 224),
+                dtype=torch.float32,
+                shape_ranges=[((1, 3, 224, 224), (1, 3, 224, 224), (2, 3, 224, 224))],
+            ),
+        ]
+
+        self.run_test_with_dynamic_shape(
+            LayerNorm(),
+            input_specs,
+        )
+
 
 if __name__ == "__main__":
     run_tests()

From 38642bb9ef8b4da63b25363cde751dc17a3812b9 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 18 Apr 2024 16:07:04 -0700
Subject: [PATCH 61/69] chore: updates

---
 py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
index 05808dd37c..9a75add755 100644
--- a/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
+++ b/py/torch_tensorrt/dynamo/conversion/_TRTInterpreter.py
@@ -313,7 +313,7 @@ def run(
         )
         timing_cache = self._create_timing_cache(builder_config, existing_cache)
 
-        engine = self.builder.build_engine(self.ctx.net, builder_config)
+        engine = self.builder.build_serialized_network(self.ctx.net, builder_config)
         assert engine
 
         serialized_cache = (

From d15dd72c38e91ddc20f10b5452f76239e16f819a Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Thu, 18 Apr 2024 17:21:21 -0700
Subject: [PATCH 62/69] chore: updates

---
 py/torch_tensorrt/_enums.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/py/torch_tensorrt/_enums.py b/py/torch_tensorrt/_enums.py
index 5c16cd03cd..062abb9a87 100644
--- a/py/torch_tensorrt/_enums.py
+++ b/py/torch_tensorrt/_enums.py
@@ -107,7 +107,7 @@ def _from(
                 return dtype.f16
             elif t == trt.float32:
                 return dtype.f32
-            elif trt.__version__ >= "7.0" and t == trt.bool:
+            elif t == trt.bool:
                 return dtype.b
             else:
                 raise TypeError(

From dee9aa02d941be5312f7e3cceef5ad4f887aefe1 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 19 Apr 2024 09:23:09 -0700
Subject: [PATCH 63/69] chore: updates

---
 .github/workflows/build-test.yml            | 1 +
 tests/py/dynamo/conversion/test_erf_aten.py | 2 +-
 tests/py/dynamo/conversion/test_neg_aten.py | 2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 97f4ad2ba0..f4d39bd056 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -264,6 +264,7 @@ jobs:
       pre-script: ${{ matrix.pre-script }}
       script: |
         export USE_HOST_DEPS=1
+        export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBRARY_PATH
         pushd .
         cd tests/py/core
         ${CONDA_RUN} python -m pip install --pre pytest-xdist timm transformers parameterized expecttest==0.1.6 --use-deprecated=legacy-resolver
diff --git a/tests/py/dynamo/conversion/test_erf_aten.py b/tests/py/dynamo/conversion/test_erf_aten.py
index d65788bc85..d9d201b0ae 100644
--- a/tests/py/dynamo/conversion/test_erf_aten.py
+++ b/tests/py/dynamo/conversion/test_erf_aten.py
@@ -22,7 +22,7 @@ def forward(self, input):
                 return torch.ops.aten.erf.default(input)
 
         inputs = [torch.randn(x, dtype=type)]
-        self.run_test(erf(), inputs, precision=type, output_dtypes=[type])
+        self.run_test(erf(), inputs, precision=type)
 
     @parameterized.expand(
         [
diff --git a/tests/py/dynamo/conversion/test_neg_aten.py b/tests/py/dynamo/conversion/test_neg_aten.py
index 818d9c5a83..795a78354f 100644
--- a/tests/py/dynamo/conversion/test_neg_aten.py
+++ b/tests/py/dynamo/conversion/test_neg_aten.py
@@ -22,7 +22,7 @@ def forward(self, input):
                 return torch.ops.aten.neg.default(input)
 
         inputs = [torch.randn(x, dtype=type)]
-        self.run_test(neg(), inputs, precision=type, output_dtypes=[type])
+        self.run_test(neg(), inputs, precision=type)
 
     @parameterized.expand(
         [

From c05d675d5db3a5b12fee6e2505dfdc9a4b51ccaf Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 19 Apr 2024 16:25:01 -0700
Subject: [PATCH 64/69] chore: update stream in python runtime

---
 .../runtime/_PythonTorchTensorRTModule.py      |   3 +--
 tests/py/ts/models/hw_compat.ts                | Bin 110418 -> 0 bytes
 2 files changed, 1 insertion(+), 2 deletions(-)
 delete mode 100644 tests/py/ts/models/hw_compat.ts

diff --git a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
index ef24a57f8e..49ed64a953 100644
--- a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
+++ b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
@@ -59,7 +59,6 @@ def _initialize(self) -> None:
         runtime = trt.Runtime(logger)
         self.engine = runtime.deserialize_cuda_engine(self.engine)
         self.context = self.engine.create_execution_context()
-        self.stream = torch.cuda.Stream(torch.cuda.current_device())
         # Indices of inputs/outputs in the trt engine bindings, in the order
         # as they are in the original PyTorch model.
 
@@ -282,7 +281,7 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                 if self.profiling_enabled
                 else nullcontext()
             ):
-                self.context.execute_async_v3(self.stream.cuda_stream)
+                self.context.execute_async_v3(torch.cuda.current_stream().cuda_stream)
 
             if len(outputs) == 1:
                 return outputs[0]
diff --git a/tests/py/ts/models/hw_compat.ts b/tests/py/ts/models/hw_compat.ts
deleted file mode 100644
index ed71663c0c77a406307a3e7c23d331c1b44b7243..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 110418
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


From 23296573c4eb02b7687f44cd56da0658af6a5980 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 19 Apr 2024 16:42:55 -0700
Subject: [PATCH 65/69] chore: update hw_compat.ts

---
 tests/py/ts/models/hw_compat.ts | Bin 0 -> 110481 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tests/py/ts/models/hw_compat.ts

diff --git a/tests/py/ts/models/hw_compat.ts b/tests/py/ts/models/hw_compat.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3cf583c78824407d066054b56da3095b37c2615d
GIT binary patch
literal 110481
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

literal 0
HcmV?d00001


From b8a87099015a5180c5faadc66455542c3299fa2e Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 19 Apr 2024 23:22:46 -0700
Subject: [PATCH 66/69] chore: updates

---
 tests/py/dynamo/lowering/test_aten_lowering_passes.py | 2 +-
 tests/py/dynamo/testing_utilities.py                  | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/tests/py/dynamo/lowering/test_aten_lowering_passes.py b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
index 5c0a1bb774..2d7a4731f5 100644
--- a/tests/py/dynamo/lowering/test_aten_lowering_passes.py
+++ b/tests/py/dynamo/lowering/test_aten_lowering_passes.py
@@ -453,7 +453,7 @@ def forward(self, input, weight, bias):
         self.assertAlmostEqual(
             max_diff,
             0,
-            DECIMALS_OF_AGREEMENT_3,
+            DECIMALS_OF_AGREEMENT,
             msg=f"Linear TRT outputs don't match with the original model.",
         )
         torch._dynamo.reset()
diff --git a/tests/py/dynamo/testing_utilities.py b/tests/py/dynamo/testing_utilities.py
index c815d2fde4..742b9fc1a3 100644
--- a/tests/py/dynamo/testing_utilities.py
+++ b/tests/py/dynamo/testing_utilities.py
@@ -14,7 +14,6 @@
 )
 
 DECIMALS_OF_AGREEMENT = 4
-DECIMALS_OF_AGREEMENT_3 = 3
 
 
 def fx_dynamo_testing_backend(

From 44778e11f9feecad1f5123489911339c9a79bf99 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Fri, 19 Apr 2024 23:49:29 -0700
Subject: [PATCH 67/69] chore: updates

---
 cpp/include/torch_tensorrt/ptq.h                          | 8 ++++----
 .../dynamo/runtime/_PythonTorchTensorRTModule.py          | 5 -----
 pyproject.toml                                            | 2 ++
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/cpp/include/torch_tensorrt/ptq.h b/cpp/include/torch_tensorrt/ptq.h
index e88da06b0c..d8570f0e6e 100644
--- a/cpp/include/torch_tensorrt/ptq.h
+++ b/cpp/include/torch_tensorrt/ptq.h
@@ -21,10 +21,10 @@
 #include "torch_tensorrt/macros.h"
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-// namespace nvinfer1 {
-// class IInt8Calibrator;
-// class IInt8EntropyCalibrator2;
-// } // namespace nvinfer1
+namespace nvinfer1 {
+class IInt8Calibrator;
+class IInt8EntropyCalibrator2;
+} // namespace nvinfer1
 
 namespace torch_tensorrt {
 namespace ptq {
diff --git a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
index 49ed64a953..7b82d41cb6 100644
--- a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
+++ b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
@@ -209,11 +209,6 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
 
                 contiguous_inputs: List[torch.Tensor] = [i.contiguous() for i in inputs]
                 bindings = []
-                # [None] * (
-                #     len(self.input_names)
-                #     + len(self.output_names)
-                #     # + len(self.hidden_output_names) # TODO: Verify if this is required
-                # )
                 for i, input_name in enumerate(self.input_names):
                     if not contiguous_inputs[i].is_cuda:
                         logger.warning(
diff --git a/pyproject.toml b/pyproject.toml
index 79e5391f52..ec6c0fe19c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,6 +8,7 @@ requires = [
     "cffi>=1.15.1",
     "typing-extensions>=4.7.0",
     "future>=0.18.3",
+    "tensorrt",
     "torch==2.3.0",
     "pybind11==2.6.2",
     "numpy",
@@ -41,6 +42,7 @@ requires-python = ">=3.8"
 keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
 dependencies = [
     "torch==2.3.0",
+    "tensorrt",
     "packaging>=23",
     "numpy",
     "typing-extensions>=4.7.0",

From 0dbbcd71da88f437e7c87a040138fdfe51d23031 Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Sat, 20 Apr 2024 01:22:00 -0700
Subject: [PATCH 68/69] chore: updates

---
 cpp/include/torch_tensorrt/ptq.h | 8 ++++----
 packaging/pre_build_script.sh    | 2 +-
 py/requirements.txt              | 3 ++-
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/cpp/include/torch_tensorrt/ptq.h b/cpp/include/torch_tensorrt/ptq.h
index d8570f0e6e..e88da06b0c 100644
--- a/cpp/include/torch_tensorrt/ptq.h
+++ b/cpp/include/torch_tensorrt/ptq.h
@@ -21,10 +21,10 @@
 #include "torch_tensorrt/macros.h"
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-namespace nvinfer1 {
-class IInt8Calibrator;
-class IInt8EntropyCalibrator2;
-} // namespace nvinfer1
+// namespace nvinfer1 {
+// class IInt8Calibrator;
+// class IInt8EntropyCalibrator2;
+// } // namespace nvinfer1
 
 namespace torch_tensorrt {
 namespace ptq {
diff --git a/packaging/pre_build_script.sh b/packaging/pre_build_script.sh
index befb6e38d9..8f5d1d8acc 100755
--- a/packaging/pre_build_script.sh
+++ b/packaging/pre_build_script.sh
@@ -10,7 +10,7 @@ export LD_LIBRARY_PATH=/opt/torch-tensorrt-builds/TensorRT-10.0.0.6/lib:$LD_LIBR
 wget https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 \
     && mv bazelisk-linux-amd64 /usr/bin/bazel \
     && chmod +x /usr/bin/bazel
-python -m pip install -r py/requirements.txt
+
 export TORCH_BUILD_NUMBER=$(python -c "import torch, urllib.parse as ul; print(ul.quote_plus(torch.__version__))")
 
 cat toolchains/ci_workspaces/WORKSPACE.x86_64.release.rhel.tmpl | envsubst > WORKSPACE
diff --git a/py/requirements.txt b/py/requirements.txt
index e3356a8c59..d402fd501e 100644
--- a/py/requirements.txt
+++ b/py/requirements.txt
@@ -5,4 +5,5 @@ pybind11==2.6.2
 torch==2.3.0
 torchvision==0.18.0
 --extra-index-url https://pypi.ngc.nvidia.com
-pyyaml
\ No newline at end of file
+pyyaml
+tensorrt
\ No newline at end of file

From 89c3d76b7e94a8f37df8937f0552f75633b3445e Mon Sep 17 00:00:00 2001
From: Dheeraj Peri <peri.dheeraj@gmail.com>
Date: Mon, 22 Apr 2024 16:01:37 -0700
Subject: [PATCH 69/69] chore: updates

---
 core/runtime/TRTEngine.cpp                    |  2 +
 cpp/include/torch_tensorrt/ptq.h              |  5 --
 .../runtime/_PythonTorchTensorRTModule.py     | 53 ++-----------------
 3 files changed, 6 insertions(+), 54 deletions(-)

diff --git a/core/runtime/TRTEngine.cpp b/core/runtime/TRTEngine.cpp
index fcbb403e2c..4a33907bec 100644
--- a/core/runtime/TRTEngine.cpp
+++ b/core/runtime/TRTEngine.cpp
@@ -133,6 +133,7 @@ TRTEngine::TRTEngine(
           trt_idx = idx;
           if (cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kINPUT) {
             is_input = true;
+            break;
           }
         }
       }
@@ -161,6 +162,7 @@ TRTEngine::TRTEngine(
           trt_idx = idx;
           if (cuda_engine->getTensorIOMode(binding_name.c_str()) == nvinfer1::TensorIOMode::kOUTPUT) {
             is_output = true;
+            break;
           }
         }
       }
diff --git a/cpp/include/torch_tensorrt/ptq.h b/cpp/include/torch_tensorrt/ptq.h
index e88da06b0c..6650f45fe9 100644
--- a/cpp/include/torch_tensorrt/ptq.h
+++ b/cpp/include/torch_tensorrt/ptq.h
@@ -21,11 +21,6 @@
 #include "torch_tensorrt/macros.h"
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-// namespace nvinfer1 {
-// class IInt8Calibrator;
-// class IInt8EntropyCalibrator2;
-// } // namespace nvinfer1
-
 namespace torch_tensorrt {
 namespace ptq {
 TORCHTRT_API bool get_batch_impl(void* bindings[], const char* names[], int nbBindings, torch::Tensor& data);
diff --git a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
index 7b82d41cb6..0c152e15f1 100644
--- a/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
+++ b/py/torch_tensorrt/dynamo/runtime/_PythonTorchTensorRTModule.py
@@ -15,6 +15,7 @@
     _select_rt_device,
     multi_gpu_device_check,
 )
+from torch_tensorrt.logging import TRT_LOGGER
 
 logger = logging.getLogger(__name__)
 
@@ -55,39 +56,13 @@ def __init__(
 
     def _initialize(self) -> None:
         self.initialized = True
-        logger = trt.Logger()
-        runtime = trt.Runtime(logger)
+        runtime = trt.Runtime(TRT_LOGGER)
         self.engine = runtime.deserialize_cuda_engine(self.engine)
         self.context = self.engine.create_execution_context()
-        # Indices of inputs/outputs in the trt engine bindings, in the order
-        # as they are in the original PyTorch model.
-
-        # TODO: Verify if the following is required especially the hidden outputs
-        # self.input_binding_indices_in_order: Sequence[int] = [
-        #     self.engine.get_binding_index(name) for name in self.input_names
-        # ]
-        # self.output_binding_indices_in_order: Sequence[int] = [
-        #     self.engine.get_binding_index(name) for name in self.output_names
-        # ]
-        # primary_input_outputs = set()
-        # primary_input_outputs.update(self.input_binding_indices_in_order)
-        # primary_input_outputs.update(self.output_binding_indices_in_order)
-        # self.hidden_output_binding_indices_in_order: Sequence[int] = []
-        # self.hidden_output_names: Sequence[str] = []
-        # for i in range(
-        #     self.engine.num_bindings // self.engine.num_optimization_profiles
-        # ):
-        #     if i not in primary_input_outputs:
-        #         self.hidden_output_binding_indices_in_order.append(i)
-        #         self.hidden_output_names.append(self.engine.get_binding_name(i))
 
         assert (
             self.engine.num_io_tensors // self.engine.num_optimization_profiles
-        ) == (
-            len(self.input_names)
-            + len(self.output_names)
-            # + len(self.hidden_output_names) #TODO: Verify if this is required
-        )
+        ) == (len(self.input_names) + len(self.output_names))
 
         self.input_dtypes = [
             dtype._from(self.engine.get_tensor_dtype(input_name))
@@ -105,14 +80,6 @@ def _initialize(self) -> None:
             for output_name in self.output_names
         ]
 
-        # TODO: Verify what this is for ?
-        # self.hidden_output_dtypes = [
-        #     unified_dtype_converter(
-        #         self.engine.get_binding_dtype(idx), Frameworks.TORCH
-        #     )
-        #     for idx in self.hidden_output_binding_indices_in_order
-        # ]
-
     def _check_initialized(self) -> None:
         if not self.initialized:
             raise RuntimeError("PythonTorchTensorRTModule is not initialized.")
@@ -138,8 +105,7 @@ def _load_from_state_dict(
         # Run multi-gpu device check to validate engine instantiation
         multi_gpu_device_check()
 
-        logger = trt.Logger()
-        runtime = trt.Runtime(logger)
+        runtime = trt.Runtime(TRT_LOGGER)
         self.engine = runtime.deserialize_cuda_engine(engine_bytes)
 
         self.input_names = state_dict[prefix + "input_names"]
@@ -253,16 +219,6 @@ def forward(self, *inputs: torch.Tensor) -> torch.Tensor | Tuple[torch.Tensor, .
                     bindings.append(output.data_ptr())
                     outputs.append(output)
 
-                # TODO: Check what is this for ?
-                # for i, idx in enumerate(self.hidden_output_binding_indices_in_order):
-                #     shape = tuple(self.context.get_binding_shape(idx))
-
-                #     output = torch.empty(
-                #         size=shape,
-                #         dtype=self.hidden_output_dtypes[i],
-                #         device=torch.cuda.current_device(),
-                #     )
-
             # Assign tensor address appropriately
             for idx in range(self.engine.num_io_tensors):
                 self.context.set_tensor_address(
@@ -300,7 +256,6 @@ def disable_profiling(self) -> None:
         Disable TensorRT profiling.
         """
         self._check_initialized()
-
         torch.cuda.synchronize()
         del self.context
         self.context = self.engine.create_execution_context()