性能请考虑使用英特尔 C++ 编译器专业版,以最大限度地提高性能。内置优化技术和多线程支持能够帮助创建可在最新的多核处理器上获得最佳运行结果的代码。
先进的优化特性使用英特尔 C++ 编译器 Windows 版编译的软件可从先进的优化特性中获益,在此将对一些功能进行简要讲解,如欲了解更为详尽的信息,请参见以下链接:
- 多线程应用程序支持,包括用于简单有效的软件线程技术的 OpenMP 和自动并行处理。
- 自动矢量化功能对代码进行并行处理,以便利用最新处理器的单指令多数据流扩展 (SSE) 指令集体系结构(SSE、SSE2、SSE3、SSSE3 和 SSE4)。
- 高性能并行优化程序 (HPO) 重构并优化循环,以确保自动矢量化功能、OpenMP 或自动并行处理功能最大限度地将处理器的功能用于高速缓存和内存访问、SIMD 指令集以及用于多个内核。这一创新功能(对于版本 10 而言为全新功能)将矢量化功能、并行处理和循环转换组合成一个流程,与以前离散的多个阶段相比,该流程更快、更有效且更可靠。
- 过程间优化 (IPO):对于包含许多常用中、小函数的程序,特别是循环内包含调用的程序,IPO 可以极大地提高应用程序性能。此优化程序的分析功能还可以提供有关漏洞和编码错误(如未初始化的变量或 OpenMP API 问题)的反馈,即使是严格依赖于编译器前端提供的分析的编译器也无法检测到这些错误。
- 档案导引优化 (PGO):通过降低指令缓存快取置换(cache-thrashing)、重组代码布局、缩减代码长度并减少分支预测失误来提高应用程序性能。
- 使用英特尔® 调试器针对已优化代码进行调试对于已针对英特尔® 架构进行优化的代码,能够提升其调试过程的效率。
英特尔 C++ 编译器 Windows 版构建于卓越的基础之上。您可以针对下一代硬件亲自创建下一代软件。以下是自编译器版本 9 以来全新的功能。
| 新增内容 | 益处 |
增强的性能和线程- 新的并行/循环优化程序
- 改进 C++ 中的优化
- 异常处理和类层次结构分析
| 为计算密集的应用程序(如图形/数字媒体、财务建模)提供更出色的应用程序性能,并为线程或非线程应用程序提供高性能计算。全新的高性能并行优化程序 (HPO) 提供了更为强大的功能,用于分析、优化和并行处理更多循环嵌套。
还提高了在 C++ 异常处理、分析和优化 C++ 类层次结构方面的优化性能。
|
安全检查和诊断- 用于缓冲区溢出的静态验证程序
- OpenMP API 验证
| 能够创建更不易受安全漏洞(如缓冲区溢出)影响的代码。不管是初学者还是经验丰富的用户,诊断都能帮助他们捕获常见的代码错误,从未初始化的变量、不匹配的虚拟参数和实际参数,到 OpenMP API 编码问题。
|
| Windows Vista* 和 Visual Studio* .Net* 2005 支持 | 能够开发可在 Microsoft 的最新操作系统和 IDE 版本上运行的应用程序。我们的 Visual Studio 2005 支持现在包括属性页的无缝使用,可以提高与现有 Visual Studio 2005 项目文件的兼容性。
|
| 优化报告 | 对于希望使用我们的高级优化功能以帮助编译器在调试应用程序时可以更好地工作的用户,我们将提供更详细的优化诊断信息。新的 VTune™ 分析器 9.0 版可以筛选优化报告,以帮助引导所需要的优化过程。
|
| 支持未来英特尔处理器实施 SSE4 指令代码生成和优化 | 利用 SIMD 流指令扩展 4 (SSE4) 为众多应用提供扩展的能力、增强的性能以及更高的能效。
|
| 多项支持循环展开、流处理存储和指针失真实现更高级优化的选择 | 提升的应用性能。
|
| 可以为 malloc 选择替代算法 | 改进的内存分配灵活性。
|
支持最新多核处理器
英特尔 C++ 编译器为最新的多核处理器提供优化支持,这些多核处理器包括:
- 英特尔® 酷睿™2 双核处理器
- 英特尔® 酷睿™2 四核处理器
- 四核英特尔® 至强® 5300 系列处理器
- 双核英特尔® 至强® 处理器 3000 系列
- 双核英特尔® 至强® 处理器 5000 系列
- 双核英特尔® 至强® 处理器 7000 系列
- 双核英特尔® 安腾® 2 处理器
| 英特尔® 编译器通过始终为每代处理器提供顶级支持,确保您的投资在未来也能收到回报。对于新硬件平台以惊人速度不断面世的现今社会,这是一个非常关键的优势。
通过对自动并行处理和 OpenMP* 的支持,您可以创建优化的多线程应用程序,这些应用程序会充分利用多核处理特性,从而提供卓越性能。
|
| 专业版 | 不仅包括编译器的高级功能,而且还包括具有高度优化的函数的英特尔线程构建模块、英特尔高性能多媒体函数库和英特尔数学核心函数库(用于线程、数学处理和多媒体)。
|
这一部分针对以上“高级优化特性概述”一节中所说明的特性作进一步详细说明。
多线程应用支持
OpenMP 和自动并行处理能够帮助将串行应用程序转化为并行应用程序,使您能够充分利用多核技术,例如英特尔酷睿双核处理器、双核英特尔安腾 2 处理器以及对称多处理系统:
- OpenMP 是可移植多线程应用开发的行业标准。在细粒度(循环级别)与粗粒度(函数级别)线程技术上具有很高的效率。
对于将串行应用程序转换成并行应用程序,OpenMP 指令是一种容易使用且作用强大的手段,它具有使应用程序因为在多核心与对称多处理器系统上并行执行而获得大幅性能提升的潜力。 - 自动并行使用能自动将循环线程化的自动并行功能,提高多处理器系统上的应用程序性能。此选项会检测能够安全并行执行的循环,然后自动生成多线程代码。
自动并行功能使得用户不必处理迭代分区、数据共享、线程调度及同步等低级别的细节。它还能够提供多处理器系统与支持超线程 (HT) 技术的系统所具有的性能优势。
如欲了解多线程应用支持的更多信息,请访问英特尔的
线程开发人员中心。
高性能并行优化程序 (HPO)
对于版本 10 而言为全新的这一创新功能将自动矢量化功能、自动并行处理功能和循环转换功能组合成一个流程。与以前离散的多个阶段相比,该流程更快、更有效且更可靠。
HPO 优化并重构程序循环,以确保自动并行处理功能、OpenMP 和自动矢量化功能彼此结合在一起平稳地运行。HPO 的优化技术利用独特的成本效益分析,为给定程序和循环结构做出正确的优化决策。它将执行许多转换(如循环展开、剥离、交换、拆分等)和其它优化,以确保充分利用处理器的高速缓存架构、SIMD 指令集和多个内核。这些循环转换是自动执行的,因此无需手动更改代码。
自动矢量器
矢量器可自动对代码进行并行化处理,以便充分利用处理器的潜在能力。这种先进的优化对循环进行分析,并确定何时可以安全有效地利用 MMX™、SSE、SSE2 和 SSE3 指令并行执行几种反复循环。图 1 显示了经过矢量化的循环,它在一次 SSE2 运算中计算了四个迭代。
使用矢量化功能可以优化应用程序代码,在英特尔® 处理器上运行时,可以充分利用这些新的扩展功能。这些特性支持先进动态数据调整策略,包括可以生成平衡负载的循环剥离技术,以及可以匹配整个缓存线预取情况的循环展开技术。
图 1. 运行中的矢量器。 过程间优化(IPO)
对于包含许多常用中、小函数的程序,特别是循环内包含调用的程序,IPO 可以极大地提高应用程序性能。这套可用于英特尔编译器中自动运算的技术无需关注单独的函数,而是利用多文件或整个程序来监测并执行优化。
图 2 中显示的 IPO 流程首先需要使用 IPO 选项对源文件进行编译,创建对象 (.o) 文件,这些文件包含编译器使用的中间语言 (IL)。根据链接,编译器结合所有 IL 信息并对其进行分析,以便实现优化机会。典型的优化作为 IPO 流程的一部分,包括程序内联和重排、删除无用(不能获得)的代码、常数传播或已知常量值的代入。IPO 在程序内级别中支持更强大的优化,因为多程序的更多上下文能够使这些更强大的优化更安全。
IPO 的分析功能还可以提供有关漏洞和编码错误(如未初始化的变量)的反馈,即使是严格依赖于编译器前端提供的分析的编译器也无法检测到这些错误。
档案导引优化 (PGO)
档案导引优化 (PGO) 编译过程使英特尔 C++ 编译器可以更好地利用处理器微体系结构,更有效地使用指令调度与高速缓存,并可以更好地执行分支预测。通过重新组织代码布局以减少指令缓存反复、缩减代码长度并减少分支预测失误,它可以帮助提高应用程序性能。
如图 3 所示,PGO 是一个三阶段的流程。这三个阶段包括:1) 利用增加的工具对应用进行编译,2) 文件生成阶段,在该阶段中执行并监视应用,3) 针对第一阶段中收集的数据加入优化,进行重新编译。下面是几种影响档案导引优化的代码长度说明:
- 基本模块和函数分类——将经常执行的模块和函数放置在一起,便于充分利用指令缓存定位。
- 辅助内联决策——将经常执行的函数进行内联,这样,代码长度的增加就会在性能受到最大影响的区域内发生。
- 辅助矢量化决策——对循环次数较高和经常执行的循环进行矢量化,这样,代码长度的增加就会随着性能的增加而缓解。
使用英特尔® 调试器针对已优化代码进行调试英特尔调试器支持对优化过的代码进行调试(即,对为了在特定的硬件体系结构上取得最佳执行效果而大幅改动过的代码进行调试)。对于优化过的代码进行调试,英特尔编译器产生符合多项标准的调试信息,支持英特尔编译器的所有调试器中均可使用这些信息。英特尔调试器支持多核架构,能够调试多线程应用程序,并提供以下相关的功能:
- 一个全停止/全执行(all-stop/all-go)模式(即,当一个线程停止时,所有线程都停止;一个线程恢复执行时,所有线程都恢复执行)
- 列出创建的所有线程
- 在线程之间交换焦点
- 查看详细的线程状态
- 为所有线程或线程子集设置断点(包括全停止、跟踪和观察变化)并显示堆栈的后备跟踪
- 内置的 GUI 能够提供一个“线程”面板(在当前源窗体中),当创建一个线程时,该面板处于激活状态,并允许操作员选择线程焦点,然后显示出相关的详细信息。最近增强的 GNU 项目调试器(GDB 调试器)也可以用于并行应用。如欲了解更多信息,请参阅英特尔调试器技术白皮书
。
符合标准,广泛兼容
英特尔 C++ 编译器 Windows 版完全符合各项标准,包括通过 OpenMP 提供并行化支持。
它还可以与 Microsoft Visual Studio 2005、Visual Studio .NET 2002/2003 以及 Visual Studio 98 集成,并扩展了对 32 位和 64 位多核英特尔处理器的支持。
英特尔 C++ 编译器符合以下语言标准:
- ANSI/ISO 标准,用于 C 语言编译 (ISO/IEC 9899:1990)
- ANSI/ISO 标准 (ISO/IEC 14882:1998) 用于 C++ 语言
- OpenMP 规范 2.5 版
跨应用领域实现卓越的性能
英特尔 C++ 编译器 Windows 版提供了超越一般的卓越性能、实用性以及商业优势,适用于广泛的软件市场。
 | 下一代数据密集型应用程序开发人员将受益于英特尔编译器的动态性能优化,从而降低延迟和处理时间,而且软件设计人员添加其它功能特性也不会对性能带来太大影响。 |
 | 数字家庭、游戏及娱乐应用程序都可享受英特尔 C++ 编译器提供的完美服务,因为多核平台上的并行处理擅长在后台处理下载、安全保护及其它任务,丝毫不影响用户体验。 |
 | 移动软件能够在移动多核平台的性能中获得巨大优势,如通过基于英特尔酷睿双核处理器的软件来提高性能,同时降低功耗延长电池使用时间。 |
