Regarding crashes:
this one issues a warning:
@torch.compile
def fn(a):
b = a * a
return b
# [WARNING] Unsupported: meta converter nyi with fake tensor propagation
print(fn(torch.tensor([1.0, 2.0], device="meta")))
Assert fails:
@torch.compile
def fn(a):
b = a * a
return b
with FakeTensorMode() as mode:
print(fn(torch.empty([2,3])))
# File "_dynamo/variables/builder.py", line 611, in wrap_tensor
# assert type(value) in (torch.Tensor, torch.nn.Parameter)
Assert fails; could give a nice error message:
# without allow_meta=True
with FakeTensorMode() as mode:
print(fn(torch.empty([2,3], device="meta")))
# File "_subclasses/fake_tensor.py", line 587, in __init__
# assert device.type != "meta"
Another crash:
torch._dynamo.config.dynamic_shapes = True
torch._functorch.config.use_dynamic_shapes = True
@torch.compile
def fn(a):
b = a * a
return b
print(fn(torch.tensor([1.0, 2.0])))
# File "sympy/core/cache.py", line 70, in wrapper
# retval = cfunc(*args, **kwargs)
# TypeError: unhashable type: 'SymInt'
# RuntimeError: Trying to extract a concrete int out of a symbolic int
All I was trying was to print some complicated symbolic shape expressions so I could understand the problem a bit better. But then I hit all these crashes, so I must be doing something very wrong…