
以下教程需要魔法。
如果不想用魔法,可以使用我编译好的gfx1035的rocblas
链接:https://pan.quark.cn/s/c3c6cf9297cb
提取码:2Wrh

为不支持的 GPU 编译 rocBlas。我们将使用 fallback 模式重新编译 rocblas、tensile 以启用 GPU 支持。
1、在此处检查您的AMD的 GPU 是否受支持:https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html。如果受支持,只需下载https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html 中的最新版AMD HIP SDK for Windows 5.7.1即可,不需要重新编译。您无需更新显示驱动程序。如果不受支持,那么进行下一步。
2、需要安装的软件
2.1 Visual Studio Community 2022(安装的时候添加CMake)
2.2 AMD HIP SDK for Windows 5.7.1
2.3 Git
2.4 ZLUDA(通过Git安装)
2.5 Strawberry perl(安装最新版即可)
2.6 Python 3.10.11
3、设置环境变量(如果环境变量中没有)
3.1 HIP_PATH=C:\Program Files\AMD\ROCm\5.7\
3.2 HIP_PATH_57=C:\Program Files\AMD\ROCm\5.7\
3.3 HIP_VISIBLE_DEVICES=0(这里需要根据您实际的GPU的设备序列号设置)参考AMD官方网站https://rocm.docs.amd.com/en/latest/conceptual/gpu-isolation.html
3.4 HSA_OVERRIDE_GFX_VERSION=10.3.0
(HSA_OVERRIDE_GFX_VERSION 是一个环境变量,通常用于与 AMD 的 GPU 驱动和 ROCm (Radeon Open Compute) 软件栈相关的设置。这个变量允许用户手动覆盖和指定 GPU 的 GFX (Graphics Core Next) 版本,以便在特定的开发或调试场景中使用。作用:在某些情况下,开发者可能需要模拟或强制使用特定的 GFX 版本来测试兼容性或解决特定问题。通过设置 HSA_OVERRIDE_GFX_VERSION,用户可以告诉驱动程序和相关软件栈使用一个指定的 GFX 版本,而不是自动检测的版本。)
3.5 LANG=C
3.6 LC_ALL=C
3.7 C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin(以你实际安装位置为准)
3.8 C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja(以你实际安装位置为准)
3.9 C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools(以你实际安装位置为准)
3.10 C:\Program Files\AMD\ROCm\5.7\bin(以你实际安装位置为准)
3.11 Python的环境变量(上CSDN找教程)
3.12 Git的环境变量
3.13 ZLUDA=C:\Users\你的用户名\zluda(以实际安装位置为准)
4、将C:\Program Files\AMD\ROCm\5.7\lib\cmake\hip\hip-config.cmake中的
cmake_minimum_required(VERSION 3.3)改为
cmake_minimum_required(VERSION 2.8...3.13)
将C:\Program Files\AMD\ROCm\5.7\lib\cmake\hip\hip-config-amd.cmake中的cmake_minimum_required(VERSION 3.3)改为
cmake_minimum_required(VERSION 2.8...3.13)

5、接下来去C盘的根目录新建名为“github”的文件夹,进入C:\github中,右键运行终端或者powershell。
5.1 运行git clone https://github.com/microsoft/vcpkg
5.2 结束后再运行.\vcpkg\bootstrap-vcpkg.bat
6、进入目录C:\Users\你的用户名 右键打开终端,运行
6.1 git clone -b tags/5.7.1 https://github.com/ROCm/rocBLAS.git(这里的5.7.1对应AMD HIP SDK for Windows 5.7.1,避免出现版本不兼容)
6.2 cd rocBLAS
6.3 下载https://github.com/ROCm/rocBLAS/files/13599164/vcpkg.json
将vcpkg.json移动至Rocblas目录下
6.4 cd ..
6.5 git clone -b tags/5.7.1 https://github.com/ROCm/Tensile.git(这里的5.7.1对应AMD HIP SDK for Windows 5.7.1,避免出现版本不兼容 )
6.6 将此文件下载到 Tensile 文件夹中,这将启用回退架构延迟加载,并使我们能够为不受支持的显卡编译内容。https://raw.githubusercontent.com/ulyssesrr/docker-rocm-xtra/f25f12835c1d0a5efa80763b5381accf175b200e/rocm-xtra-rocblas-builder/patches/Tensile-fix-fallback-arch-build.patch
6.7 在文件夹Tensile中Git 命令应用此补丁:git apply Tensile-fix-fallback-arch-build.patch(没有任何输出就是成功了)
6.8 自行在源码中添加gfx1103或者gfx1035(这里的gfx1035即为您所需要的目标显卡编号),修改
C:\Users\你的用户名\Tensile\Tensile\Common.py中
globalParameters["SupportedISA"]
CACHED_ASM_CAPS
这两个变量第一个添加(10,3,5),第二个参考其他的添加,模仿近似的架构增加即可比如gfx1035参考gfx1030
参考下图


7、在 rocBlas 文件夹中使用x64 Native Tools Command Prompt for VS打开cmd,然后运行
7.1 cd C:\Users\你的用户名\rocBLAS
7.2 python rdeps.py
7.3 运行python rmake.py -a gfx1035 --no-lazy-library-loading --no-merge-architectures -t C:\Users\你的用户名\Tensile(这里的gfx1035替换为您所需要的目标显卡编号)
7.4 运行会报错,报错了之后再修改后面的东西!!!
C:\Users\你的用户名\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)(注意缩进)
参考下图

8、回到编译命令行中继续执行编译命令
python rmake.py -a gfx1035 --no-lazy-library-loading --no-merge-architectures -t C:\Users\你的用户名\Tensile
9、这里可能需要比较久的时间,完成后在编译命令行中运行
9.1 .\build\release\virtualenv\Scripts\activate.bat
9.2 TensileCreateLibrary --architecture gfx1035 --code-object-version default --merge-files --library-format msgpack .\library\src\blas3\Tensile\Logic\asm_full D:\HIP HIP(这里的gfx1035替换为您所需要的目标显卡编号,D:\HIP需要自己建文件夹)
10、完成后将D:\HIP\library中的Kernels.so-000-gfx1035.hsaco和TensileLibrary.dat文件复制到C:\Program Files\AMD\ROCm\5.7\bin\rocblas\library中
在C:\Program Files\AMD\ROCm\5.7\bin\rocblas\library中的TensileManifest.txt文件中添加
C:\Program Files\AMD\ROCm\5.7\bin\rocblas\library\TensileLibrary.dat
C:\Program Files\AMD\ROCm\5.7\bin\rocblas\library\Kernels.so-000-gfx1035.hsaco

接下来就可以运行SD了
