前言:
pytorch在单机多卡,多机多卡之间已经做了进一步的优化,最早之前可以使用
net = torch.nn.DataParallel(net.cuda(), device_ids=range(torch.cuda.device_count()))来使用多显卡pytorch 多GPU训练总结(DataParallel的使用)_两只蜡笔的小新的博客-CSDN博客
加速运行,但是会受到python GIL锁的限制,Python GIL锁_两只蜡笔的小新的博客-CSDN博客导致对CPU的使用率不高,进而导致多显卡之间的协调不足,出现利用率较低的情况。为了解决这个微博替,需要将原来的代码进行说为的修改,使用DDP的方式提高多卡的利用率。
基本原理:
关于python线程的问题情况这篇博客Python GIL锁_两只蜡笔的小新的博客-CSDN博客,大致说的是,多线程会受到GIL锁的能影响,其实质上是一个时间段只有一个线程得到GIL,系统均分每个线程获得的时间,交替实现