先进的优化特性概览使用英特尔 Fortran 编译器 Linux 版编译的软件可从高级优化特性中获益,在此将对一些功能进行简要讲解,如欲了解更为详尽的信息,请参见以下链接:
深入了解高级优化特性本部分内容详细描述了上一部份"高级优化功能概述"中特别强调的功能。
多线程应用程序支持OpenMP 和自动并行能够帮助将串行应用转化为并行应用,使您能够充分利用与英特尔® 酷睿™ 双核处理器和双核英特尔® 安腾® 2 处理器类似的多核技术,以及对称多处理系统:
- OpenMP 是可移植多线程应用程序开发的行业标准。在细粒度(循环级别)与粗粒度(函数级别)线程技术上具有很高的效率。
对于将串行应用程序转换成并行应用程序,OpenMP 指令是一种容易使用且作用强大的手段,它具有使应用程序因为在多核心与对称多处理器系统上并行执行而获得大幅性能提升的潜力。
- 自动并行使用能自动将循环线程化的自动并行功能,提高多处理器系统上的应用程序性能。这个选项会检测能够安全地并行执行的循环,然后自动生成多线程代码。
自动并行功能使得用户不必处理迭代划分、数据共享、线程调度及同步等低级别的细节。它还能够提供多处理器系统与支持"超线程技术"的系统所具有的性能优势。
有关多线程应用支持的更多信息,请访问英特尔的
线程开发人员中心。
过程间优化 (IPO)对于包含许多常用中、小函数的程序,特别是循环内包含调用的程序,过程间优化 (IPO) 可以极大地提高应用程序性能。这套可用于英特尔® 编译器中自动运算的技术无需关注单独的函数,就可以使用多文件或整个程序来检测并执行优化。
图 1. 过程间优化流程
图 1 中描述的 IPO 流程首先需要使用 IPO 选项对源文件进行编译,同时创建包含编译器所使用的中间语言 (IL) 的对象 (.o) 文件。根据链接,编译器结合所有 IL 信息并对其进行分析,以便实现优化。典型的优化作为 IPO 流程的一部分,包括程序内联和重排、删除无用(无法获得)的代码、常数传播或已知常量值的代入。与在程序内部提供的优化相比,IPO 所支持的优化更加先进,因为多个程序具有更多上下文,能够确保这些比较先进的优化更加安全。
档案导引优化 (PGO)
档案导引优化 (PGO) 编译过程使英特尔 Fortran 编译器可以更好地利用处理器微体系结构,更有效地使用指令分页与高速缓存,并可以更好地执行分支预测。通过重新组织代码布局,可以减少指令快取置换、缩减代码长度并降低分支预测失误,从而帮助提高应用程序性能。
PGO 为一个三阶段的流程,如图 2 所示。这三个阶段包括:1) 利用增加的工具对应用进行编译,2) 文件生成阶段,在该阶段中执行并监视应用,3) 针对第一阶段中收集的数据加入优化,进行重新编译。下面是几种影响档案导引优化的代码长度说明:
- 基本程序块和函数排序 - 将频繁执行的程序块和函数放置在一起,便于充分利用指令缓存空间。
- 辅助内联决策 - 将频繁执行的函数进行内联,这样,代码长度的增加就会在性能受到最大影响的区域内发生。
- 辅助矢量化决策 - 对循环次数较高和频繁执行的循环进行矢量化,这样,代码长度虽然增加,却换取了性能提高。
图 2. 档案导引优化
自动矢量器
矢量化会自动对代码进行并行化处理,以便最大限度地利用处理器的潜在能力。这种先进的优化功能对循环进行分析,并确定何时可以安全有效地利用 MMX™、SSE、SSE2 和 SSE3 指令并行地执行几种反复循环。图 3 以图形方式显示矢量化的循环,在一次 SSE2 运算中计算四次迭代。
使用矢量化功能可以优化应用程序代码,在英特尔® 处理器上运行时,可以充分利用这些新的扩展功能。提供的功能包括支持先进的动态数据调整策略,其中有可以生成平衡负载的循环剥离技术,以及可以匹配整个缓存线预取情况的循环展开技术。
图 3. 运行中的矢量器 高级优化 (HLO)数据预取是规避内存访问延迟的一种有效技术,它可以显著提高许多计算密集型应用程序的性能。数据预取在程序中的特定点上为所选数据引用插入预取指令,使引用的数据项在实际使用之前就已尽可能地移近处理器(放入高速缓存)。
循环体展开将两个或更多个循环体迭代合并到一起,以减少循环计数。虽然循环展开通常会导致代码长度增加,但它通常可以减少必须执行的指令数。下面是一个非常简单的循环展开示例,它从循环中删除了一个分支:
使用英特尔® 调试器针对已优化代码进行调试英特尔调试器支持对已优化代码进行调试(即,针对已为在特定硬件体系结构上获得最佳执行效果而大幅改动过的代码进行调试)。对于已优化代码的调试,英特尔编译器生成符合标准的调试信息,所有支持英特尔编译器的调试器均可使用这些信息。通过启用对多线程应用程序进行调试,英特尔调试器支持多核架构,并提供以下相关功能:
- 齐停止/齐执行(all-stop/all-go)模式(即,当一个线程停止时,所有线程都停止;一个线程恢复执行时,所有线程都恢复执行)
- 列出所有已创建的线程
- 在线程之间切换焦点
- 查看详细的线程状态
- 为所有线程或线程子集设置断点(包括全停止、跟踪和观察变化)并显示堆栈的后备跟踪
- 内置的 GUI 中包含一个"线程"面板(位于"当前源"窗格中),创建线程时,系统将激活该面板,使得操作人员能够选择线程焦点,然后显示相关详细信息。
最新增强的 GNU 项目调试器(GDB 调试器)还可以用于并行应用程序。有关其他信息,请参阅
英特尔调试器技术白皮书。
本版新增内容概述通过本版本中的新增功能特性,您几乎不用额外投入精力,就可以获得更好的效果,从而最大程度地利用英特尔® 硬件。此处仅简单介绍每种特性,您可以通过链接了解比较完整的说明:
- 支持最新多核英特尔处理器,例如英特尔酷睿双核处理器和双核安腾® 2 处理器。
此外,本版本还有下列优势:
- 来自 Fortran 2003 标准版的其他特性
- 运行时间未初始化的变量检测
- 对浮点模型快速、精确的控制
深入了解新特性本节详细说明上述新功能。
支持最新多核处理器英特尔 Fortran 编译器 Linux 版针对最新的多核英特尔处理器提供最新的优化支持,此类处理器包括:
- 奔腾 D 处理器
- 奔腾处理器至尊版
- 英特尔酷睿双核处理器
- 双核英特尔安腾 2 处理器 9000 系列
另外,英特尔编译器可以确保投资的未来效益,保证针对日后每一代处理器快速提供全球范围的支持。对于新硬件平台以惊人速度不断面世的现今社会,这是一个非常关键的优势。
由于对自动并行处理和 OpenMP 的支持,您能够创建优化的多线程应用程序,这些应用程序会充分利用多核处理特性,从而提供卓越性能。
符合标准,广泛兼容英特尔 Fortran 编译器 9.1 Linux 版全面支持 Fortran 95 语言标准版以及之前的标准版,如 Fortran 90、Fortran 77 和 Fortran IV。它还包括来自新的 Fortran 2003 语言标准版的众多特性,以及大量流行的语言扩展,其中包括来自 DEC Fortran 的语言扩展。主要支持的语言扩展包括:
- 四重精确 REAL 数据类型 REAL(16)
- 为用户定义的类型构造、记录、合并、映射语法
- 用以增强多语言应用程序开发的指令和函数
- 二进制流 I/O
有关语言特性的完整列表,请参见产品文档。
英特尔 Fortran 编译器 9.1 Linux 版还具备增强程序效率的特性,如:
- 运行时间阵列和字符串限制检测
- 跨文件程序界面检测
- 运行时间未初始化的变量检测
- 使用文件名和行编号进行错误追踪
跨应用领域实现卓越的性能英特尔 Fortran 编译器 Linux 版可提供卓越的性能、实用性及商业优势,适用于广泛的软件市场。
下一代数据密集型应用程序开发人员能够利用英特尔® 编译器在动态的性能优化中受益,从而降低延迟并减少次数,同时还能够在不影响性能的情况下支持软件设计人员添加其他功能。
科学、研究及相关应用程序能够在快速的编译次数、高性能执行以及强大的技术支持中受益。大量密集型软件能够出色利用基于英特尔® 处理器的平台的并行功能。
本页内容讲述开发各种硬件平台上的应用程序时的系统要求:
|
组件 | 最低要求 | 建议配置 |
| 处理器 | - 英特尔奔腾® II 处理器,450MHz 或相同的性能级别
- 采用英特尔® 64 架构技术的处理器
| - 英特尔® 酷睿™ 双核处理器
- 英特尔奔腾 4 处理器
- 英特尔奔腾 D,或
- 英特尔® 至强® 处理器
|
| 内存 | 128MB | 256MB |
| 磁盘空间 | 100 MB的硬盘空间,外加可用于在安装过程下载和存储临时文件的 200 MB 硬盘空间。 | 无 |
| 操作
系统 | 带有 glibc 2.2.4、2.2.5、2.2.93、2.3.2、2.3.3、2.3.4 或 2.3.5 以及 2.4.X 或 2.6.X Linux 内核的 Linux* 系统,如下面的分发版所示。注意:并非所有已列出分发版均已通过验证,且所列出分发版并不代表全部分发版。
- Red Hat Linux 7.3、8 或 9
- Red Hat Enterprise Linux* 2.1、3 或 4
- SUSE LINUX 8.2 或 9.1
- SUSE Linux Enterprise Server* 8 或 9
- Fedora* Core 4
| 无 |
| 其他
软件 | 安装了 Linux 开发人员工具组件,包括 gcc、g++ 和相关工具 | 无 |
|
组件 | 最低要求 | 建议配置 |
处理器 | 采用英特尔® 64 架构技术的英特尔® 处理器 | 采用英特尔® 64 架构的英特尔处理器 |
| 内存 | 256MB | 512MB |
| 磁盘空间 | 300 MB 可用硬盘空间,外加可用于在安装过程中下载和存储临时文件的 300 MB 硬盘空间。
100 MB 硬盘空间,用于存储虚拟内存页面文件。必须至少使用已安装的 Linux 分发版所建议的最低虚拟内存数 | 无 |
| 操作
系统 | 以 64 位模式运行的、带有 glibc 2.2.93、2.3.2、2.3.3、2.3.4 或 2.3.5 与 2.4.X 或 2.6.X Linux 内核的 Linux 系统,如下面的 Linux 分发版所显示。注意:并非所有已列出分发版均已通过验证,且所列出分发版并不代表全部分发版。
- Red Hat Enterprise Linux 3 或 4
- SUSE LINUX 9.1 Professional
- SUSE Linux Enterprise Server* 9
- Fedora* Core 4
| 无 |
| 其他
软件 | - 安装了 Linux 开发人员工具组件,包括 gcc 3.3.3、g++ 和相关工具
- 32 位 (IA-32) C 和 Fortran 运行时库:
- libm.so.6
- libpthread.so.0
- libc.so.6
- libstdc++.so.5
- libgcc_s.so.1
注意:之所以要求 32 位 (IA-32) 库,是由于编译器以及其他工具是 32 位应用程序,且它们需要动态链接这些库。
| 无 |
|
组件 | 最低要求 | 建议配置 |
| 处理器 | 安腾® 2 处理器 | 无 |
| 内存 | 512MB | 1GB |
| 磁盘空间 | 150 MB的硬盘空间,外加可用于在安装过程下载和存储临时文件的 200 MB 硬盘空间。 | 无 |
| 操作
系统 | 带有 glibc 2.2.4、2.2.93、2.3.2、2.3.3 或 2.3.4 以及 2.4.X 或 2.6.X Linux 内核的 Linux* 系统,如下面的分发版所显示。 注意: 并非所有已列出分发版均已通过验证,且所列出分发版并不代表全部分发版。
- Red Hat Linux 7.2
- Red Hat Enterprise Linux AS 2.1、3 或 4
- SUSE LINUX 9.1 Professional
- SUSE Linux Enterprise Server* 8 或 9
- United Linux 1.0
安装了 Linux 开发人员工具组件,包括 gcc、g++ 和相关工具。
| 无 |
| 其他
软件 | 安装了 Linux 开发人员工具组件,包括 gcc、g++ 和相关工具。 | 我们建议使用 binutils 2.14 或更高版本,尤其如果使用共享库时,因为已知 binutils 2.11 使用共享库时存在问题 |
注意:可以使用高级优化编译非常大的源文件(几千行),包括
-O3、-ipo 和 -openmp,他们实际上可能需要更大的 RAM。
以上并未列出全部处理器型号名称;如果其他处理器型号能够正确支持所列出的指令集,则也可以使用并达到预期效果。如果您对特定处理器型号有任何疑问,请与"英特尔® 首要支持"联系。有些优化选项对运行应用程序的处理器类型有限制。要了解更多信息,请参阅这些选项的文档。