Yes, only backward() interacts with the reducer.
I imagine combining grad and backward like this (but YMMV and I don’t know if this works).
G_out_grad = torch.autograd.grad(D_loss, G_out)
torch.autograd.backward(G_out, G_out_grad)

This wouldn’t trigger any reduction for the discriminator and only do so for the generator.