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