Find below a Minimum Reproducible Example that crashes both in Pytorch 1.1 and Pytorch 1.2 with CUDA (it works with CPU).
import torch from torch import nn device = torch.device('cuda') # crashes with cuda, works with cpu class Model(nn.Module): def __init__(self): super().__init__() self.linear1 = nn.Linear(2, 16) self.linear2 = nn.Linear(2, 16) def forward(self, x, y): x = self.linear1(x) y = self.linear2(y) return torch.cat([x, y], dim=-1) # if we replace -1 with 1 works fine model = Model().to(device) data = [torch.randn(1, 2).to(device), torch.randn(1, 2).to(device)] traced = torch.jit.trace(model, data) print(traced)
Surprisingly the above works with CPU backend but not with CUDA backend. It also works when
torch.cat(..., dim=1) but crashes with a negative dimension refering to the same one
Find the jit.trace error below (not very explanatory):
torch.jit.TracingCheckError: Tracing failed sanity checks! Encountered an exception while running the trace with test inputs. Exception: vector::_M_range_check: __n (which is 18446744073709551615) >= this->size() (which is 2) The above operation failed in interpreter, with the following stack trace: