Windows编译AMD ROCm rocblas教程
究极无敌超级拳王
2024年05月11日 11:37
AI教程~

!!编译rocblas需要全程全局魔法,开始准备编译前,请确保编译环境全程全局魔法。

没有编译条件的可以使用我编译好的rocm_rocblas

链接:https://pan.quark.cn/s/33ae06cdaffa

提取码:LV9y

安装依赖

首先安装以下依赖

1.Git for Windows

2.Visual Studio 2022 (桌面C++开发)

3.Strawberry perl

4.python 3.11

5.AMD HIP SDK for Windows 5.7.1

然后将

Git

Perl

ROCM

加入环境变量path中,确保可以运行以下命令

hipinfo

git

perl

python

接下来去C盘的根目录新建名为“github”的文件夹,进入C:\github中,右键运行终端或者powershell。

运行以下命令

git clone -b 2023.06.20 https://github.com/microsoft/vcpkg

.\vcpkg\bootstrap-vcpkg.bat

等待完成后检查C:\github\vcpkg中是否存在vcpkg.exe,存在即可。

确保存放源码的硬盘剩余空间在30G以上,如果编译很多显卡建议100G以上

新建一个目录存放源码文件,比如D:\rocm

进入目录右键打开终端,运行

git clone -b release/rocm-rel-5.7.1.1 https://github.com/ROCmSoftwarePlatform/rocBLAS.git

下载https://github.com/ROCm/rocBLAS/files/13599164/vcpkg.json

将vcpkg.json移动至Rocblas目录下

继续运行

git clone -b release/rocm-rel-5.7.1.1 https://github.com/ROCm/Tensile

下载https://raw.githubusercontent.com/ulyssesrr/docker-rocm-xtra/f25f12835c1d0a5efa80763b5381accf175b200e/rocm-xtra-rocblas-builder/patches/Tensile-fix-fallback-arch-build.patch

将Tensile-fix-fallback-arch-build.patch放到D:\rocm中

继续运行

cd Tensile

git apply D:\rocm\Tensile-fix-fallback-arch-build.patch

如果没有任何输出就是成功了。

到这里准备工作就完成了。

cut-off

默认情况下这份源码并不支持某些显卡,比如比如gfx1103——780M

需要自行在源码中添加gfx1103

Tensile\pytest.ini

Tensile\Tensile\Source\CMakeLists.txt

Tensile\Tensile\Source\lib\include\Tensile\AMDGPU.hpp

Tensile\Tensile\Source\lib\include\Tensile\Serialization\Predicates.hpp

以及

Tensile-rocm\Tensile\Common.py中

globalParameters["SupportedISA"]

CACHED_ASM_CAPS

这两个变量

模仿近似的架构增加即可比如gfx1103参考gfx1101

cut-off

开始编译

接下来开始编译,在开始菜单中打开“x64 Native Tools Command Prompt for VS 2022”,进入rocblas目录

cd D:\rocm\Rocblas

python rdeps.py

等待vcpkg下载安装软件包,完成后运行

python rmake.py -a gfx1031 --no-lazy-library-loading --no-merge-architectures -t D:\rocm\Tensile

Tensile目录根据你的实际情况填写,gfx1031修改为你需要编译的目标gpu。比如rx5700xt使用gfx1010。如果编译多个GPU 中间使用;分开,前后加上""。

比如python rmake.py -a "gfx1031;gfx1032;gfx1033" --no-lazy-library-loading --no-merge-architectures -t D:\rocm\Tensile

这里会报错。

在D:\rocm\Tensile\build\lib\Tensile\Source\lib\CMakeLists.txt中

搜索find_package(msgpack REQUIRED)修改为find_package(msgpack REQUIRED NAMES msgpack msgpack-c msgpack-cxx)

搜索get_target_property(msgpack_inc msgpackc INTERFACE_INCLUDE_DIRECTORIES),在下面添加

elseif(TARGET msgpack-cxx)

get_target_property(msgpack_inc msgpack-cxx INTERFACE_INCLUDE_DIRECTORIES)

这两行然后保存。

回到编译命令行中继续执行编译命令。

等待完成后

继续在编译命令行中运行

.\build\release\virtualenv\Scripts\activate.bat

TensileCreateLibrary --architecture gfx1031 --code-object-version default --merge-files --library-format msgpack .\library\src\blas3\Tensile\Logic\asm_full D:\hip HIP

这里gfx1031和上面一样需要修改为你的目标gpu,D:\hip可自行指定,确保文件夹存在即可

完成后将D:\hip\library中所有文件复制到C:\Program Files\AMD\ROCm\5.7\bin\rocblas\library中即可

某些软件需要放在软件根目录的.\rocblas\library中

这样就可以让你的显卡能够运行LLM,SD这些AI应用了。

gfx803:RX 400、RX 500

gfx900:RX Vega 56/64

gfx906:Radeon VII

gfx1010:RX 56xx、57xx

gfx1012:RX 53xx、55xx

gfx1030:RX 68xx、69xx

gfx1031:RX 67xx

gfx1032:RX 66xx

gfx1033:Steam Deck

gfx1034:RX 64xx、65xx

gfx1035:660M、680M

gfx1036:AMD Radeon(TM) Graphics (锐龙7000系列核显)

gfx1100:RX 79xx

gfx1101:RX 77xx、78xx

gfx1102:RX 76xx

gfx1103:740M、760M、780M