8

I want to run PyTorch using cuda. I set model.cuda() and torch.cuda.LongTensor() for all tensors.

Do I have to create tensors using .cuda explicitly if I have used model.cuda()?

Is there a way to make all computations run on GPU by default?

4

2 回答 2

4

我认为您不能指定默认情况下要使用 cuda 张量。但是,您应该查看 pytorch 官方示例。

在 imagenet 训练/测试脚本中,他们在模型上使用了一个名为DataParallel的包装器。这个包装器有两个优点:

  • 它处理多个 GPU 上的数据并行性
  • 它处理 cpu 张量到 cuda 张量的转换

正如您在L164中看到的,您不必手动将输入/目标转换为 cuda。

请注意,如果您有多个 GPU 并且想要使用单个 GPU,请启动任何带有 CUDA_VISIBLE_DEVICES 前缀的 python/pytorch 脚本。例如CUDA_VISIBLE_DEVICES=0 python main.py.

于 2017-05-11T13:07:07.503 回答
2

是的。您可以使用以下命令将默认张量类型设置为 cuda:

torch.set_default_tensor_type('torch.cuda.FloatTensor')

如果我使用了 model.cuda(),是否必须明确使用 .cuda 创建张量?

是的,您不仅需要将模型 [参数] 张量设置为 cuda,还需要将数据特征和目标(以及模型使用的任何其他张量)的张量设置为。

于 2021-03-12T13:13:32.410 回答