xref: /aosp_15_r20/external/pytorch/test/dynamo/test_exc.py (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker# Owner(s): ["module: dynamo"]
2*da0073e9SAndroid Build Coastguard Worker
3*da0073e9SAndroid Build Coastguard Workerimport logging
4*da0073e9SAndroid Build Coastguard Workerimport unittest
5*da0073e9SAndroid Build Coastguard Worker
6*da0073e9SAndroid Build Coastguard Workerimport torch
7*da0073e9SAndroid Build Coastguard Workerimport torch._dynamo
8*da0073e9SAndroid Build Coastguard Workerimport torch._dynamo.config
9*da0073e9SAndroid Build Coastguard Workerimport torch._dynamo.test_case
10*da0073e9SAndroid Build Coastguard Workerfrom torch._dynamo.comptime import comptime
11*da0073e9SAndroid Build Coastguard Workerfrom torch._dynamo.exc import Unsupported
12*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.common_device_type import skipIf
13*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.common_utils import (
14*da0073e9SAndroid Build Coastguard Worker    IS_FBCODE,
15*da0073e9SAndroid Build Coastguard Worker    munge_exc,
16*da0073e9SAndroid Build Coastguard Worker    skipIfWindows,
17*da0073e9SAndroid Build Coastguard Worker    TEST_Z3,
18*da0073e9SAndroid Build Coastguard Worker)
19*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.logging_utils import LoggingTestCase, make_logging_test
20*da0073e9SAndroid Build Coastguard Worker
21*da0073e9SAndroid Build Coastguard Worker
22*da0073e9SAndroid Build Coastguard Workerclass ExcTests(LoggingTestCase):
23*da0073e9SAndroid Build Coastguard Worker    maxDiff = None
24*da0073e9SAndroid Build Coastguard Worker
25*da0073e9SAndroid Build Coastguard Worker    def test_unsupported_real_stack(self):
26*da0073e9SAndroid Build Coastguard Worker        # exercise Unsupported constructor and augment_exc_message
27*da0073e9SAndroid Build Coastguard Worker        def fn002(x):
28*da0073e9SAndroid Build Coastguard Worker            torch._dynamo.graph_break()
29*da0073e9SAndroid Build Coastguard Worker
30*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
31*da0073e9SAndroid Build Coastguard Worker            x = x + 1
32*da0073e9SAndroid Build Coastguard Worker            fn002(x)
33*da0073e9SAndroid Build Coastguard Worker
34*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInlineMunged(
35*da0073e9SAndroid Build Coastguard Worker            Unsupported,
36*da0073e9SAndroid Build Coastguard Worker            lambda: torch.compile(fn001, backend="eager", fullgraph=True)(
37*da0073e9SAndroid Build Coastguard Worker                torch.randn(1)
38*da0073e9SAndroid Build Coastguard Worker            ),
39*da0073e9SAndroid Build Coastguard Worker            """\
40*da0073e9SAndroid Build Coastguard Worker'skip function graph_break in file _dynamo/decorators.py'
41*da0073e9SAndroid Build Coastguard Worker
42*da0073e9SAndroid Build Coastguard Workerfrom user code:
43*da0073e9SAndroid Build Coastguard Worker   File "test_exc.py", line N, in fn001
44*da0073e9SAndroid Build Coastguard Worker    fn002(x)
45*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in fn002
46*da0073e9SAndroid Build Coastguard Worker    torch._dynamo.graph_break()""",
47*da0073e9SAndroid Build Coastguard Worker        )
48*da0073e9SAndroid Build Coastguard Worker
49*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(verbose=True, suppress_errors=True)
50*da0073e9SAndroid Build Coastguard Worker    @make_logging_test()
51*da0073e9SAndroid Build Coastguard Worker    @unittest.skipIf(IS_FBCODE, "stack trace slightly different in fbcode")
52*da0073e9SAndroid Build Coastguard Worker    def test_internal_error_suppress_errors(self, records):
53*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
54*da0073e9SAndroid Build Coastguard Worker            def f(ctx):
55*da0073e9SAndroid Build Coastguard Worker                raise AssertionError
56*da0073e9SAndroid Build Coastguard Worker
57*da0073e9SAndroid Build Coastguard Worker            comptime(f)
58*da0073e9SAndroid Build Coastguard Worker
59*da0073e9SAndroid Build Coastguard Worker        torch.compile(fn001, backend="eager")(torch.randn(1))
60*da0073e9SAndroid Build Coastguard Worker
61*da0073e9SAndroid Build Coastguard Worker        record = self.getRecord(records, "WON'T CONVERT")
62*da0073e9SAndroid Build Coastguard Worker
63*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInline(
64*da0073e9SAndroid Build Coastguard Worker            munge_exc(record.getMessage()),
65*da0073e9SAndroid Build Coastguard Worker            """\
66*da0073e9SAndroid Build Coastguard WorkerWON'T CONVERT fn001 test_exc.py line N
67*da0073e9SAndroid Build Coastguard Worker========== TorchDynamo Stack Trace ==========
68*da0073e9SAndroid Build Coastguard WorkerTraceback (most recent call last):
69*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in f
70*da0073e9SAndroid Build Coastguard Worker    raise AssertionError
71*da0073e9SAndroid Build Coastguard WorkerAssertionError:
72*da0073e9SAndroid Build Coastguard Worker
73*da0073e9SAndroid Build Coastguard Workerfrom user code:
74*da0073e9SAndroid Build Coastguard Worker   File "test_exc.py", line N, in fn001
75*da0073e9SAndroid Build Coastguard Worker    comptime(f)
76*da0073e9SAndroid Build Coastguard Worker
77*da0073e9SAndroid Build Coastguard Worker
78*da0073e9SAndroid Build Coastguard Worker========== The above exception occurred while processing the following code ==========
79*da0073e9SAndroid Build Coastguard Worker
80*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in test_internal_error_suppress_errors
81*da0073e9SAndroid Build Coastguard Worker    torch.compile(fn001, backend="eager")(torch.randn(1))
82*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in fn001
83*da0073e9SAndroid Build Coastguard Worker    comptime(f)
84*da0073e9SAndroid Build Coastguard Worker
85*da0073e9SAndroid Build Coastguard Worker==========""",
86*da0073e9SAndroid Build Coastguard Worker        )
87*da0073e9SAndroid Build Coastguard Worker
88*da0073e9SAndroid Build Coastguard Worker    @make_logging_test()
89*da0073e9SAndroid Build Coastguard Worker    def test_not_implemented_error(self, records):
90*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
91*da0073e9SAndroid Build Coastguard Worker            def f(ctx):
92*da0073e9SAndroid Build Coastguard Worker                raise NotImplementedError
93*da0073e9SAndroid Build Coastguard Worker
94*da0073e9SAndroid Build Coastguard Worker            # Ensure graph break is not possible
95*da0073e9SAndroid Build Coastguard Worker            for i in range(3):
96*da0073e9SAndroid Build Coastguard Worker                comptime(f)
97*da0073e9SAndroid Build Coastguard Worker
98*da0073e9SAndroid Build Coastguard Worker        torch.compile(fn001, backend="eager")(torch.randn(1))
99*da0073e9SAndroid Build Coastguard Worker
100*da0073e9SAndroid Build Coastguard Worker        record = self.getRecord(records, "WON'T CONVERT")
101*da0073e9SAndroid Build Coastguard Worker
102*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInline(
103*da0073e9SAndroid Build Coastguard Worker            munge_exc(record.getMessage()),
104*da0073e9SAndroid Build Coastguard Worker            """\
105*da0073e9SAndroid Build Coastguard WorkerWON'T CONVERT fn001 test_exc.py line N
106*da0073e9SAndroid Build Coastguard Workerdue to:
107*da0073e9SAndroid Build Coastguard WorkerTraceback (most recent call last):
108*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in f
109*da0073e9SAndroid Build Coastguard Worker    raise NotImplementedError
110*da0073e9SAndroid Build Coastguard Workertorch._dynamo.exc.InternalTorchDynamoError: NotImplementedError:
111*da0073e9SAndroid Build Coastguard Worker
112*da0073e9SAndroid Build Coastguard Workerfrom user code:
113*da0073e9SAndroid Build Coastguard Worker   File "test_exc.py", line N, in fn001
114*da0073e9SAndroid Build Coastguard Worker    comptime(f)""",
115*da0073e9SAndroid Build Coastguard Worker        )
116*da0073e9SAndroid Build Coastguard Worker
117*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(inject_BUILD_SET_unimplemented_TESTING_ONLY=True)
118*da0073e9SAndroid Build Coastguard Worker    @make_logging_test(dynamo=logging.DEBUG)
119*da0073e9SAndroid Build Coastguard Worker    def test_unsupported_error(self, records):
120*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
121*da0073e9SAndroid Build Coastguard Worker            return {1, 2}
122*da0073e9SAndroid Build Coastguard Worker
123*da0073e9SAndroid Build Coastguard Worker        torch.compile(fn001, backend="eager")(torch.randn(1))
124*da0073e9SAndroid Build Coastguard Worker
125*da0073e9SAndroid Build Coastguard Worker        # TODO: There is no graph break log!  This is because the graph break
126*da0073e9SAndroid Build Coastguard Worker        # logging is not in a centralized location; unsupported
127*da0073e9SAndroid Build Coastguard Worker        # instruction bypasses it
128*da0073e9SAndroid Build Coastguard Worker        self.getRecord(records, "Graph break:")
129*da0073e9SAndroid Build Coastguard Worker
130*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(suppress_errors=False)
131*da0073e9SAndroid Build Coastguard Worker    def test_internal_error_no_suppress(self):
132*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
133*da0073e9SAndroid Build Coastguard Worker            # NB: avoid decorator, as 3.11 changed the line number attributed
134*da0073e9SAndroid Build Coastguard Worker            # in this situation
135*da0073e9SAndroid Build Coastguard Worker            def f(ctx):
136*da0073e9SAndroid Build Coastguard Worker                raise AssertionError
137*da0073e9SAndroid Build Coastguard Worker
138*da0073e9SAndroid Build Coastguard Worker            comptime(f)
139*da0073e9SAndroid Build Coastguard Worker
140*da0073e9SAndroid Build Coastguard Worker        # NB: OK for user code to be truncated here, because the regular
141*da0073e9SAndroid Build Coastguard Worker        # exception backtrace has the rest of the crumbs
142*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInlineMunged(
143*da0073e9SAndroid Build Coastguard Worker            AssertionError,
144*da0073e9SAndroid Build Coastguard Worker            lambda: torch.compile(fn001, backend="eager")(torch.randn(1)),
145*da0073e9SAndroid Build Coastguard Worker            """\
146*da0073e9SAndroid Build Coastguard Worker
147*da0073e9SAndroid Build Coastguard Worker
148*da0073e9SAndroid Build Coastguard Workerfrom user code:
149*da0073e9SAndroid Build Coastguard Worker   File "test_exc.py", line N, in fn001
150*da0073e9SAndroid Build Coastguard Worker    comptime(f)""",
151*da0073e9SAndroid Build Coastguard Worker        )
152*da0073e9SAndroid Build Coastguard Worker
153*da0073e9SAndroid Build Coastguard Worker    @make_logging_test(graph_breaks=True)
154*da0073e9SAndroid Build Coastguard Worker    def test_graph_break_log(self, records):
155*da0073e9SAndroid Build Coastguard Worker        def fn002(x):
156*da0073e9SAndroid Build Coastguard Worker            x = x + 1
157*da0073e9SAndroid Build Coastguard Worker            torch._dynamo.graph_break()
158*da0073e9SAndroid Build Coastguard Worker            x = x + 1
159*da0073e9SAndroid Build Coastguard Worker            return x
160*da0073e9SAndroid Build Coastguard Worker
161*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
162*da0073e9SAndroid Build Coastguard Worker            return fn002(x)
163*da0073e9SAndroid Build Coastguard Worker
164*da0073e9SAndroid Build Coastguard Worker        torch.compile(fn001, backend="eager")(torch.randn(1))
165*da0073e9SAndroid Build Coastguard Worker
166*da0073e9SAndroid Build Coastguard Worker        record = self.getRecord(records, "Graph break:")
167*da0073e9SAndroid Build Coastguard Worker
168*da0073e9SAndroid Build Coastguard Worker        # TODO: This should also report the enclosing frames; need to plumb
169*da0073e9SAndroid Build Coastguard Worker        # frame object to it
170*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInline(
171*da0073e9SAndroid Build Coastguard Worker            munge_exc(record.getMessage()),
172*da0073e9SAndroid Build Coastguard Worker            """\
173*da0073e9SAndroid Build Coastguard WorkerGraph break: from user code at:
174*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in fn001
175*da0073e9SAndroid Build Coastguard Worker    return fn002(x)
176*da0073e9SAndroid Build Coastguard Worker  File "test_exc.py", line N, in fn002
177*da0073e9SAndroid Build Coastguard Worker    torch._dynamo.graph_break()
178*da0073e9SAndroid Build Coastguard Worker""",  # noqa: B950
179*da0073e9SAndroid Build Coastguard Worker        )
180*da0073e9SAndroid Build Coastguard Worker
181*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(suppress_errors=False)
182*da0073e9SAndroid Build Coastguard Worker    def test_backend_suppress_line(self):
183*da0073e9SAndroid Build Coastguard Worker        def fn001(x):
184*da0073e9SAndroid Build Coastguard Worker            x = torch.relu(x)
185*da0073e9SAndroid Build Coastguard Worker            return x + 1
186*da0073e9SAndroid Build Coastguard Worker
187*da0073e9SAndroid Build Coastguard Worker        # Do NOT let this get attributed to x + 1
188*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInlineMunged(
189*da0073e9SAndroid Build Coastguard Worker            torch._dynamo.exc.BackendCompilerFailed,
190*da0073e9SAndroid Build Coastguard Worker            lambda: torch.compile(fn001, backend="relu_compile_error_TESTING_ONLY")(
191*da0073e9SAndroid Build Coastguard Worker                torch.randn(1)
192*da0073e9SAndroid Build Coastguard Worker            ),
193*da0073e9SAndroid Build Coastguard Worker            """\
194*da0073e9SAndroid Build Coastguard Workerbackend='relu_compile_error_TESTING_ONLY' raised:
195*da0073e9SAndroid Build Coastguard WorkerReluCompileError:""",
196*da0073e9SAndroid Build Coastguard Worker        )
197*da0073e9SAndroid Build Coastguard Worker
198*da0073e9SAndroid Build Coastguard Worker    @skipIf(not TEST_Z3, "z3 not installed")
199*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(
200*da0073e9SAndroid Build Coastguard Worker        assume_static_by_default=False,
201*da0073e9SAndroid Build Coastguard Worker        suppress_errors=False,
202*da0073e9SAndroid Build Coastguard Worker    )
203*da0073e9SAndroid Build Coastguard Worker    @torch.fx.experimental._config.patch(
204*da0073e9SAndroid Build Coastguard Worker        inject_EVALUATE_EXPR_flip_equality_TESTING_ONLY=True,
205*da0073e9SAndroid Build Coastguard Worker        translation_validation=True,
206*da0073e9SAndroid Build Coastguard Worker        translation_validation_no_bisect=True,
207*da0073e9SAndroid Build Coastguard Worker    )
208*da0073e9SAndroid Build Coastguard Worker    @skipIfWindows(
209*da0073e9SAndroid Build Coastguard Worker        msg='AssertionError: "tran[551 chars]s1 s2 s3) s0)\n  ==> (<= (+ s1 s2) (+ s0 (* -1[511 chars][0])'  # noqa: PLR0133
210*da0073e9SAndroid Build Coastguard Worker        != 'tran[551 chars]s1 s2) (+ s0 (* -1 s3)))\n  ==> (<= (+ s1 s2) [483 chars][0])"'
211*da0073e9SAndroid Build Coastguard Worker    )
212*da0073e9SAndroid Build Coastguard Worker    def test_trigger_on_error(self):
213*da0073e9SAndroid Build Coastguard Worker        from torch.fx.experimental.validator import ValidationException
214*da0073e9SAndroid Build Coastguard Worker
215*da0073e9SAndroid Build Coastguard Worker        @torch.compile
216*da0073e9SAndroid Build Coastguard Worker        def fn(x, shape):
217*da0073e9SAndroid Build Coastguard Worker            return x.split(shape)
218*da0073e9SAndroid Build Coastguard Worker
219*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInlineMunged(
220*da0073e9SAndroid Build Coastguard Worker            ValidationException,
221*da0073e9SAndroid Build Coastguard Worker            lambda: fn(torch.randn(20), (5, 10, 5)),
222*da0073e9SAndroid Build Coastguard Worker            """\
223*da0073e9SAndroid Build Coastguard Workertranslation validation failed.
224*da0073e9SAndroid Build Coastguard Worker
225*da0073e9SAndroid Build Coastguard WorkerModel:
226*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][0]: 0
227*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][1]: 1
228*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][2]: 1
229*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].size()[0]: 3
230*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].storage_offset(): 0
231*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].stride()[0]: 1
232*da0073e9SAndroid Build Coastguard Worker  ==> s0: 3
233*da0073e9SAndroid Build Coastguard Worker  ==> s1: 0
234*da0073e9SAndroid Build Coastguard Worker  ==> s2: 1
235*da0073e9SAndroid Build Coastguard Worker  ==> s3: 1
236*da0073e9SAndroid Build Coastguard Worker
237*da0073e9SAndroid Build Coastguard WorkerAssertions:
238*da0073e9SAndroid Build Coastguard Worker  ==> (== 0 L['x'].storage_offset())
239*da0073e9SAndroid Build Coastguard Worker  ==> (== 1 L['x'].stride()[0])
240*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][0] s1)
241*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][1] s2)
242*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][2] s3)
243*da0073e9SAndroid Build Coastguard Worker  ==> (== L['x'].size()[0] s0)
244*da0073e9SAndroid Build Coastguard Worker  ==> (> s0 1)
245*da0073e9SAndroid Build Coastguard Worker  ==> (True)
246*da0073e9SAndroid Build Coastguard Worker
247*da0073e9SAndroid Build Coastguard WorkerTarget Expressions:
248*da0073e9SAndroid Build Coastguard Worker  ==> (!= (+ s1 s2 s3) s0)
249*da0073e9SAndroid Build Coastguard Worker  ==> (<= (+ s1 s2 s3) s0)
250*da0073e9SAndroid Build Coastguard Worker  ==> (<= (+ s1 s2) (+ s0 (* -1 s3)))
251*da0073e9SAndroid Build Coastguard Worker  ==> (<= (+ s1 s2) s0)
252*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s1)
253*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s2)
254*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s3)
255*da0073e9SAndroid Build Coastguard Worker  ==> (<= 2 s0)
256*da0073e9SAndroid Build Coastguard Worker  ==> (<= s1 (+ s0 (* -1 s2)))
257*da0073e9SAndroid Build Coastguard Worker  ==> (== 0 L['x'].storage_offset())
258*da0073e9SAndroid Build Coastguard Worker  ==> (== 1 L['x'].stride()[0])
259*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][0] s1)
260*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][1] s2)
261*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][2] s3)
262*da0073e9SAndroid Build Coastguard Worker  ==> (== L['x'].size()[0] s0)
263*da0073e9SAndroid Build Coastguard Worker  ==> (> s0 0)
264*da0073e9SAndroid Build Coastguard Worker  ==> (>= 0 s1)
265*da0073e9SAndroid Build Coastguard Worker  ==> (And (<= (+ s1 s2) s0) (<= (* -1 s0) (+ s1 s2)))
266*da0073e9SAndroid Build Coastguard Worker
267*da0073e9SAndroid Build Coastguard WorkerFailed Source Expressions:
268*da0073e9SAndroid Build Coastguard Worker  ==> (== (+ L['shape'][0] L['shape'][1] L['shape'][2]) L['x'].size()[0])""",
269*da0073e9SAndroid Build Coastguard Worker        )
270*da0073e9SAndroid Build Coastguard Worker
271*da0073e9SAndroid Build Coastguard Worker    @skipIf(not TEST_Z3, "z3 not installed")
272*da0073e9SAndroid Build Coastguard Worker    @torch._dynamo.config.patch(
273*da0073e9SAndroid Build Coastguard Worker        assume_static_by_default=False,
274*da0073e9SAndroid Build Coastguard Worker        suppress_errors=False,
275*da0073e9SAndroid Build Coastguard Worker    )
276*da0073e9SAndroid Build Coastguard Worker    @torch.fx.experimental._config.patch(
277*da0073e9SAndroid Build Coastguard Worker        inject_EVALUATE_EXPR_flip_equality_TESTING_ONLY=True,
278*da0073e9SAndroid Build Coastguard Worker        translation_validation=True,
279*da0073e9SAndroid Build Coastguard Worker    )
280*da0073e9SAndroid Build Coastguard Worker    def test_trigger_bisect_on_error(self):
281*da0073e9SAndroid Build Coastguard Worker        from torch.fx.experimental.validator import BisectValidationException
282*da0073e9SAndroid Build Coastguard Worker
283*da0073e9SAndroid Build Coastguard Worker        @torch.compile
284*da0073e9SAndroid Build Coastguard Worker        def fn(x, shape):
285*da0073e9SAndroid Build Coastguard Worker            return x.split(shape)
286*da0073e9SAndroid Build Coastguard Worker
287*da0073e9SAndroid Build Coastguard Worker        self.assertExpectedInlineMunged(
288*da0073e9SAndroid Build Coastguard Worker            BisectValidationException,
289*da0073e9SAndroid Build Coastguard Worker            lambda: fn(torch.randn(20), (5, 10, 5)),
290*da0073e9SAndroid Build Coastguard Worker            """\
291*da0073e9SAndroid Build Coastguard Workertranslation validation failed when evaluating: Eq(s1 + s2 + s3, s0)
292*da0073e9SAndroid Build Coastguard Worker
293*da0073e9SAndroid Build Coastguard WorkerFailure occurred while running node:
294*da0073e9SAndroid Build Coastguard Worker    %split : [num_users=3] = call_method[target=split](args = (%l_x_, (%l_shape_0_, %l_shape_1_, %l_shape_2_)), kwargs = {})
295*da0073e9SAndroid Build Coastguard Worker
296*da0073e9SAndroid Build Coastguard WorkerModel:
297*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][0]: 1
298*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][1]: 1
299*da0073e9SAndroid Build Coastguard Worker  ==> L['shape'][2]: 0
300*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].size()[0]: 3
301*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].storage_offset(): 0
302*da0073e9SAndroid Build Coastguard Worker  ==> L['x'].stride()[0]: 1
303*da0073e9SAndroid Build Coastguard Worker  ==> s0: 3
304*da0073e9SAndroid Build Coastguard Worker  ==> s1: 1
305*da0073e9SAndroid Build Coastguard Worker  ==> s2: 1
306*da0073e9SAndroid Build Coastguard Worker  ==> s3: 0
307*da0073e9SAndroid Build Coastguard Worker
308*da0073e9SAndroid Build Coastguard WorkerAssertions:
309*da0073e9SAndroid Build Coastguard Worker  ==> (== 0 L['x'].storage_offset())
310*da0073e9SAndroid Build Coastguard Worker  ==> (== 1 L['x'].stride()[0])
311*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][0] s1)
312*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][1] s2)
313*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][2] s3)
314*da0073e9SAndroid Build Coastguard Worker  ==> (== L['x'].size()[0] s0)
315*da0073e9SAndroid Build Coastguard Worker  ==> (> s0 1)
316*da0073e9SAndroid Build Coastguard Worker
317*da0073e9SAndroid Build Coastguard WorkerTarget Expressions:
318*da0073e9SAndroid Build Coastguard Worker  ==> (!= (+ s1 s2 s3) s0)
319*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s1)
320*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s2)
321*da0073e9SAndroid Build Coastguard Worker  ==> (<= 0 s3)
322*da0073e9SAndroid Build Coastguard Worker  ==> (<= 2 s0)
323*da0073e9SAndroid Build Coastguard Worker  ==> (== 0 L['x'].storage_offset())
324*da0073e9SAndroid Build Coastguard Worker  ==> (== 1 L['x'].stride()[0])
325*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][0] s1)
326*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][1] s2)
327*da0073e9SAndroid Build Coastguard Worker  ==> (== L['shape'][2] s3)
328*da0073e9SAndroid Build Coastguard Worker  ==> (== L['x'].size()[0] s0)
329*da0073e9SAndroid Build Coastguard Worker  ==> (> s0 0)
330*da0073e9SAndroid Build Coastguard Worker
331*da0073e9SAndroid Build Coastguard WorkerFailed Source Expressions:
332*da0073e9SAndroid Build Coastguard Worker  ==> (== (+ L['shape'][0] L['shape'][1] L['shape'][2]) L['x'].size()[0])""",
333*da0073e9SAndroid Build Coastguard Worker        )
334*da0073e9SAndroid Build Coastguard Worker
335*da0073e9SAndroid Build Coastguard Worker
336*da0073e9SAndroid Build Coastguard Workerif __name__ == "__main__":
337*da0073e9SAndroid Build Coastguard Worker    from torch._dynamo.test_case import run_tests
338*da0073e9SAndroid Build Coastguard Worker
339*da0073e9SAndroid Build Coastguard Worker    run_tests()
340