本部分介绍为下述三种不同的硬件平台开发应用程序时的系统要求。
处理器术语
英特尔编译器支持三种平台:处理器和操作系统类型的常见组合。本部分介绍英特尔在其文档、安装过程和支持网站中用于描述平台的术语。
32 位英特尔® 处理器架构 (IA-32)——32 位英特尔® 处理器架构指基于 32 位处理器(通常与英特尔奔腾® II 处理器兼容,例如英特尔® 奔腾® 4 处理器或英特尔® 至强® 处理器)的系统,或指基于其他制造商提供的支持相同指令集的处理器,且运行 32 位操作系统的系统。
Intel® 64 架构——Intel® 64 架构指基于具有 64 位架构扩展的 32 位英特尔® 处理器架构 (IA-32) 的处理器(例如英特尔® 酷睿™2 处理器家族或英特尔® 至强® 处理器),且运行 64 位操作系统(例如 Microsoft Windows XP* Professional x64 版或 Microsoft Windows Vista* x64)的系统。但是,如果系统运行的是 32 位版本的 Windows 操作系统,那么 32 位英特尔® 处理器架构 (IA-32) 适用。面向 Intel® 64 架构应用的英特尔编译器还支持基于 AMD* Athlon64* 和 Opteron* 处理器,且运行 64 位操作系统的系统。
IA-64 架构——指基于英特尔安腾处理器家族且运行 64 位操作系统的系统。
本地和跨平台开发
术语“本地”指构建一个应用程序,该应用程序将在构建其的同一平台上运行,例如,在 IA-32 架构上进行构建,以便在 IA-32 架构上运行。术语“跨平台”或“跨编译”指构建一个应用程序,构建该应用程序的平台与将运行该应用程序的平台的类型不同,例如,在 IA-32 架构上构建,在 IA-64 架构上运行。不是所有的跨平台开发组合都受支持,某些组合可能要求安装可选工具和库。下表说明了支持的编译主机(构建应用程序的系统)和应用程序目标(运行应用程序的系统)组合。
| 主机\目标 | IA-32 架构 | 英特尔 64 架构 | IA-64 架构 |
| IA-32 架构 | 是的 | 是的 | 是的 |
| 英特尔 64 架构 | 是的 | 是的 | 是的 |
| IA-64 架构 | 没有 | 没有 | 是的 |
本节针对各种硬件平台提供应用程序开发的系统要求:
主机硬件要求| 组件 | 最低要求 | 推荐 |
| 处理器
(任意所需处理器) | 以基于 IA-32 架构的处理器(至少为 450 MHz 英特尔® 奔腾® II 处理器或更高速度的处理器)为基础的系统,或基于 AMD Athlon* 或 AMD Opteron 处理器的系统 | - 英特尔® 酷睿™ 处理器家族
- 英特尔® 至强® 处理器
|
| 英特尔® 安腾® 处理器家族 | 无 |
| 以基于英特尔 64 架构的处理器为基础的系统和基于 AMD* Athlon* 或 Opteron* 处理器的系统 | 无 |
| 内存 | | |
| 磁盘空间 | - 300 MB 空闲硬盘空间,外加可用于在安装过程中下载和存储临时文件的 300 MB 硬盘空间
- 100 MB 用于存储虚拟内存页面文件的硬盘空间。确保至少使用操作系统所建议的最低虚拟内存容量。
| 1 GB |
针对基于 IA-32 架构的处理器开发应用程序的主机软件要求| 操作系统 | - Microsoft Windows XP*、Windows Vista 或 Windows Server* 2003。
注:不支持在 Microsoft Windows 98*、Windows 98 SE*、Windows Millennium Edition*、Windows 2000* 和 Windows NT* 上的产品开发。
|
| 其它软件 | - 必须安装以下 Microsoft 开发产品之一:
- Microsoft Visual C++* 6.0
- Microsoft Visual Studio 98
- Microsoft Visual C++ .NET* 2003 标准版或更高版本。
- Microsoft Visual Studio .NET 2003 的任何版本均可,但需安装 Visual C++ 组件。
- Microsoft Visual Studio 2005*,标准版或更高版本,同时装有 Visual C++ 组件
- Microsoft Visual C++ 2005* Express Edition;此版本仅支持使用命令行开发工具,不支持可视开发环境
- 对于在 Windows Vista 上进行的开发,仅支持 Microsoft Visual Studio 2005。这是 Microsoft 的限制。
- 如果使用 Microsoft Visual C++ 2005 Express Edition 版,则需要对使用 Win32 API 的应用安装 Windows Server 2003 R2 Platform SDK(核心 SDK)。还可使用针对 Windows Vista* 的 Windows 软件开发套件更新。
- 不支持将 Microsoft Visual Studio 2005 首选合作伙伴版与英特尔 C++ 编译器共同使用。这是 Microsoft 的限制。
- 只有在安装了上述所需 Microsoft 开发产品之一时,才支持将命令行工具用于构建。只有 Microsoft Platform SDK 是不够的。
|
针对基于英特尔 64 架构的处理器或 AMD Opteron 处理器开发应用程序的主机软件要求| 操作系统 | - Microsoft Windows XP、Windows Vista 或 Windows Server 2003
|
| 其它软件 | - 必须安装以下 Microsoft 开发产品之一:
- 对于完全可视开发环境下的功能,需要安装 Microsoft Visual Studio 2005 标准版或更高版本,并搭配 Visual C++ 和“X64 编译器及工具”组件(Visual studio 2005 标准版无需显式选择 X64 组件)。
- 对于仅使用命令行开发工具的情况,需要安装 Microsoft Windows Server 2003 R2 Platform SDK 或针对 Windows Vista* 的 Windows 软件开发套件更新。下载并运行适用于主机系统(您正用于开发的主机系统)的 SDK。仅需要“核心 SDK”。
- 只有在安装了上述所需 Microsoft 开发产品之一时,才支持将命令行工具用于构建。
- 不支持将 Microsoft Visual Studio 2005 首选合作伙伴版与英特尔 C++ 编译器共同使用。这是 Microsoft 的限制。
|
针对基于 IA-64 架构的处理器开发应用程序的主机软件要求| 操作系统 | - Microsoft Windows XP、Windows Vista 或 Windows Server 2003
|
| 其它软件 | - 必须安装以下 Microsoft 开发产品之一:
- 如果是在基于 IA-32 或英特尔 64 架构的系统上进行开发,则必须安装 Microsoft Visual Studio 2005 Team System 版或更高版本,并安装 Visual C++ 和“安腾编译器和工具”组件。
- 如果是在基于 IA-32 架构的系统上进行开发,则必须安装 Microsoft Visual C++ 6.0 或 Microsoft Visual Studio 98,并按如下所述安装 Microsoft Platform SDK。
- 对于仅使用命令行开发工具的情况,请安装 Microsoft Windows Server 2003 R2 Platform SDK。下载并运行适用于主机系统(您用于开发的主机系统)的 PSDK。仅要求安装“Core SDK”。
- 仅在安装了上述所需 Microsoft 开发产品之一时,才支持将命令行工具用于构建。
- Microsoft Visual Studio 2005 不能安装在基于 IA-64 架构的系统上。
|
运行应用程序的目标系统要求| 基于 IA-32 架构的系统 | 基于 IA-32 架构且运行 Windows XP、Windows Vista 或 Windows Server 2003 的系统。某些应用程序可能在较旧版本的 Windows 上运行,由您负责测试这些应用程序的兼容性。基于 IA-32 架构的应用程序还可以运行在如下所述的基于英特尔 64 架构的系统上。 |
| 基于英特尔 64 架构的系统 | 以基于英特尔 64 架构的处理器或 AMD Opteron 处理器为基础且运行 Windows Server 2003 x64 版、Windows XP Professional x64 版 或 64 位 Windows Vista 版本的系统 |
| 基于 64 位英特尔® 处理器 (IA-64) 架构的系统 | 基于英特尔® 安腾® 处理器家族,且运行 Windows Advanced Server* 或 Windows Server 2003(Enterprise 版和 Datacenter 版)的系统
注:
- 在未安装英特尔 C++ 编译器的系统上运行应用时,可能会要求在目标系统上安装某些可再发行的 DLL。
- 对于利用跨编译方法构建于不同平台上的应用,目标系统上的 Microsoft 运行时 DLL 必须与用于构建该应用的平台 SDK 提供的 DLL 相同或更新。
|
注意:以上并未列出全部处理器型号名称——如果其它处理器型号能够正确支持所列出的指令集,则也可以使用并达到预期效果。如果您对某个处理器型号存在疑问,请与英特尔® 卓越支持联系。
有些优化选项对运行应用的处理器类型有所限制。如欲了解更多信息,请参阅这些选项的相关文档。
高级优化选项或超大型系统可能需要其它资源,如更大的存储器和磁盘空间。
某些文档需要使用 Adobe* Reader* 7.0 或更高版本才能查看。
对于确保运行应用程序的操作系统与处理器均支持应用程序所含全部机器指令,应由应用程序开发人员负责。