clang/llvm源码构建

您所在的位置:网站首页 clang使用gcc的库 clang/llvm源码构建

clang/llvm源码构建

2023-06-27 07:25| 来源: 网络整理| 查看: 265

文章目录 下载编译整体架构流程cmodel执行csmith随机测试efdocker llvmd gcc7 使用方法libcxx c++ string and vector test编译流程

下载编译

1、下载源代码 git clone ssh://[email protected]:29418/llvm-project && (cd llvm-project && .hooks/install_hooks.sh) 分支是:sdk_dev

2、在llvm-project目录下面,新建build目录

3、cd build

4、cmake -G Ninja -DLLVM_ENABLE_PROJECTS=‘clang;llvm;lld;libdturt;dtutest’ -DLLVM_TARGETS_TO_BUILD=“DTU” -DBUILD_SHARED_LIBS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=1 …/llvm

5、ninja

6、完成编译后,clang等工具在build/bin/路径下面。

整体架构流程

提示:这里可以添加技术整体架构

例如: 在语言模型中,编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。

cmodel执行

一、下载cmodel代码

[email protected]:sip/cmodel.git

二、构建cmodel

bazel build //app:xpu

三、生成测试用例

clang a.cpp --target=dtu -mcpu=scorpio -O3 -o a.out // scorpio target

clang a.cpp --target=dtu -mcpu=x-O3 -ldturt2 -o a.out // pavo target

llvm-objcopy -O binary a.out a.bin

hexdump -v -e ‘“0x%04_ax:” 4/4 "%08x " “\n”’ a.bin | sed ‘s/😦[0-9a-f]) ([0-9a-f]) ([0-9a-f]) ([0-9a-f])/:0x\4\3\2\1/’ > a.hex

四、运行

xpu -i a.hex --vmem vdmem/dropout_fp32.hex --dump_vmem vmem.log --enable_plc_execution > a.log

五、查看a.log

Total cycles of this execution are 12536

查看上面一行信息,12536即是cycle数。如果没有这行信息,说明跑挂了。

csmith随机测试

一、需求

想通过csmith随机测试工具来对编译器进行压力测试,并能自动化,最终想达到每天万级的随机测试都能PASS。如果有FAIL的testcases,希望第二天可以发送给compiler,compiler fix后会将其纳入LLVM ci。

如果fail的testcases太大,我们希望可以裁剪(并能复现原来错误),这里有个工具可以使用:https://github.com/csmith-project/creduce.git

二、csmith源码构建和使用

https://github.com/csmith-project/csmith.git

三、目前原生csmith工具生成的testcases,可能dtu compiler不支持。这个情况可能要修改csmith源码,来避免这种程序的生成。目前能想到的不支持的语法有:

a. libc库

四、csmith成功生成可用的testcases之后,编译命令是:

gcc a.c -o x86.out

clang a.c --target=dtu -mcpu=x -ldturt2 -O3 -o sip20_O3.out

clang a.c --target=dtu -mcpu=x -ldturt2 -O0 -o sip20_O0.out

clang a.c --target=dtu -mcpu=scorpio -O3 -o sip30_O3.out

clang a.c --target=dtu -mcpu=scorpio -O0 -o sip30_O0.out

希望这5个结果都是一致的,才算PASS。

五、运行命令

X86: ./x86.out

sip20: sip20_simrun sip20_O3.out/sip20_O0.out

sip30: sip30_simrun sip30_O3.out/sip30_O0.out

六、后续

希望可以增强csmith,支持bf16,支持dtu 2d指令等。

七、sip20_simrun,将下面2个文件(pavomodel-dbg,sip20_simrun)放在同一目录下,然后执行:sip20_simrun sip20.out就会打印出执行结果,如下图: 在这里插入图片描述 x86执行结果如下图: 在这里插入图片描述

efdocker llvmd gcc7 使用方法

efdocker llvmd gcc7编译llvm11 过tops ci

update docker: source /home/.devtools/tools/env.sh; sudo mount -t nfs -o ro -o vers=3 10.12.30.221:/ef_Infra/devtools /home/.devtools; efdocker run -v /home:/home -v /home3:/home3 -v /swbuild:/swbuild -v ~/.ssh:/root/.ssh llvmd efdocker enter --as-root llvmd

compile:

git clone ssh://[email protected]:29418/llvm-project && (cd llvm-project && curl -Lo git rev-parse --git-dir/hooks/commit-msg http://swbuild.enflame.cn/gerrit/gerrit_hooks/commit-msg && chmod +x git rev-parse --git-dir/hooks/commit-msg && curl -Lo git rev-parse --git-dir/hooks/prepare-commit-msg http://swbuild.enflame.cn/gerrit/gerrit_hooks/prepare-commit-msg && chmod +x git rev-parse --git-dir/hooks/prepare-commit-msg)git checkout topscc_devmkdir build;cd build ;cmake -G ‘Unix Makefiles’ -DLLVM_ENABLE_PROJECTS=‘clang;clang-tools-extra;llvm;lld;libdturt;musl-clib;libcxx;libcxxabi’ ${LLVM_TARGET_OPTIONS} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_BUILD_LLVM_DYLIB=OFF -DLLVM_LINK_LLVM_DYLIB=OFF -DCLANG_LINK_CLANG_DYLIB=OFF -DLLVM_ENABLE_TERMINFO=OFF -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_STATIC_LINK_CXX_STDLIB=OFF -DCMAKE_CXX_FLAGS=‘-D_GLIBCXX_USE_CXX11_ABI=0 -O3 -DNDEBUG’ …/llvm -DCMAKE_TOOLCHAIN_FILE=/home/jian.gao/gcc7.cmakemake -j64; libcxx c++ string and vector test

string_test.cc:

#include #include

using namespace std;

int main () { char str1[13] = “runoob”; char str2[13] = “google”; char str3[13]; int len ;

// 复制 str1 到 str3 strcpy( str3, str1); cout cout cout



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3