Yes. Unlike TensorFlow, PyTorch does not do automatic device placement, so you must manually place each tensor and/or module in the correct device via .to(device) or the device= argument in factory functions. This has the disadvantage of being more verbose and tedious, but the advantage is that when you get the hang of it, it allows you to very transparently control where you compute your operations.