By “saving a computational graph” do you mean so that you can differentiate through the manipulation? If so, then yes. Use view to change the shape and indexing to manipulate the ordering.
import torch
x = torch.autograd.Variable(torch.arange(16).view(4, 4), requires_grad=True)
indices = torch.randperm(16)
y = x.view(-1)[indices].view(8, 2)  # bijection with a different shape
grad_output = torch.randn(8, 2)
y.backward(grad_output)

print(grad_output)
print(x.grad)