I have two tensors I want to update “at the same time”, and those updates depend on each other, inside a for loop. In “general Python”, I can update them on one line:

```
for i in range(10):
x, y = x + y/2, y + x/2
x = some_nn(x)
y = some_nn(y)
```

Is this safe to do in PyTorch in the `forward`

method? Specifically is it ok for autograd, and for eventual multiple GPU training?

Alternatively, I think, I could do this as

```
for i in range(10):
x_old = x.clone() # possibly with .detach(), too?
y_old = y.clone()
x = x + y_old/2
y = y + x_old/2
x = some_nn(x)
y = some_nn(y)
```

(Of course, I could put `some_function`

a line earlier in both cases, but I don’t think that’s important here.)

Is there a reason to choose one method over the other, or is there a better method I haven’t thought of?