社区
英特尔边缘计算技术
帖子详情
专家你好,能不能讲讲如何利用编译器优化循环的方法
waruqi
2008-05-12 07:16:49
如何利用编译器优化循环
什么时候可以进行循环展开呢
...全文
116
3
打赏
收藏
专家你好,能不能讲讲如何利用编译器优化循环的方法
如何利用编译器优化循环 什么时候可以进行循环展开呢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
waruqi
2008-05-13
打赏
举报
回复
那如果循环内部是一组数据无关的复杂函数,而不是简单的几条指令,能否使用 #pragma ivdep 进行优化
比如
for (int i = 0; i < m; i++)
func(i);
intel_iclifort
2008-05-13
打赏
举报
回复
能够利用编译器优化循环, 最主要的就是要消除循环的数据依赖性, 或者说循环是独立的, 否则编译器很难采用向量化(vectorization)或者软件流水线(software pipelining)的方法提高执行性能
在Intel编译器的手册中, 有专门的章节讨论这个话题 Using High-Level Optimizations (HLO).
一个比较简单的方法来判定循环的独立性, 就是将循环的执行次序颠倒后, 看最后的结果, 是否和原先的相同.
可以通过阅读编译器的优化报告来查看, 是否成功进行了循环优化, 不能进行的原因. 需要使用编译选项"-opt-report -opt-report-phasehlo"
下面给出一个例子:
Example 1
void ignore_vec_dep(int *a, int k, int c, int m)
{
#pragma ivdep
for (int i = 0; i < m; i++)
a[i] = a[i + k] * c;
}
如果没有ivdep pragma, 编译器不会自动将该循环优化, 因为k的值未知, 如果k<0, 那么优化可能会导致非法操作
编译器
和解释器
Thorsten Ball 和 Tim Raymond 与 Mat Ryer 和 Mark Bates 一起讨论
编译器
和解释器。
编译器
和解释器的作用是什么?他们做什么?使用 Go 编写
编译器
的方式和原因。 还讨论了 Thorsten 的书“Writing an ...
性能
优化
的 10 种手段,你用过几个?
来源:https://code2life.top/2020/08/15/0055-performance/今天分享一篇性能
优化
的干货,内容比较多可以先收藏了慢慢看。引言:取与舍软件设计开发某种意义上是“取”与“舍”的艺术。关于性能方面,就像建筑设计成...
Qt
专家
、订阅号“程序视界”创建者安晓辉:引导你逐步深入学习C++
作者简介:安晓辉,程序员、技术管理者、作家、职业规划师、在行行家、分答答主,著有《Qt on Android 核心编程》、《Qt Quick核心编程》和《
你好
哇,程序员》,创建订阅号“程序视界”。 C++是一门古老而复杂的语言...
c语言(http://c.biancheng.net/view/1714.html)
1.4 英语和数学不好,能学编程吗? 1.5 进制详解:二进制、八进制和十六进制 1.6 二进制和八进制、十六进制的转换 1.7 数据在内存中的存储(二进制形式存储) 1.8 载入内存,让程序运行起来 1.9 ASCII编码...
【硬刚大数据之学习路线篇】2021年从零到大数据
专家
的学习指南(全面升级版)
JVM JVM 内存结构 堆和栈 Java 内存模型 垃圾回收 JVM 参数及调优 Java 对象模型 虚拟机性能监控与故障处理工具 即时
编译器
、编译
优化
类加载机制 NIO 用户空间以及内核空间 Linux 网络 I/O 模型:阻塞 I/O ...
英特尔边缘计算技术
567
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章