- 博客(7)
- 收藏
- 关注
原创 LLVM中四种寄存器分配算法及开启选项
在LLVM编译器中,一共有四种寄存器分配算法:Basic Register Allocator、Fast Register Allocator、PBQP Register Allocator、Greedy Register Allocator。
2024-08-08 19:57:32
501
原创 GCC编译器安装过程
在gcc-releases-gcc-13.1.0同级目录下新建文件夹作为你安装的gcc的路径,生成makefile。点开tags,找到你想安装的版本,复制链接地址,我这里安装的是gcc-13.1.0。进入刚刚解压的文件夹下载相关依赖。接下来等安装成功就行了。
2024-08-07 10:02:10
493
原创 LLVM编译器安装过程
DLLVM_ENABLE_PROJECTS:指定你要安装的子项目,clang和flang分别是编译c/c++和Fortran语言,如果你要使用PGO,还需要加上compiler-rt。DLLVM_TARGETS_TO_BUILD:指定你安装的LLVM要构建的目标后端,这里是指定只构建当前主机相匹配的目标架构,可选x86或RISCV等。点开tags,找到你想安装的版本,复制链接地址,我这里安装的是llvmorg-18.1.8。DCMAKE_INSTALL_PREFIX:指定你要安装的LLVM的路径。
2024-08-05 10:19:39
582
原创 LLVM编译器中PGO的用法
PGO是LLVM编译器的一种优化技术,它通过运行程序以收集性能数据(主要是基本块的执行频率),利用这些数据来指导编译器进行更有效的优化。这一步将会生成*.profraw的文件,其中包含了test程序的性能数据,根据不同的输入可以生成多个性能数据文件。此时生成的binary相比于不加此优化的binary应该有更好的性能。在编译之前首先要把得到的性能数据文件做合并(单个文件也要做转化),使用性能数据指导编译器进行第二次编译获得优化后的程序。,运行第一次编译的程序得到性能数据。编译选项进行第一次编译。
2024-08-03 10:17:49
394
原创 使用LLVM-COV查看C/C++代码覆盖率
代码覆盖率可以展示某行代码的执行频率,也能表现出分支跳转的执行情况,便于我们性能分析。LLVM-COV是LLVM编译器的一个工具,支持c/c++生成代码覆盖率,如果是fortran语言,则是需要用到gcc编译器的gcov工具才行,我的另一篇有写。会输出到控制台,可以选择重定向到一个txt文件便于阅读。执行之后会生成后缀为profraw的文件。选项,本次使用的编译器是LLVM17.在编译和链接时都加上。
2024-08-02 16:46:58
448
原创 利用gcov生成Fortran语言(及C/C++)代码覆盖率的方法
代码覆盖率数据可以表现出程序执行中对某行代码的执行频率,也能表现出分支跳转的执行情况,对性能分析极为重要,但是我们之前使用的生成代码覆盖率的工具llvm-cov没有对Fortran语言做相关支持,所以为了方便分析,我们使用gcov来生成代码覆盖率数据。这一步会生成一个*.f对应的*.gcda文件,其中包含的就是程序的执行信息。在当前文件夹下执行,要有*.f、*.gcno、*.gcda文件。2、这个方法对于c/c++语言同样适用,*.f改成*.c就行。这一步会生成一个*.f对应的*.gcno文件。
2024-08-02 10:07:35
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人