1、DataParallel
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
### 第一步:构建模型
'''
model 需要分发的模型
device_ids 可分发的gpu,默认分发到所有看见GPU(环境变量设置的)
output_device 结果输出设备 通常设置成逻辑gpu的第一个
'''
model = nn.DataParallel( model, device_ids=range(args.gpus), output_device=None)
### 第二步:数据迁移
inputs=inputs.to(device)
labels=labels.to(device)
#此处的device通常应为模型输出的output_device,否则无法计算loss
2、DistributedDataParallel
#运行方式一:(旧)
python -m torch.distributed.launch \
--nnodes 1 \
--nproc_per_node=4 \
YourScript.py
# nnodes: 表示有多少个节点,可以通俗的理解为有多少台机器
# nproc_pe