diff --git a/python/paddle/tensorrt/impls/creation.py b/python/paddle/tensorrt/impls/creation.py index 8bd767bccf8221..6f9ec8eb5d1115 100644 --- a/python/paddle/tensorrt/impls/creation.py +++ b/python/paddle/tensorrt/impls/creation.py @@ -129,7 +129,14 @@ def arange_converter(network, paddle_op, inputs): name=[paddle_op.name(), 'quotient_tensor'], ) else: - quotient_tensor = f_quotient_tensor + # zero_tensor (above) is int32; on TRT>=10 the integer quotient is int64, + # which would mismatch in the trt_sub below. Cast it to int32 too. + quotient_tensor = trt_cast( + network, + f_quotient_tensor, + trt.int32, + name=[paddle_op.name(), 'quotient_tensor'], + ) delta_1 = trt_sub( network, diff --git a/python/paddle/tensorrt/impls/manipulation.py b/python/paddle/tensorrt/impls/manipulation.py index bc36905369d31a..e0656366e491b9 100644 --- a/python/paddle/tensorrt/impls/manipulation.py +++ b/python/paddle/tensorrt/impls/manipulation.py @@ -947,9 +947,13 @@ def stack_converter(network, paddle_op, inputs): if axis < 0: axis += output_rank - shape_tensor = network.add_shape(input_tensors[0]) - set_layer_name(shape_tensor, paddle_op) - shape_tensor = shape_tensor.get_output(0) + # Use trt_shape() instead of raw add_shape: TRT 10.8 changed Shape's output + # to int64, which then collides with the int32 add_1D_constant_layer below in + # add_concatenation ("Error Code 4: incompatible types Int32 and Int64"). + # trt_shape() casts the shape tensor back to int32 on TRT>=10. + shape_tensor = trt_shape( + network, input_tensors[0], name=[paddle_op.name(), 'shape_tensor'] + ) shape_tensor_vec = [] for i in range(output_rank): if i < axis: