分析工具和编译器帮助开发人员释放全部硬件性能

上传人:油条 文档编号:1722845 上传时间:2017-07-11 格式:PDF 页数:51 大小:2.63MB
返回 下载 相关 举报
分析工具和编译器帮助开发人员释放全部硬件性能_第1页
第1页 / 共51页
分析工具和编译器帮助开发人员释放全部硬件性能_第2页
第2页 / 共51页
分析工具和编译器帮助开发人员释放全部硬件性能_第3页
第3页 / 共51页
分析工具和编译器帮助开发人员释放全部硬件性能_第4页
第4页 / 共51页
分析工具和编译器帮助开发人员释放全部硬件性能_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《分析工具和编译器帮助开发人员释放全部硬件性能》由会员分享,可在线阅读,更多相关《分析工具和编译器帮助开发人员释放全部硬件性能(51页珍藏版)》请在金锄头文库上搜索。

1、芯动 , 行动 , 共创未来 !分析工具和编译器帮助开发人员释放全部硬件潜能Wang Yang 英特尔公司技术咨询工程师SFTS0052议程 用于分析和优化的英特尔 软件工具 使用英特尔 C+ 编译器进行构建和优化 使用英特尔 VTune 放大器执行性能分析 使用英特尔 Energy Profiler 执行功耗分析 总结3议程 用于分析和优化的英特尔 软件工具 使用英特尔 C+ 编译器进行构建和优化 使用英特尔 VTune 放大器执行性能分析 使用英特尔 Energy Profiler 执行功耗分析 总结4英特尔 System Studio集成式软件工具套件可提供深入的系统洞察,帮助: 加快产

2、品上市 增强系统可靠性 提高电源效率和性能调试器系统 应用分析器功耗和性能 内存和线程编译器和函数库C/C+ 编译器信号 、 媒体 、 数据和数学处理JTAG 接口 1嵌入式或移动系统运行 Windows*、 Linux*、 Wind River Linux、 Android*、 Tizen* 或Wind River VxWorks* 的系统和应用代码英特尔 Quark 处理器1 可选5目标操作系统支持 :Linux* 1, 5 Android* 5 Windows* VxWorks*类别 组件 Composer Edition Professional Edition Ultimate Ed

3、ition Composer Edition Professional Edition Ultimate Edition Composer Edition Professional Edition Composer Edition主机操作系统: Linux, Windows Linux, Windows Windows Linux,Windows集成开发环境 Eclipse*, Wind River*Workbench Eclipse Visual Studio* Wind River Workbench编译器和函数库英特尔 C+ 编译器 2英特尔 高性能多媒体函数库 2英特尔 数学核心函数库

4、 英特尔 线程构建模块 应用调试器 英特尔增强的 GDB*应用调试器 分析器面向系统的英特尔 VTune 放大器 英特尔 Energy Profiler 系统分析器 帧分析器 4 平台分析器 4 面向系统的英特尔 Inspector 系统调试器 英特尔 系统调试器 (JTAG) 3 英特尔 System Studio 2015 组件1 Linux、嵌入式 Linux、 Wind River Linux、 Yocto Project*、 Tizen*2 随 Wind River VxWorks 平台交付3 通过英特尔 ITP-XDP3 probe、 OpenOCD*、 Macraigor* us

5、b2demon* 以及面向 UEFI* 的EDKII*4 仅支持 Windows 主机5 在一个产品中支持 Linux 和 Android 目标6议程 用于分析和优化的英特尔 软件工具 使用英特尔 C+ 编译器进行构建和优化 使用英特尔 VTune 放大器执行性能分析 使用英特尔 Energy Profiler 执行功耗分析 总结7为何使用英特尔 C+ 编译器? 多操作系统和交叉编译支持- 主机操作系统: Windows*、 Linux*- 目标操作系统: Windows、 Linux、 Wind River* Linux、 Yocto* Project、 Tizen*、 Android*等。

