【发布时间】:2018-08-20 11:52:43
【问题描述】:
我尝试了我机器上的两个 GPU,我预计 Titan-XP 会比 Quadro-P400 更快。但是,两者的执行时间几乎相同。
我需要知道 PyTorch 是否会在运行时动态选择一个 GPU,或者我自己必须指定 PyTorch 在运行时使用哪一个。
这里是测试中使用的代码sn-p:
import torch
import time
def do_something(gpu_device):
torch.cuda.set_device(gpu_device) # torch.cuda.set_device(device_num)
print("current GPU device ", torch.cuda.current_device())
strt = time.time()
a = torch.randn(100000000).cuda()
xx = time.time() - strt
print("execution time, to create 1E8 random numbers, is ", xx)
# print(a)
# print(a + 2)
no_of_GPUs= torch.cuda.device_count()
print("how many GPUs are there:", no_of_GPUs)
for i in range(0, no_of_GPUs):
print(i, "th GPU is", torch.cuda.get_device_name(i))
do_something(i)
样本输出:
how many GPUs are there: 2
0 th GPU is TITAN Xp COLLECTORS EDITION
current GPU device 0
execution time, to create 1E8 random numbers, is 5.527713775634766
1 th GPU is Quadro P400
current GPU device 1
execution time, to create 1E8 random numbers, is 5.511776685714722
【问题讨论】:
-
您是否确定您的
do_something函数实际上是在 GPU 上而不是在 CPU 上创建这些随机数,然后将结果传输到 GPU 上?跨度> -
@talonmies ..这行不应该 ... a = torch.randn(100000000).cuda() ... 在 GPU 上创建随机数吗?
-
我对torch不太了解,但仅了解Python语法,不。我将其读作“在默认内存空间中创建一个充满非正规随机数的张量并将该张量复制到 GPU”。我猜默认是 CPU 内存
标签: performance time cuda gpu pytorch