本文主要是在编译AI处理器编译器的过程说明及遇到的问题整理
这是我入职以后的学习笔记,已经屏蔽了所有和商业有关的关键字,若造成影响请告知。
准备
-
ssh到工作节点,安全性输入yes,密码输入自己账户密码。
-
注意,代码开发工作要放到
/自己用户名路径/
下边。 -
需要配置环境变量:
source /arm/tools/setup/init/tcsh
module load core platform/lsf/10.1sp4
module load core arm/cluster/2.0
module load eda synopsys/scl/2017.12
module load swdev python/python/3.6.1
module load swdev
module load gnu/gcc/7.3.0
setenv PATH /usr/local/cuda/bin:/usr/local/cuda/lib64:/自己用户名路径/workarea/tools/gdb-8.3/bin:/自己用户名路径/workarea/tools/cmake-3.14.4/bin:/自己用户名路径/workarea/tools/python/bin:$PATH
setenv LD_LIBRARY_PATH /usr/local/cuda/lib64:/自己用户名路径/workarea/tools/gdb-8.3/lib:/自己用户名路径/workarea/tools/gcc-8.1.0/lib:/自己用户名路径/workarea/tools/gcc-8.1.0/lib64:$LD_LIBRARY_PATH
Setenv CC which gcc
Setenv CXX which g++
Setenv PYTHONE which python
编译命令
-
configuration
cmake ../src/ -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="AIPU"
-
make
make
遇到的问题
-
使用
make -j
选项编译之后,编译失败,提示:g++ error: vfork resource temporarily unavailable
.未解决:初步估计应该是我账户权限不足,当启动多线程加速编译时,会提示资源受限,使用
make
进行编译,不会出现这样的问题,但是编译非常慢。初步解决:使用
-j
选项是表示使用最多的线程进行工作,当我使用make -j 4
时,使用4线程编译通过。 -
编译之后,生成
clang-8
,使用该编译器对c程序进行编译,提示:`error: unable to create target: ‘No available targets are compatible with triple"x86_64-unknown-linux-gnu"’解决:编译器运行未指定target,应该按以下方式运行:
./clang --target=aipu -emit-llvm -S test.c
: 这样生成的是.ll后缀文件./clang --target=aipu -O0 -S test.c
: 这样生成的是汇编文件