昇腾AI软件栈中提供了CCEC编译器进行TBE算子的编译,将CodeGen生成的类C代码文件(CCE)编译生成昇腾AI处理器可执行的文件。图编译时,TBE内部会自动调用CCEC编译器,无需用户手工调用。
CCEC编译器存储在CANN软件安装后文件存储路径下的“compiler/ccec_compiler”目录中,包含的主要二进制工具如下所示:
工具名称 |
存储相对路径 |
功能说明及使用场景 |
风险分析 |
保留原因 |
---|---|---|---|---|
ccec(clang) |
ccec_compiler/bin/clang |
CCE算子编译器。 编译TBE生成的算子时会自动使用clang进行编译,不建议用户单独调用。 |
用户只能使用此工具编译源码生成可执行的二进制文件,无法获取其他运行态信息,实际风险小。 |
属于编译器配套基础二进制工具集。 |
llvm-objdump |
ccec_compiler/bin/llvm-objdump |
调试工具,可打印算子函数名和地址偏移,用于辅助定位问题。 使用AI Core Error分析工具解析AI Core错误信息时会自动使用此工具,定位TBE算子出错时的函数位置信息,不建议用户单独调用。 |
用户定位算子出错位置信息时不会打印汇编信息,仅打印符号表和偏移量,无法获取其他运行态信息,实际风险小。 |
|
lld |
ccec_compiler/bin/lld |
单架构CCE算子链接器。 编译TBE算子过程中会自动使用此工具链接算子组成完整的可执行程序,不建议用户单独调用。 |
恶意攻击者只能改变自身权限下的库文件链接顺序,当然攻击者也可以通过操作系统的其他的工具实现该攻击。 工具自身实际风险小。 |
|
llvm-ar |
ccec_compiler/bin/llvm-ar |
打包归档二进制文件。 算子静态库打包时使用,不建议用户单独使用。 |
用户只能使用此工具将目标文件打包成库文件,无法获取其他运行态信息,实际风险小。 |
|
llvm-config |
ccec_compiler/bin/lld |
打印配置的llvm编译选项、库文件信息等,这些信息用于构建llvm。 TVM构建依赖此工具获取库信息,不建议用户单独使用。 |
用户只能获取编译选项,依赖库等信息,无法获取其他运行态信息,实际风险小。 |
|
cce-ld |
ccec_compiler/bin/cce-ld |
CCE算子异构链接器。 Runtime的HLT(HIGH LEVEL TEST)会使用此工具,不建议用户单独使用。 |
用户只能使用此工具链接中间文件生成可执行程序,无法获取其他运行态信息,工具实际风险小。 |
|
llvm-objcopy |
ccec_compiler/bin/llvm-objcopy |
复制和改变目标文件的工具。主要作用为将目标文件转换为二进制文件。 |
用户只能使用此工具转换二进制文件格式,无法获取其他运行态信息,实际风险小。 |
|
llvm-conv |
ccec_compiler/bin/llvm-conv |
此工具用于打印算子输出的覆盖率统计信息。 |
用户只能使用此工具统计覆盖率信息,无法获取其他运行态信息,实际风险小。 |
|
llvm-nm |
ccec_compiler/bin/llvm-nm |
打印目标文件的符号表。 调试场景下,用于查询符号信息。 |
用户只能使用此工具查看符号信息,无法获取其他运行态信息,实际风险小。 |
|
llvm-size |
ccec_compiler/bin/llvm-size |
打印目标文件的尺寸信息。 用于分析codesize时使用。 |
用户只能使用此工具查看二进制文件大小,无法获取其他运行态信息,实际风险小。 |
|
llvm-strip |
ccec_compiler/bin/llvm-strip |
去掉目标文件中的调试信息。 剥离调试信息,去除部分段内容时使用。 |
用户只能使用此工具去除调试信息,无法获取其他运行态信息,实际风险小。 |