Dee*_*gla 5 python deep-learning pytorch
t1_h = torch.tensor(np.arange(100000), dtype=torch.float32)\ncuda0 = torch.device('cuda:0')\nt1_d = torch.tensor(np.arange(100000), dtype=torch.float32, device = cuda0)\nRun Code Online (Sandbox Code Playgroud)\n%timeit -n 10000 max_h = torch.max(t1_h, 0)\n%timeit -n 10000 max_d = torch.max(t1_d, 0)\nRun Code Online (Sandbox Code Playgroud)\n\n\n10000 个循环,3 个循环中最好的:每个循环 144 \xc2\xb5s
\n10000 个循环,3 个循环中最好的:每个循环 985 \xc2\xb5s
\n
正如您在上面看到的,GPU 比 CPU 花费更多的时间。但如果我不指定计算最大值的维度,那么 GPU 会更快。
\n%timeit -n 10000 max_h = torch.max(t1_h)\n%timeit -n 10000 max_d = torch.max(t1_d)\nRun Code Online (Sandbox Code Playgroud)\n\n\n10000 个循环,3 个循环中最好的:每个循环 111 \xc2\xb5s
\n10000 个循环,3 个循环中最好的:每个循环 41.8 \xc2\xb5s
\n
我也尝试过使用,argmax但max它工作正常(GPU 比 CPU 更快)。
%timeit -n 10000 cs_h = torch.argmax(t1_h, 0)\n%timeit -n 10000 cs_d = torch.argmax(t1_d, 0)\nRun Code Online (Sandbox Code Playgroud)\n\n\n10000 个循环,3 个循环中最好的:每个循环 108 \xc2\xb5s
\n10000 个循环,3 个循环中最好的:每个循环 18.1 \xc2\xb5s
\n
torch.max指定维度后 GPU 速度变慢是否有任何原因?
我自己发现了这一点,并在 PyTorch 中提出了一个问题。看起来很快就会修复 - 也许是 1.5 或 1.6 版本?- 但与此同时,建议的解决方法是使用
ii=a.argmax(0)
maxval = a.gather(0, ii.unsqueeze(0)).squeeze(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |