
英特尔® C++ 编译器专业版可为创建多线程应用程序提供最好的支持。只有专业版才能提供广泛的高级优化、多线程和处理器支持,其中包括处理器自动调度、矢量化功能、自动并行处理、OpenMP*、数据预取和循环展开,以及用于并行处理、数学处理和多媒体库的高度优化的 C++ 模板。
专业版将高性能编译器(现已提供对 Debian* 和 Ubuntu* 的支持)与
英特尔® 线程构建模块(英特尔® TBB)、
英特尔® 高性能多媒体函数库(英特尔® IPP)以及
英特尔® 数学核心函数库(英特尔® MKL)组合在一起。虽然这些库是单独提供的,但专业版为构建成本低廉、功能强大的高性能并行代码打下了坚实的基础。
全新登场!——英特尔编译器套件 Linux 专业版。此套件不仅具有英特尔® C++ 编译器专业版的所有功能,还包括英特尔® Visual Fortran 编译器 Linux 版,从而以低廉的成本为用户提供更加完整的解决方案。
了解更多信息
标准版编译器与专业版编辑器具有相同的性能和功能,但标准版编译器不提供多线程库。
请参阅此版本中的全新特性列表。用于英特尔 C++ 编译器 Linux 版的集群 OpenMP* 还提供了一种简单方法,可以将 OpenMP 并行扩展至以 64 位英特尔® 架构为基础的集群。
产品简介 
[PDF 684 KB]
性能请考虑使用英特尔 C++ 编译器专业版,以最大限度地提高性能。内置优化技术和多线程支持能够帮助创建可在最新的多核处理器上获得最佳运行结果的代码。
先进的优化特性使用英特尔 C++ 编译器 Linux 版编译的软件可从先进的优化特性中获益,在此将对一些功能进行简要讲解,如欲了解更为详尽的信息,请参见以下链接:
- 多线程应用程序支持,包括用于简单有效的软件线程技术的 OpenMP 和自动并行处理。
- 自动矢量化功能对代码进行并行处理,以便利用最新处理器的单指令多数据流扩展 (SSE) 指令集体系结构(SSE、SSE2、SSE3、SSSE3 和 SSE4)。
- 高性能并行优化程序 (HPO) 重构并优化循环,以确保自动矢量化功能、OpenMP 或自动并行处理功能最大限度地将处理器的功能用于高速缓存和内存访问、SIMD 指令集以及用于多个内核。这一创新功能(对于版本10 而言为全新功能)将矢量化功能、并行处理和循环转换组合成一个流程,与以前离散的多个阶段相比,该流程更快、更有效且更可靠。
- 过程间优化 (IPO):对于包含许多常用中、小函数的程序,特别是循环内包含调用的程序,IPO 可以极大地提高应用程序性能。此优化程序的分析功能还可以提供有关漏洞和编码错误(如未初始化的变量或 OpenMP API 问题)的反馈,即使是严格依赖于编译器前端提供的分析的编译器也无法检测到这些错误。
- 档案导引优化 (PGO):通过降低指令缓存快取置换(cache-thrashing)、重组代码布局、缩减代码长度并减少分支预测失误来提高应用程序性能。
- 使用英特尔® 调试器针对已优化代码进行调试对于已针对英特尔® 架构进行优化的代码,能够提升其调试过程的效率。
Eclipse* IDE 集成除提供命令行外,还为在英特尔® 安腾® 处理器上运行的 Linux 提供 Eclipse 集成。
- 英特尔 C++ 编译器 Linux 版附带一份功能强大且广泛使用的 Eclipse 开源 IDE。
- 可以在 Eclipse 内部调用编译器,也可以通过使用命令行接口调用编译器。
- Eclipse 集成将英特尔 C++ 编译器 Linux 版与您可能已使用的其它工具(如 make、Emacs 和 gdb)结合使用。
英特尔 C++ 编译器 Linux 版构建于卓越的基础之上。您可以针对下一代硬件亲自创建下一代软件。以下为自编译器版本 9 以来全新的功能。
| 新增内容 | 益处 |
| 面向 Debian* 和 Ubuntu* 等其它 Linux 发行版的支持 | 通过支持其它 Linux 发行版拓宽目标市场。
|
增强的性能和线程- 新的并行/循环优化程序 (HPO)
- 改进 C++ 中的优化
- 异常处理和类层次结构分析
|
为计算密集的应用程序(如图形/数字媒体、财务建模)提供更出色的应用程序性能,并为线程或非线程应用程序提供高性能计算。全新的高性能并行优化程序 (HPO) 提供了更为强大的功能,用于分析、优化和并行处理更多循环嵌套。
还提高了在 C++ 异常处理、分析和优化 C++ 类层次结构方面的优化性能。
|
安全检查和诊断- GNU Mudflap
- 用于缓冲区溢出的静态验证程序
- OpenMP* API 验证
|
能够创建更不易受安全漏洞(如缓冲区溢出)影响的代码。不管是初学者还是经验丰富的用户,诊断都能帮助他们捕获常见的代码错误,从未初始化的变量、不匹配的虚拟参数和实际参数,到 OpenMP API 编码问题。
|
| 优化报告 |
对于希望使用我们的高级优化功能以帮助编译器在调试应用程序时可以更好地工作的用户,我们将提供更详细的优化诊断信息。新的 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 调试器)还可以用于并行应用程序。如欲了解更多信息,请参阅
英特尔调试器技术白皮书 
[PDF 211 KB]。
符合标准,广泛兼容
英特尔 C++ 编译器 9.1 Linux 版完全符合标准。它还提供升级的 C++ 英特尔编译器 IDE 集成,可以同 Linux 上的 Eclipse 3.1 和 CDT 3.0 集成,并支持安腾® 2 处理器(包括双核英特尔安腾 2 处理器)。
跨应用领域实现卓越的性能
英特尔 C++ 编译器 Linux 版提供了超越一般的卓越性能、实用性以及商业优势,适用于广泛的软件市场。
 | 下一代数据密集型应用程序开发人员将受益于英特尔编译器的动态性能优化,从而降低延迟和处理时间,而且软件设计人员添加其它功能特性也不会对性能带来太大影响。 |
 | 数字家庭、游戏及娱乐应用程序都可享受英特尔 C++ 编译器提供的完美服务,因为多核平台上的并行处理擅长在后台处理下载、安全保护及其它任务,丝毫不影响用户体验。 |
 | 移动软件能够在移动多核平台的性能中获得巨大优势,如通过基于英特尔酷睿双核处理器的软件来提高性能,同时降低功耗延长电池使用时间。 |
