RuntimeError: Expected all tensors to be on the same device
I am getting the following error:
RuntimeError: Expected all tensors to be on the same device
However, both my tensor are using .to(device=t.device)
.
self.indices_buf = torch.LongTensor().to(device=t.device)
self.beams_buf = torch.LongTensor().to(device=t.device)
self.beams_buf_float = torch.FloatTensor().to(device=t.device)
Here self.beams_buf_float.type(torch.LongTensor)
gives Expected all tensors to be on the same device
error.
torch.div(self.indices_buf, vocab_size, out=self.beams_buf_float)
self.beams_buf = self.beams_buf_float.type(torch.LongTensor)
I am confused here, as all of them are using device=t.device
.
When calling self.beams_buf_float.type(torch.LongTensor)
, the resulting tensor device is set to the default one (i.e. cpu
).
The correct way to cast your tensor to a new type while maintaining the original device is by calling self.brams_buf_float.to(torch.long)
or self.brams_buf_float.long()