自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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编译Fortran语言的全过程

以一个给数组求和的程序来作为例子,编译器使用的是LLVM 18.1.8!

2024-08-04 12:55:36 445

原创 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关注的人

提示
确定要删除当前文章?
取消 删除