当前位置: 首页 > news >正文

llvm, polly, 向量化测试,GEMM非常明显

1)这是OMP的

rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=2 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/stencils/jacobi-2d/jacobi-2d.c  -o a3.polly.o3
time ./a3.polly.o3

real    0m9.228s
user    0m9.016s
sys    0m0.169s

2)vectorizer的结果

a@a:~/src/a3.llvm.polly/a1.polybench-c-4.2$ rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/stencils/jacobi-2d/jacobi-2d.c  -o a3.polly.o3
time ./a3.polly.o3

real    0m9.078s
user    0m8.851s
sys    0m0.196s

3)对于GEMM,vectorizer效果非常明显。

rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=2 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/linear-algebra/blas/gemm/gemm.c  -o a3.polly.o3
time ./a3.polly.o3


rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/linear-algebra/blas/gemm/gemm.c  -o a3.polly.o3
time ./a3.polly.o3

real    0m3.265s
user    0m3.109s
sys    0m0.132s

real    0m1.211s
user    0m1.133s
sys    0m0.076s

4)出了个小BUG:

rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/datamining/correlation/correlation.c  -o a3.polly.o3
time ./a3.polly.o3
/usr/bin/ld: /tmp/correlation-ceecf1.o: in function `main':
correlation.c:(.text+0x181): undefined reference to `sqrt'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
bash: ./a3.polly.o3: 没有那个文件或目录

解决方法:加上-lm

这是常见的错

5)

rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=2 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/datamining/correlation/correlation.c  -o a3.polly.o3 -lm
time ./a3.polly.o3


rm -f *.o3
clang -DLARGE_DATASET -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/datamining/correlation/correlation.c  -o a3.polly.o3 -lm
time ./a3.polly.o3

real    0m20.509s
user    0m20.406s
sys    0m0.072s

real    0m2.272s
user    0m2.226s
sys    0m0.036s

a@a:~/src/a3.llvm.polly/a1.polybench-c-4.2$ 
rm -f *.o3
gcc -DLARGE_DATASET -O3 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities    /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c  /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/datamining/correlation/correlation.c  -o a3.polly.o3 -lm
time ./a3.polly.o3

real    0m17.786s
user    0m17.606s
sys    0m0.153s

如果向量化是正确的话,那么效果太好。

http://www.dtcms.com/a/271906.html

相关文章:

  • ValueConverter转换器WPF
  • Leetcode力扣解题记录--第42题 接雨水(动规和分治法)
  • 开源 Arkts 鸿蒙应用 开发(六)数据持久--文件和首选项存储
  • [特殊字符] LLM(大型语言模型):智能时代的语言引擎与通用推理基座
  • 藏文识别技术的关键挑战与解决方案
  • 使用Visual Studio Code附加到Jetty进程调试Servlet
  • 小皮面板搭建pikachu靶场
  • 710 Mybatis实战
  • Go语言中map的零值是什么?对零值map进行读写操作会发生什么?如何正确初始化和使用map?
  • 力扣-73.矩阵置零
  • 【会员专享数据】2013-2024年我国省市县三级逐年SO₂数值数据(Shp/Excel格式)
  • 2025年材料应用与计算机科学国际会议(MACS 2025)
  • C++中的左值、右值与std::move()
  • 数据 + 模型 驱动 AI Native 应用发展
  • 利用DBeaver实现异构数据库数据定时任务同步
  • 计算机网络实验——以太网安全实验
  • Flutter 知识点总结
  • React虚拟DOM的进化之路
  • Vue.js 过渡 动画
  • 如何在Flutter开发中系统性减少知识盲区
  • 使用 FreeRTOS 实现简单多任务调度(初识 RTOS)
  • Excalidraw:一款轻量、高效、极具手感的在线白板工具
  • 【免费数据】2020年中国高精度耕地范围矢量数据
  • 解析几何几百年重大错误:将无穷多各异圆盘(球)误为同一点集
  • 语音转文字「本地化」新解!Whisper Web+cpolar实现零服务器部署与远程操作
  • 大数据在UI前端的应用创新:基于用户画像的精准广告投放系统
  • imx6ull-裸机学习实验17——SPI 实验
  • 《数据库》第一次作业:MySQL数据库账户及授权
  • FeatherScan v4.0 – 适用于Linux的全自动内网信息收集工具
  • 2025.07.09华为机考真题解析-第二题200分