The problem appears to be because the new model was moved onto the GPU using model.cuda() rather than model = torch.nn.DataParallel(model).cuda(), though I don’t know why this is the case (or what is correct practice now, as this is based on quite old code).
Edit: Rather, what leaves me more confused now is how the latter causes the inputs to be copied to the GPU automatically, whereas pinning memory just reserves space for fast transfers in main memory…