编译与构建
SiP编译
下载加速库源码
git clone https://gitcode.com/cann/sip.git
您可自行选择需要的分支。
编译
用户需进入加速库的根目录并进行编译
cd ${SiP_root_path}
bash build.sh
【注】:SiP库编译依赖ascend-boost-comm,因此该编译过程涉及①拉取并编译ascend-boost-comm(昇腾分布式通信加速库)仓;②编译SiP加速库两个过程。更多命令介绍可查看sip仓主目录下的README.md和build.sh文件。
完整依赖清单请参考根目录
requirements.txt与README.md的「环境构建」章节。
SiP编译相关说明
SiP的基本编译命令是bash build.sh,在默认构建模式下,该命令会生成版本信息,并创建安装包。
bash build.sh
可通过使用--help参数获取build.sh脚本功能已及对应的指令。
--help Displays help message.
--dev 仅编译算子库, 若type为空,默认为dev.
--clean 清除缓存和依赖的三方库.
--ut 编译执行单元测试用例.
编译目标芯片架构配置
SiP库支持多种Ascend芯片架构,编译时通过configs/build_config.json配置需要编译的目标芯片。该文件内容如下:
{
"targets": {
"ascend310b": false,
"ascend310p": false,
"ascend910b": true,
"ascend950": true
}
}
各字段含义说明:
| 芯片架构 | 对应产品系列 |
|---|---|
ascend310b |
Atlas 200I/500 A2 推理卡 |
ascend310p |
Atlas 300I 推理卡 |
ascend910b |
Atlas A2 训练/推理服务器 |
ascend950 |
Ascend 950PR/950DT |
将需要编译的目标设置为true,不需要编译的目标设置为false。
注意:默认配置同时启用了
ascend910b和ascend950两个目标。若您的运行环境仅支持其中一种芯片(例如仅支持Ascend910),请将不支持的芯片架构设置为false,否则编译不支持的芯片目标时会因硬件特性不匹配而失败(典型报错如simd_vf function 'RegCompute' must be a free function or static member function)。
自定义编译配置文件
除修改项目自带的configs/build_config.json外,还可通过环境变量BUILD_CONFIG_FILE指定自定义的配置文件路径,使项目在编译时读取该文件而非默认配置。例如:
export BUILD_CONFIG_FILE=/path/to/your/build_config.json
bash build.sh
说明:编译系统实际读取的配置文件由
scripts/build_util.py中的get_build_target_list()函数决定。当未设置BUILD_CONFIG_FILE环境变量时,默认读取项目根目录下的configs/build_config.json;设置该环境变量后,则读取指定路径的配置文件。项目依赖的mki组件(位于3rdparty/mki/)虽也带有configs/build_config.json,但SiP编译流程以项目自身的配置文件为准,无需修改3rdparty/mki/下的配置。
SiP关键文件介绍
-
scripts目录:install.sh:安装脚本uninstall.sh:卸载脚本release.sh:全自动构建与打包脚本set_env.sh:SiP的环境变量设置文件build_util.py:编译辅助脚本,负责读取编译目标配置(build_config.json)及算子二进制打包
-
configs目录:build_config.json:编译目标芯片架构配置文件op_list.yaml:算子列表配置
-
output目录:version.info
-
output/lib目录:libasdsip.so:SiP加速库的动态链接库文件libmki.so:MKI库的动态链接库文件
配置文件
编译文件build.sh
文件名:build.sh
加速库编译文件,文件中可设置日志存放目录、日志文件、编译器版本等,一般无需更改。
环境变量设置文件set_env.sh
文件名:scripts/set_env.sh
加速库安装完成后,系统提供set_env.sh(进程级环境变量设置脚本),以自动完成环境变量设置,用户进程结束后自动失效。
若想查看相关变量含义说明,可访问环境变量参考-CANN社区版-昇腾社区。