Pytorch 静默数据损坏

ali*_*050 5 python gpu pytorch

我的工作站配备 4 个 A6000 GPU。将 Torch 张量从一个 GPU 移动到另一个 GPU 会悄无声息地破坏数据!

请参阅下面的简单示例。

x
>tensor([1], device='cuda:0')

x.to(1)
>tensor([1], device='cuda:1')

x.to(2)
>tensor([0], device='cuda:2')

x.to(3)
>tensor([0], device='cuda:3')
Run Code Online (Sandbox Code Playgroud)

有什么想法导致这个问题的原因是什么吗?

其他可能有用的信息:

(有两个 nvlinks 我手动删除了试图解决问题)

        GPU0    GPU1    GPU2    GPU3    CPU Affinity    NUMA Affinity
GPU0     X      SYS     SYS     SYS     0-63            N/A
GPU1    SYS      X      SYS     SYS     0-63            N/A
GPU2    SYS     SYS      X      SYS     0-63            N/A
GPU3    SYS     SYS     SYS      X      0-63            N/A
Run Code Online (Sandbox Code Playgroud)
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0
Run Code Online (Sandbox Code Playgroud)
NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6
Run Code Online (Sandbox Code Playgroud)

编辑:添加一些屏幕截图

看来是有状态的。更改启动新的 python 运行时后哪些 GPU 可以正常工作。

它似乎是有状态的,在启动新的 python 运行时后,会改变哪些 GPU 可以正常工作。

ali*_*050 2

解决方案是禁用 IOMMU。在我们的服务器上,在 BIOS 设置中

/Advanced/AMD CBS/NBIO Common Options/IOMMU -> IOMMU - Disabled

有关更多信息,请参阅PyTorch问题线程。