後來想一想 , 前篇 留著當筆記,
對
pytorch
2.9.1 再開一篇文寫 .
以下筆記我自己實驗出可用的版本 ,
ubuntu 24.04.3, ROCm 6.4.4 ,
pytorch 2. 9 . 1 ,
目標
gfx803,
gfx900. 以下都可以在虛擬機裡編譯 ,
不需要真的有
AMD
的
GPU. 之所以用 ROCm 6.4.4 不用 7.1.1 | 7.2.0 是因為這是最後一版支援 gfx803 (RX460/470/480/560/570/580) 的 ROCm, 也是最後一版支援 WSL 的 ROCm, 所以這篇就以
ROCm
6.4.4 (6.x 最後一版 ),
pytorch 2.9.1 為主 . 還是跟前篇一樣, 要編哪一版 pytorch 就要注意它是對到哪一版 ROCm.
ps. ROCm 7.1.1 可以支援在 ryzen 3000 開始的 APU (代號 gfx902), 但沒實驗出讓它跑 code 的辦法.
#首先
/etc/default/grub
裡替開機參數加東西 ,
GRUB_CMDLINE_LINUX_DEFAULT 後面加上
" intel_iommu=on,
iommu=pt " ,
intel_iommu
是對
intel
用的 ,
AMD ryzen 體系的預設
amd_iommu
都是
on,
ryzen 之前的要看板子能不能開 IOMMU .
#
環境變數裡加東西 ,
下次登入時就生效 .
ps. 加在
/etc/environment.d/
裡無效 ,
理由不明 .
# Add GFX803 related variables
echo "ROC_ENABLE_PRE_VEGA=1" | sudo tee -a /etc/environment
echo "HSA_OVERRIDE_GFX_VERSION=8.0.3" | sudo tee -a /etc/environment
安裝
miniconda
3. conda init 是在
$LOGUSER
下 ,
特別記清處
rocm-build
這個字 ,
後面會很常用上
Miniconda 3
# Download and Install Miniconda 3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -P /tmp/
sudo bash /tmp/Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda
sudo sed -i 's|^PATH="|PATH="/opt/conda/bin:|' /etc/environment
# Logout to apply environment
exit
# Logged in
conda init
source ~ /.bashrc
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
conda create -n rocm-build -y python=3.12
conda activate rocm-buildInstall Prerequisites
sudo apt install -y build-essential ccache git libjpeg-dev \ libjpeg-turbo8-dev libpng-dev libmsgpack-dev libssl-dev \ python3-virtualenv libboost-dev libboost1.83-dev libmsgpack-cxx-dev \ ninja-build ROCm 6.4.4
# Setup AMD repository wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor \ | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] \ https://repo.radeon.com/rocm/apt/ 6.4.4 noble main" | sudo tee \--append /etc/apt/sources.list.d/rocm.list
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: \ 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600
sudo apt update
# Install ROCm 6.4.4 sudo apt install rocm rocm-developer-tools rocm-ml-sdk \ rocm-ml-libraries rocm-hip-sdk rocm-hip-libraries
sudo sed -i 's|^PATH="|PATH="/opt/rocm/bin:|' /etc/environment
echo "ROCM_PATH=/opt/rocm" | sudo tee -a /etc/environment
# Logout to apply environment exit
此時如果要修改
rocm
安裝版本 ,
就要在 /etc/apt/sources.list.d/rocm.list
中修改版本數字跟
ubuntu
發行主版號 :
#sudo
nano /etc/apt/sources.list.d/rocm.list
ps.
到寫這篇前還沒看到支援
ubuntu
26.04
rocBLAS
# Re-enable conda environment conda activate rocm-build
# Download rocBLAS sudo mkdir /opt/rocBLAS
sudo chown $LOGNAME: /opt/rocBLAS
git clone --recursive https://github.com/ROCm/rocBLAS.git -b \ rocm-6.4.4 /opt/rocBLAS
cd /opt/rocBLAS
# Install required packages pip install "cmake<4.0" joblib pyyaml virtualenv \ typing-extensions
# Build rocBLAS time ./install.sh -a "gfx803;gfx900;gfx90a;gfx942;gfx1100" \ -b rocm- 6.4.4
# Copy compiled library sudo rsync -vrh /opt/rocBLAS/build/release/rocblas-install\ /lib/rocblas/library/ /opt/rocm/lib/rocblas/library/
SRC=$(sudo find \
/opt/rocBLAS/build/release/rocblas-install/lib/ \
-type f -name "librocblas.so.*")
TGT=$(sudo find /opt/rocm/ -type f -name "librocblas.so*")
LIST=$(find /opt/rocm/ -type l -name "librocblas.so*")
sudo rsync -vrh \
/opt/rocBLAS/build/release/rocblas-install/lib/rocblas/library/ \
/opt/rocm/lib/rocblas/library/
sudo cp -f ${SRC} ${TGT}
for d in ${LIST}; do sudo ln -sf ${TGT} ${d}; done
rocBLAS
這裡新加一個很重要的參數
-b,
-b 參數是指定
Tensile
branch, 這個最好跟
rocBLAS
branch 一樣指到哪版就指定哪版 ,
否則預設會去抓最新版 ,
最新版往往要不根本編不起來 ,
要不根本不存在 .
我在寫這篇文的時候編譯時
Tensile
指到
4.45,
但
github
上只
release
到
4.43.
這裡只能更確定做這些東西的人根本沒試過能不能正常安裝就丟出來了 .
rocSOLVER
ps.
rocSOLVER
在
ROCm
7.0 開始才能指定
Tensile
版本 ,
如果是
7.0
之後的版本就建議跟
rocBLAS
一樣
install.sh
要多下一個
-b
指定
Tensile
版號 .
(update:
ROCm 7.0 以上特有 )
rocSOLVER 的編法很奇怪 ,
最好特別連進去
ssh
console 裡再操作
install.sh,
否則不會動作 .
# Download rocSOLVER
sudo mkdir /opt/rocSOLVER
sudo chown $LOGNAME: /opt/rocSOLVER
git clone --recursive https://github.com/ROCm/rocSOLVER.git -b \ rocm-6.4.4 /opt/rocSOLVER
cd /opt/rocSOLVER
# Build rocBLAS
time ./install.sh -a "gfx803;gfx900;gfx90a;gfx942;gfx1100"
# Copy compiled library
SRC=$(sudo find \
/opt/rocSOLVER/build/release/rocsolver-install/lib/ \
-type f -name "librocsolver.so.*")
TGT=$(sudo find /opt/rocm/ -type f -name "librocsolver.so*")
LIST=$(find /opt/rocm/ -type l -name "librocsolver.so*")
sudo cp -f ${SRC} ${TGT}
for d in ${LIST}; do sudo ln -sf ${TGT} ${d}; done
# Reboot
如果你是在目標機器上編的話才要
reboot.
PyTorch 2.9.1
# Re-enable conda environment
conda activate rocm-build
# Download PyTorch
sudo mkdir /opt/pytorch
sudo chown $LOGNAME: /opt/pytorch
git clone --recursive https://github.com/pytorch/pytorch.git -b v2.9.1 /opt/pytorch
cd /opt/pytorch
# Install required packages
pip install mkl-static mkl-include -r requirements.txt
# Build PyTorch
export PYTORCH_ROCM_ARCH="gfx803;gfx900"
export PYTORCH_BUILD_VERSION=2.9.1 PYTORCH_BUILD_NUMBER=1
python tools/amd_build/build_amd.py
time python setup.py bdist_wheel
# Install PyTorch
pip install /opt/pytorch/dist/torch-2.9.1-cp312-cp312-linux_x86_64.whl ps2 . torchAudio 對應版號是 2.9.1 版
update: 操蛋的, 花了我三個禮拜試一堆組合後終於可以動了....
MNIST PyTorch example Clone the PyTorch examples repository.
git clone https://github.com/pytorch/examples.git
Go to the MNIST example folder.
以上引用自 https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/3rd-party/pytorch-install.html
update2: rocm 7.0 開始擋掉對 gfx803 的支援.