From a762495359f327369cea6efc85bcd580fb0c8e57 Mon Sep 17 00:00:00 2001 From: "Yanan Cao (Meta Employee)" Date: Fri, 15 Mar 2024 13:27:37 -0700 Subject: [PATCH] Remove error anti-pattern when dealing with dynamic shape output (#121681) Summary: There are cases where capture_dynamic_output_shape_ops=True and we will still see DynamicOutputShapeException. For example, when an op doesn't have a meta kernel implemented to return the correct dynamic shape output. If we blindly give users instructions to set capture_dynamic_output_shape_ops to True, users would try it and see no change. As witnessed in this issue: https://github.com/pytorch/pytorch/issues/121036#issuecomment-1985221435 X-link: https://github.com/pytorch/pytorch/pull/121681 Approved by: https://github.com/tugsbayasgalan Reviewed By: osalpekar Differential Revision: D54919382 Pulled By: gmagogsfm fbshipit-source-id: 9d022c13a22a4201f26afec844a822467a63d71e --- userbenchmark/dynamo/dynamobench/_dynamo/utils.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/userbenchmark/dynamo/dynamobench/_dynamo/utils.py b/userbenchmark/dynamo/dynamobench/_dynamo/utils.py index 230974062f..1974eb0b36 100644 --- a/userbenchmark/dynamo/dynamobench/_dynamo/utils.py +++ b/userbenchmark/dynamo/dynamobench/_dynamo/utils.py @@ -1684,10 +1684,17 @@ def get_fake_value(node, tx, allow_non_graph_fake=False): elif isinstance( cause, torch._subclasses.fake_tensor.DynamicOutputShapeException ): - unimplemented( - f"dynamic shape operator: {cause.func}; " - "to enable, set torch._dynamo.config.capture_dynamic_output_shape_ops = True" - ) + if not torch._dynamo.config.capture_dynamic_output_shape_ops: + unimplemented( + f"dynamic shape operator: {cause.func}; " + "to enable, set torch._dynamo.config.capture_dynamic_output_shape_ops = True" + ) + else: + unimplemented( + f"dynamic shape operator: {cause.func}; " + "Operator does not have a meta kernel that supports dynamic output shapes, " + "please report an issue to PyTorch" + ) elif isinstance( cause, torch._subclasses.fake_tensor.UnsupportedOperatorException ):