在 linux 中使用带有 rocm 的 pytorch 时出现段错误

问题描述 投票:0回答:1

我有一个 amd rx 6600,我正在尝试将 pytorch 与 rocm 一起使用。我正在运行 archlinux 并使用发行版提供的软件包。当我尝试访问 gpu 内存时,程序崩溃了。似乎正在分配内存,但我无法读取内存。这是代码:

import torch

# check for amd hip
print(torch.cuda.is_available())
print(torch.version.hip)

device = torch.device('cuda')
id = torch.cuda.current_device()
# print gpu name
print(torch.cuda.get_device_name(id))
# no memory is allocated at first
print(torch.cuda.memory_allocated(id))

# store some variable in gpu memory
r = torch.rand(16).to(device)
# memory is allocated
print(torch.cuda.memory_allocated(id))
# crashes when accessing r
print(r[0])

这是输出:

 ~ > python test.py
Tru                                                     # gpu compute is available
5.4.22804-                                              # rocm version
AMD Radeon RX 6600                                      # name of gpu
0                                                       # memory allocation at start
512                                                     # memory allocation after storing variable
zsh: segmentation fault (core dumped)  python test.py   # program crashes when reading variable

我的代码有问题吗?我该如何调试?在向包维护者提交错误报告之前,我想确定一下。任何帮助表示赞赏。

linux pytorch archlinux amd-rocm
1个回答
0
投票

仅供参考,我只有一个简单的 AMD 台式机,并且是一个相当精通 Linux 的用户,但绝不是知识渊博的人,但是,我能够通过以下步骤解决这个完全相同的问题,尽管这只是一种解决方法,并没有最初解决你的问题。对于发现自己在这里的任何人,我希望这有助于在其他地方解决时作为修补程序。

系统规格:

  • 操作系统:Ubuntu 22.04.2 LTS x86_64
  • 内核:5.19.0-41-generic
  • CPU:AMD 锐龙 9 7900X (24) @ 4.700GHz
  • GPU:AMD Radeon RX 6950 XT

tldr;谨慎尝试!确保您的 Linux 内核正确构建等

sudo apt update 
sudo apt install rocm-libs miopen-hip rccl # this will install rocm dependencies, 14GB worth, so be patient!
pip install torch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 --index-url "https://download.pytorch.org/whl/rocm5.2"
pip install ipython
ipython

```sh
 In [1]: import torch
      ...: 
      ...: # check for amd hip
      ...: print(torch.cuda.is_available())
      ...: print(torch.version.hip)
      ...: 
      ...: device = torch.device('cuda')
      ...: id = torch.cuda.current_device()
      ...: # print gpu name
      ...: print(torch.cuda.get_device_name(id))
      ...: # no memory is allocated at first
      ...: print(torch.cuda.memory_allocated(id))
      ...: 
      ...: # store some variable in gpu memory
      ...: r = torch.rand(16).to(device)
      ...: # memory is allocated
      ...: print(torch.cuda.memory_allocated(id))
      ...: # crashes when accessing r
      ...: print(r[0])
      True
      5.2.21151-afdc89f8
      AMD Radeon RX 6950 XT
      0
      512
      tensor(0.3706, device='cuda:0')
 In [3]: torch.__version__
 Out[3]: '1.13.0+rocm5.2'

```
  1. 确保您的 rocm 正常工作。我不得不修复损坏的安装,只有糟糕的包依赖性体验无法解决尝试使用
    amdgpu-install
    ,更不用说,天哪,rocm 文档对于一个简单的普通用户来说很难阅读(正如我所认为的那样),并且总的来说,除非您非常熟悉 AMD GPU 架构,否则我发现它的安装效果很差。如果只是一个普通的旧
    apt-get
  2. ,运气会更好
  3. 不幸的是,无论我做了什么,我无法让 rocm 5.4.2 与 torch 2.0.0 一起正常工作。这是一种耻辱,因为有相当大的加速和真正新奇的东西可以玩,但是 1.13.0 是我可以工作的最好的,而不会在尝试向 GPU 发送任何东西时出现段错误。
  4. 这是一个 optional 步骤(我不确定它是否真的解决了问题)但在之前使用
    amdgpu-install
    的尝试中构建
    dkms
    内核时出错(哎呀)所以我继续并按照此处的步骤操作确保重启时没有任何意外发生(https://askubuntu.com/a/1240434/1416884)。
  5. 检查你的 rocm 版本(显然没有一个简单的方法来做到这一点?不知道为什么,但这是我发现的最好的:
$ ll -ah /etc/alternatives/rocminfo 

lrwxrwxrwx 1 root root 28 Apr 25 22:31 /etc/alternatives/rocminfo -> /opt/rocm-5.4.3/bin/rocminfo
  1. 安装 pytorch 1.13.0(使用 rocm 5.2,它向后兼容,所以 5.2 之后的任何东西应该 没问题,请参阅此兼容性图表here
  2. 最后,如果你想要一个与你的 python 包一起安装的安装脚本示例,请随时检查这个
    [here]
    ,虽然它正在建设中,但它应该只需要一个
    bash install.sh

好吧,希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.