6、 针对不同的目标集成主要 IDE (集成开发环境)- Linux 上集成 Eclipse*- Wind River Linux Workbench 集成- Android 原生开发套件 (NDK) 集成- Windows Visual Studio* 集成 无源代码级变更,以加快速度并简化操作- 只需重新编译即可快速获得投资回报! 源代码和二进制兼容性- 兼容 GNU 编译器- 可根据需要搭配使用文件兼容性8为何使用英特尔 C+ 编译器? 支持并行化的大量工具 矢量并行化- 隐式矢量化- 矢量声明(英特尔 Cilk Plus)- 低级 SIMD(编译指示、内联函数) 任务并行化- 语言扩展(英

7、特尔 Cilk Plus)- 线程构建模块- GAP 让编译器帮助您重组代码,以获得更多优化机遇 多线程性能库 英特尔 数学核心函数库、英特尔 高性能多媒体函数库并行化9为何使用英特尔 C+ 编译器?支持最新的英特尔 架构 (IA) 特性: 面向最新 IA 处理器的最新指令:- 英特尔 SIMD 流指令扩展 2(英特尔 SSE2)- 英特尔 高级矢量扩展指令集(英特尔 AVX)- 英特尔 高级矢量扩展指令集 2(英特尔 AVX2) 针对最新的微架构调试代码生成 高级优化特性 高度优化的函数库- 编译器函数库 libirc、 libimf、 libsvml 等。- 英特尔 数学核心函数库(英特尔

8、 MKL) 数学函数 BLAS、 FFT、 LAPACK 等。- 英特尔 高性能多媒体函数库(英特尔 IPP) 压缩、视频编码、图像处理等。 好的优化报告有助于性能调试性能10过程间优化 (IPO)跨文件界限扩展优化编译和优化编译和优化编译和优化编译和优化file1.cfile2.cfile3.cfile4.c未采用 IPO编译和优化file1.cfile4.c file2.cfile3.c采用 IPO-ip 仅 在一个源文件的模块之间-ipo 多文件模块 /整个应用11档案导引优化 (PGO) 静态分析会给优化器带来许多问题,例如:- x y 的频率- 计数的大小是多少- 接触的代码有哪些,

9、以及频率 使用 运行时反馈指导最 终优化 把执行时间改成运行时吧 通过 PGO 增强:- 更准确的分支预测- 基本块移动提升指令高速缓存行为- 更好的内联函数决策(有助于 IPO)- 能够优化函数排序- 开关语句优化- 更好的矢量化决策if (x y) do_this();elsedo that();for(i=0; ir + b2-r;if (b1-pos - b2-pos).magnitudeSquared() v - b2-v;Vec3f displacement = b1-pos - b2-pos;return netVelocity.dot(displacement) lea -0x

10、4(%esp),%espmov %esi,(%esp)call 1700 C+ 语义需要创建 (b1-pos b2-pos) 的结果 通过编译器生成的函数调用 _ZNK5Vec3fmiERKS_以非优化的方式提高内存流量、高速缓存块访问27通过内联生成的代码bool testBallBallCollision(Ball* b1, Ball* b2) /Check whether the balls are close enoughfloat r = b1-r + b2-r;if (b1-pos - b2-pos).magnitudeSquared() v - b2-v;Vec3f displa

11、cement = b1-pos - b2-pos;return netVelocity.dot(displacement) 0; elsereturn false;mov 0xc(%ebp),%edxmovss 0xc(%eax),%xmm6movss 0x10(%eax),%xmm0movss 0x14(%eax),%xmm1movss 0x18(%eax),%xmm4subss 0xc(%edx),%xmm6subss 0x10(%edx),%xmm0subss 0x14(%edx),%xmm1addss 0x18(%edx),%xmm4movaps %xmm6,%xmm5movaps %

12、xmm0,%xmm2mulss %xmm6,%xmm5movaps %xmm1,%xmm3mulss %xmm0,%xmm2mulss %xmm1,%xmm3mulss %xmm4,%xmm4addss %xmm2,%xmm5addss %xmm3,%xmm5内联可帮助其他编译器优化,例如 CSE、消除无效代码( deadcode)以及复制传播使用较少指令即可造成显著影响的代码28分析方面需要回答的问题 代码中最耗时间的地方在哪里? 应用的线程特性如何? 多核平台中的应用是否能够高效利用内核?29一个简单示例public void showValue(View v) int i, j, sum

13、=0;for (i=0;i10000;i+)for (j=0;j10000;j+)sum+=i;TextView tv = (TextView)findViewById(R.id.textView2);tv.setText(String.valueOf(sum);public void clearValue(View v) TextView tv = (TextView)findViewById(R.id.textView2);tv.setText(); textview230Java* 应用分析所有计算在同一线程提供了执行方面的完整视图31函数执行的内核映射大部分使用内核 1确定是否充分利用

14、了内核32确定一个时间区域的活动核心4/7/2015分布不同的逻辑处理器内核在不同的时间点可能处于活跃状态33议程 用于分析和优化的英特尔 软件工具 使用英特尔 C+ 编译器进行构建和优化 使用英特尔 VTune 放大器执行性能分析 使用英特尔 Energy Profiler 执行功耗分析 总结34影响电池续航时间的因素 唤醒次数- 尽量减少 闲置与活动( C 状态)- 最大程度地驻留在最高 c 状态 P 状态驻留- 最大程度地驻留在最低 p 状态 唤醒锁- 最大程度减少使用- 缩短周期确保这些因素能够节约能源35驱动程序示例: 定时器回调void my_timer_callback( uns

15、igned long data )int i,j,ret;for (i=0;i10000;i+)for (j=0;j10000;j+)sum=sum+i;printk( my_timer_callback called (%ld).%dn, jiffies, sum );/ setup the timer again to fire 500msif (count 50) setup_timer( &my_timer, my_timer_callback, 0 );ret = mod_timer( &my_timer, jiffies + msecs_to_jiffies(500) );if (ret) printk(Error in my_timer_callbackn);count+;繁忙的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号