本部分介绍为下述三种不同的硬件平台开发应用程序时的系统要求。
处理器术语
英特尔编译器支持三种平台:处理器和操作系统类型的常见组合。本部分介绍英特尔在其文档、安装过程和支持网站中用于描述平台的术语。
IA-32 架构——IA-32 架构指基于以下处理器且运行 32 位操作系统(“Linux x86”)的系统:至少支持奔腾® II 指令集的 32 位处理器(例如,基于英特尔® 酷睿™ 架构的处理器或英特尔® 至强® 处理器),或其他制造商提供的支持相同指令集的处理器。
英特尔® 64 架构——英特尔 64 架构指基于此类 IA-32 架构且运行 64 位操作系统 (“Linux x86_64”) 的系统:IA-32 架构基于具有 64 位架构扩展的处理器(例如,英特尔® 酷睿™2 处理器家族或英特尔至强处理器)。但是,如果系统运行的是 32 位版本的 Linux 操作系统,则适用于 IA-32 架构。针对基于英特尔 64 架构的应用程序的英特尔编译器还支持基于 AMD Athlon64* 和 Opteron* 处理器并运行 64 位操作系统的系统。
IA-64 架构——指基于英特尔安腾 2 处理器且运行 64 位操作系统的系统。
本地和跨平台开发
术语“本地”指构建一个应用程序,该应用程序将在构建其的同一平台上运行,例如,在 IA-32 架构上进行构建,以便在 IA-32 架构上运行。术语“跨平台”或“跨编译”指构建一个应用程序,构建该应用程序的平台与将运行该应用程序的平台的类型不同,例如,在 IA-32 架构上构建,在 IA-64 架构上运行。不是所有的跨平台开发组合都受支持,某些组合可能要求安装可选工具和库。
以下列表说明了支持的编译主机(构建应用程序的系统)和应用程序目标(运行应用程序的系统)组合。
- IA-32 架构主机——支持的目标:IA-32 架构
- 英特尔 64 架构主机——支持的目标:IA-32 和英特尔 64 架构
- IA-64 架构主机——支持的目标:IA-64 架构
注意:在目标不同于主机的情况下进行开发时,可能需要从 Linux 版本安装可选的库组件。
注意:英特尔编译器 Linux 版的集群 OpenMP 是一项单独许可的特性,其系统要求不同于编译器的系统要求。有关详细信息,请参阅产品网站。
基于 IA-32 架构的应用程序开发要求|
| 组件 | 最低要求 | 推荐 |
| 处理器 |
以基于 IA-32 架构的处理器(主频至少为 450 MHz,英特尔® 奔腾® 2 处理器或更高)、基于英特尔 64 架构的处理器为基础的系统,或基于 AMD Athlon* 或 AMD Opteron 处理器的系统
| |
| 内存 | 512 MB | 1 GB |
| 磁盘空间 | 100 MB 的硬盘空间,外加可用于在安装过程下载和存储临时文件的 200 MB 硬盘空间 | 无 |
| 操作系统 | 下列 Linux 发行版之一(这是已经过英特尔测试的发行版列表;其它发行版也可/不可使用,因此并不推荐——如有任何疑问,请联系英特尔® 卓越支持):
- Asianux* 3.0
- Debian* 4.0
- Fedora* 7
- Red Hat Enterprise Linux* 3、4 和 5
- SUSE LINUX Enterprise Server* 9 或 10
- TurboLinux* 11
- Ubuntu* 7.0.4
| 无 |
| 其它软件 | 安装的 Linux 开发人员工具组件,包括 gcc 3.2.3、3.3、3.4、4.1 或 4.11、g++ 和相关工具。
提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++
| 无 |
针对支持英特尔 64 架构的处理器或针对 AMD Opteron 处理器的应用程序开发要求| 组件 | 最低要求 | 推荐 |
| 处理器 | 基于 Intel® 64 架构的处理器或 AMD Opteron 处理器的系统。 | 英特尔® 酷睿™2 处理器
英特尔® 至强® 处理器
|
| 内存 | 512 MB | 1 GB |
| 磁盘空间 |
300 MB 可用硬盘空间,并且在安装过程中,还需要额外的 300 MB 空间用于下载和存储临时文件。
100 MB 硬盘空间,用于存储虚拟内存页面文件。必须至少使用已安装的 Linux 版本所建议的最低虚拟内存数
| 无 |
| 操作系统 | 下列 Linux 发行版之一(这是已经过英特尔测试的发行版列表;其它发行版也可/不可使用,因此并不推荐——如有任何疑问,请联系英特尔® 卓越支持):
- Asianux* 3.0
- Debian* 4.0
- Fedora* 7
- Red Hat Enterprise Linux* 3、4 和 5
- SGI* ProPack* 5
- SUSE Linux Enterprise Server* 9 和 10
- TurboLinux* 11
- Ubuntu* 7.0.4
| 无 |
| 其它软件 |
安装的 Linux 开发人员工具组件,包括 gcc 3.2.3、3.3、3.4、4.1、或 4.11、g++ 和相关工具。
提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++
| 无 |
基于 IA-64 架构的应用程序开发要求| 组件 | 最低要求 | 推荐 |
| 处理器 | 基于一个安腾® 2 处理器的系统 | 无 |
| 内存 | 512 MB | 1 GB |
| 磁盘空间 | 150 MB 的硬盘空间,外加可用于在安装过程下载和存储临时文件的 200 MB 硬盘空间 | 无 |
| 操作系统 | 下列 Linux 发行版之一(这是已经过英特尔测试的发行版列表;其它发行版也可/不可使用,因此并不推荐——如有任何疑问,请联系英特尔® 卓越支持):
- Asianux* 3.0
- Debian* 4.0
- Red Hat Enterprise Linux* 3、4 和 5
- SUSE Linux Enterprise Server* 9 和 10
- TurboLinux* 11
| 无 |
| 其它软件 | 安装的 Linux 开发人员工具组件,包括 gcc 3.2.3、3.3、3.4、4.1 或 4.11、g++ 和相关工具。
提供 libstdc++.so.5 的 Linux 组件 compat-libstdc++
| 我们建议使用 binutils 2.14 或更高版本,尤其如果使用共享库时,因为已知 binutils 2.11 使用共享库时存在问题。 |
gcc 版本说明
英特尔编译器已经过多种不同的 Linux 发行版以及不同的 gcc 版本的测试。某些 Linux 发行版包含的头文件与我们已测试的 Linux 发行版中的头文件可能有所不同,从而可能会导致问题的出现。因此,您所使用的 glibc 版本必须与所使用的 gcc 版本一致。
注意:
以上并未列出全部处理器型号名称——如果其它处理器型号能够正确支持所列出的指令集,则也可以使用并达到预期效果。如果您对某个处理器型号存在疑问,请与英特尔® 卓越支持联系。
有些优化选项对运行应用的处理器类型有所限制。如欲了解更多信息,请参阅这些选项的相关文档。
使用诸如 -O3、-ipo 和 -openmp 等高级优化功能编译超大源文件(数千行代码)时,可能需要相当大的内存。
Eclipse* 的其它系统要求
- 在 Red Hat Enterprise Linux AS 2.1 上使用 Eclipse* 集成开发环境需要满足以下附加要求:
- Red Hat AS 2.1 Update 6
- Mozilla* 1.4 Xft 或更高版本,或者 Firefox* 1.0
- 对于使用 GTK* 窗口系统的用户:应安装 2.2.1 版的 GTK+ 小部件工具套件以及相关库(Glib 和 Pango)。
- 在 Turbo Linux 10 和 Red Hat 9.0 系统上,随英特尔 Eclipse 支持提供的 BEA* JRockit* JRE 可能无法正常工作,出现异常中止。在这些系统上,可使用另一种标准 JRE 代替。
- 在面向 32 位英特尔® 处理器架构系统的 SuSE Linux Enterprise Server 8 上,Eclipse 集成开发环境支持在与 GTK* 窗口系统共同使用时,无法正常工作。Eclipse 支持需要高于此操作系统默认安装的 GTK 版本(2.2.1 版)。请注意,将系统升级到 GTK 2.2.1 版非常重要。
- Eclipse 集成开发环境中的完整全功能浏览器支持需要安装以下浏览器之一:
- Mozilla 1.4 Xft 或更高版本或者 Firefox 1.0
如果系统的默认情况下未安装这些浏览器,或由于其它原因而无法使用这些浏览器(例如在 SGI Propack 4 系统上),您可在 Eclipse 集成开发环境中使用备用浏览器,例如 Konqueror。在 Eclipse 中,将该浏览器设置为需要使用的浏览器,方法是选择 Windows->Preferences->General->Web Browser,并将该浏览器作为外部 Web 浏览器输入。请注意,在 Eclipse 中,不能将此类浏览器指定为内部 Web 浏览器,因而在此配置下不支持内部 Web 浏览。