ROCm环境下安装tvm主要是为了构建libtvm.so、libtvm_runtime.so共享库
- 配置cmake环境,建议3.14版本以上
- 配置python环境,建议python3版本以上
- 配置gcc环境、ROCm的llvm环境
- 从下载页面https://tvm.apache.org/docs/install/index.html从下载 tvm 源代码,解压tar xvzf apache-tvm-src-v0.8.0.tar.gz(此处可将源码包修改名字成tvm)
-
cd tvm mkdir build && mkdir install cd build cp ../cmake/config.cmake ./
- 修改config.cmake文件:
a) 指定ROCm路径:set(USE_ROCM /opt/rocm-4.x)
b) 指定LLVM路径(此处一定要到llvm-config二进制码):set(USE_LLVM /opt/rocm-4.x/llvm/bin/llvm-config)
c) set(USE_MIOPEN ON)、set(USE_ROCBLAS ON)、set(USE_GRAPH_EXECUTOR ON)、set(USE_PROFILER ON)、set(USE_RELAY_DEBUG ON) cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/tvm/install ..
我这里在cmake构建时报错:“Cannot find ROCM, USE_ROCM=/opt/rocm-4.x ”(将USE_ROCM=ON改为自动搜索也不成)→ 在源码中搜索关键字发现是tvm/cmake/modules/ROCM.cmake报错,归根结底是“ROCM_FOUND”参数为假 → 搜索“ROCM_FOUND”关键字是由tvm/cmake/utils/FindROCM.cmake文件决定 → 直接对FindROCM.cmake文件进行修改,路径写死:
红色框为rocm路径,与config.cmake中保持一致;
绿色框为libamdhip64.so、libMIOpen.so、librocblas.so、libhsa-runtime64.so库的具体位置(一定到具体到库而不是路径,否则cmake配置时会报:WARNING: Target “tvm” requests linking to directory “/opt/rocm-4.x”,之后在编译时会直接出错)。- cmake完成后进行编译与安装:
make -j6 && make install - 配置环境:
ROCm中clang的环境、带有numpy等库函数的python3(module load apps/Python/python3.7.9)、tvm环境:
export PYTHONPATH=/home/tvm/python:$PYTHONPATH
验证:
- 启用 C++ 测试
可以用 Google Test 来驱动 TVM 中的 C++ 测试。安装 GTest 最简单的方法是从源代码安装:
git clone https://github.com/google/googletest
cd googletest
mkdir build && mkdir install
cd build
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=../install ..
make && make install
安装成功后,可以用 ./tests/scripts/task_cpp_unittest.sh 来构建和启动 C++ 测试,测试最后报以下错:
可以使用TIMEOUTtest属性控制单个测试的CMake超时,此处超时是因为默认值为5,可以添加–timeout选项调用时覆盖默认超时。例如,要将全局超时默认值设置为120秒来运行测试:
./tests/scripts/task_cpp_unittest.sh --timeout 120
测试效果如下图所示: