测试能否在一块GPU上生成tensor后移动到指定gpu上,按照某些博客上面操作后来出错,测试了很多次才找到原因。
os.environ["CUDA_VISIBLE_DEVICES"] = '0'
dev = torch.device('cuda',1)
#测试tensor
torch.set_default_tensor_type(torch.cuda.DoubleTensor)
c = torch.zeros([3,3])
c[0][0] = 0.25
print(c.device, c.dtype, sep='\n')
c = c.cuda(dev)
print(c.device, c.dtype, sep='\n')
原来是代码中指定可见的GPU只有0号,如果调用1号,就会出现错误,将代码修改为即可。
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1'
另外设置了默认tensor在GPU后,即使只让程序可见1号GPU,生成的并不指定设备的默认tensor仍然在0号GPU上。
os.environ["CUDA_VISIBLE_DEVICES"] = '1'
torch.set_default_tensor_type(torch.cuda.DoubleTensor)
c = torch.zeros([3,3])
c[0][0] = 0.25
print(c.device, c.dtype, sep='\n')