6 GPU
- 查看显卡信息
1 | !nvidia-smi |
- pytorch中,每个数组都有一个设备,称为:环境。默认情况下,所有变量和相关的计算都分配给CPU。
6.1 计算设备
1 | import torch |
0
- 选择GPU或CPU
1 | def try_gpu(i=0): #@save |
cpu
cpu
[device(type='cpu')]
6.2 张量与GPU
- 查看张量所在设备
1 | x = torch.tensor([1,2,3]) |
cpu
6.2.1 存储在GPU上
1 | X = torch.ones(2,3,device=try_gpu()) |
tensor([[1., 1., 1.],
[1., 1., 1.]])
6.2.2 复制
- 两个变量处于不同的GPU上,不能直接计算,需要将其中一个变量复制到另一个GPU上。
- 如果z在GPU0上,z.cuda(0)不会复制
1 | Z = X.cuda(0) #等价于X.to(torch.device('cuda:0')) |
6.2.3 旁注
- 多GPU运行时,数据传输比计算慢得多
- 一次执行几个操作比代码中散步的多个单操作快得多
- 打印张量或将张量转换为numpy格式时,如果数据不在内存中,框架会先将其复制到内存中,这会导致额外的传输开销。
6.3 神经网络与GPU
- 神经网络模型也可以指定设备
1 | net = nn.Sequential(nn.Linear(3,1)) |