Pytorch的cuda non_blocking (pin_memory)

non_blocking经常与DataLoader的pin_memory搭配使用

PyTorch的DataLoader有一个参数pin_memory,使用固定内存,并使用non_blocking=True来并行处理数据传输。

先来看一下过程吧:

1. x = x.cuda(non_blocking=True)
2. 进行一些和x无关的操作
3. 执行和x有关的操作

non_blocking=true下,1不会阻塞212并行。

这样将数据从CPU移动到GPU的时候,它是异步的。在它传输的时候,CPU还可以干其他的事情(不依赖于数据的事情)

.cuda()是为了将模型放在GPU上进行训练。

non_blocking默认值为False

   

你可能感兴趣的:(Pytorch)