type
status
date
slug
summary
tags
icon
password

一、 如何进行优化

LLVM编译器支持手动预读取(指的是不用在代码里面写内建函数_builtin_prefetch(addr,rw,locality)),也支持LLVM的自动预读取(自动预读取仅支持一些特定的平台)。
在代码中使用内建函数_builtin_prefetch(addr,rw,locality),其中参数addr为预取的内存地址;rw为一个可选参数,值为0或者1(默认为0),0代表的是读操作,1代表的是写操作;locality是必写的常数,范围为[0,3],0代表的无时间局部性,表示只会访问一次,3代表的是高局部性,表示数据在首次访问之后不久会被再次访问。

二、 实验代码

三、 实验结果分析

在X86-64 clang 13.0.0的环境下:
首先来看Data_prefetch1函数的汇编和中间文件:
notion image
notion image
可以看出Data_prefetch1函数里面就是一些正常的赋值、循环等操作,并没有做什么优化
再来看一下Data_prefetch2函数的汇编和中间文件:
notion image
notion image
最后的结果:
notion image
GDB调试技巧LLPC初认识
Loading...
JucanaYu
JucanaYu
干饭人,干饭魂🍚
最新发布
Python练习-add
2025-5-16
Pytorch中的TensorBoard如何使用
2025-5-8
deepspeed转huggingface格式
2025-5-5
在大模型的训练文件中加入swanlab来监控实验进程
2025-4-29
Python练习-类型转换
2025-4-9
Python练习-count、remove、append、extend
2025-4-8