torch_npu构建依赖PyTorch,目前需要参考编译优化-Pytorch用毕昇编译器构建PyTorch之后,在环境里重新安装PyTorch,然后再编译torch_npu。
torch_npu推荐在容器里进行编译,参考https://gitee.com/ascend/pytorch下的“README”文件中"使用源代码进行安装" 一栏拉取镜像。以下描述均以torch_npu v2.1.0版为例。
参考安装毕昇编译器配置毕昇编译器环境。
export CC=clang export CXX=clang++
cd torch_npu git clean -dfx bash ci/build.sh --python=3.8 --enable_lto
pip install torch_npu-*.whl --force-reinstall --no-deps
export CC=clang export CXX=clang++
cd torch_npu git clean -dfx bash ci/build.sh --python=3.8 --enable_lto --enable_pgo=1
pip3 install /path/to/*.whl --force-reinstall --no-deps
llvm-profdata merge /path/to/profile -o default.profdata
该命令可以合并/path/to/profile目录下所有的profraw文件,profile数据文件不受机器环境影响,可以迁移到其他机器上使用。
配置profdata文件:将前一步骤中生成的default.profdata文件拷贝到torch_npu目录下。请将profdata文件命名为default.profdata。
cd torch_npu git clean -dfx bash ci/build.sh --python=3.8 --enable_lto --enable_pgo=2
二次编译后的torch_npu的whl包为正式使用的高性能包。
torch_npu构建时默认使用了openmp。torch_npu运行环境需要安装毕昇编译器包,并设置LD_LIBRARY_PATH环境变量,以便可以正确找到动态库libomp.so。
可能是编译时c++11 abi不一致导致,建议查看PyTorch和torch_npu的build目录下的compile_commands.json文件,检查宏DGLIBCXX_USE_CXX11_ABI的值是否一致。若不一致,设置环境变量export _GLIBCXX_USE_CXX11_ABI=0,再重新编译PyTorch。