一般来说我们最常见到的用法是这样的:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

等同于:

if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")

这个device的用处是作为Tensor或者Model被分配到的位置。因此,在构建device对象后,紧跟的代码往往是:

data = data.to(device)
model = Model(...).to(device)

表示将构建的张量或者模型分配到相应的设备上。

在PyTorch中,默认设备是CPU,如果想使用GPU,按照上述做法略显麻烦,可以全局设置:

torch.set_default.device()

功能: 设置默认计算张量的设备(CUDA或者CPU)

>>> torch.tensor([1.2, 3]).device
device(type='cpu')

>>> torch.set_default_device('cuda')  # current device is 0
>>> torch.tensor([1.2, 3]).device
device(type='cuda', index=0)

>>> torch.set_default_device('cuda:1')
>>> torch.tensor([1.2, 3]).device
device(type='cuda', index=1)

提醒:这不会影响创建与输入共享相同内存的张量的函数,如:torch.from_numpy()torch.from buffer()