IBM XL C/C++ for AIX and Linux V12.1 中的新功能

了解 XL C/C++ V12.1 中的新功能和增强功能,包括使用户在迁移到 IBM Power Systems 时能够轻松移植代码的语言功能支持,以及在通用优化级别上改进的编译时间。本文适用于对以前的 XL C/C++ 版本拥有一定使用经验的人。

Melanie Steckham, 咨询信息开发人员, IBM

Melanie Steckham 是 IBM 加拿大实验室 XL 编译器团队的一名咨询信息开发人员。她在编写 IBM 软件文档方面拥有超过 25 年的丰富经验。



Kelvin Li, 咨询软件开发人员, IBM

Kelvin Li 是 IBM 加拿大实验室 XL 编译器团队的一名咨询软件开发人员。他在开发 Fortran 和 C 前端方面拥有超过 15 年的丰富经验。他是 OpenMP ARB 和语言委员会中的 IBM 代表。



2012 年 7 月 02 日

下载 XL C/C++ for IBM AIX 试用版  |  XL C/C++ for Linux 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

XL C/C++ 是一种用于 IBM® AIX® 和 Linux 平台的通用编程语言编译器,是为工具供应商和在 IBM® Power Systems® 上开发和部署应用程序的企业业务应用程序开发人员量身订造的。V12.1 中引入的增强提高了开发人员生产力和应用程序性能。XL C/C++ 将继续提供了以下优势:

  • 遵从最新的国际编程语言标准,轻松迁移应用程序
  • 全面支持 OpenMP V3.1 API 规范,简化并行编程实践
  • 提供更快的编译速度,这对于大型应用程序尤为明显
  • 通过新选项、指令和函数简化编程任务

V12.1 中引入的增强提高了开发人员生产力和应用程序性能。

本文将介绍 XL C/C++ for AIX and XL C/C++ for Linux V12.1 中的新功能和增强。本文不打算深入介绍每个方面,而是仅介绍 XL C/C++ V12.1 中的一些新区域,首先介绍为支持语言标准而进行的增强,然后介绍并行编程、调试优化的代码和性能。


语言标准增强

在 XL C/C++ V12.1 中,仍然可以开发和实现最新的 C++ 语言标准 ISO/IEC 14882:2011(也称为 C++11)的功能。

  • 显式的转换操作符功能可用于阻止意外地应用隐式转换,进而支持您编写包含更少的歧义性错误的更健壮的类。
  • 一般化的常量表达式功能扩展了允许在编译时而不是运行时计算的常量表达式,从而提升了性能。
  • 引用折叠功能允许您使用 decltype 区分符、typedef 名称或一个模板类型参数来建立对某种引用类型的引用。此功能方便了泛型和模板编程。
  • rvalue 引用功能允许您重用过期对象的资源。因此,您可以改进库的性能,尤其在使用具有 class 类型的泛型代码时,比如模板数据结构。此外,在编写前置函数时可以考虑值类别。
  • 范围枚举功能现在支持您声明一个范围枚举、一个未提供枚举器的枚举、一种枚举类型和改进的类型安全性。此功能通过提供更高的类型安全性,改进了库的构建和安全性。它还通过引入前置枚举声明,改善了编译时间并减少了依赖性。
  • 在声明函数模板或类模板的成员函数时,如果它们的返回类型依赖于函数参数、函数或具有复杂返回类型的类的成员函数,以及完美的前置函数,那么后置返回类型功能就会很有用。此功能改善了编写复杂且可能引入代码混乱的函数返回类型的过程的清晰度。
  • –qlanglvl=extended0x 选项可用于启用大部分 C++ 功能和 XL C/C++ V12.1 中当前支持的所有 C++11 功能。

XL C/C++ V12.1 还实现了最新的 C 语言标准 ISO/IEC 9899:2011(也称为 C11)的多阶段实现。此版本中支持以下 C11 功能。

  • 匿名结构允许其中的所有成员表现出好像它们是父结构的成员,以简化分组和嵌套。
  • 复杂类型的初始化支持无穷大或虚数部分中的 NaN。这提供了一种可移植的方式来使用值范围初始化复杂类型。
  • _Noreturn 函数区分符很容易知道函数不会返回到调用方,这使您能够生成更高性能的代码。
  • 可以通过声明静态断言来检查重要的程序变体。这允许库在编译时检测和诊断常用的错误。
  • 可以使用 –qlanglvl=extc1x 选项启用 XL C/C++ V12.1 中的 C11 功能。

并行编程增强

OpenMP API 是一种可移植、可扩展的编程模型,为程序员提供了一种简单、灵活的标准接口,可为各种平台(从桌面到超级计算机)开发并行应用程序。XL C/C++ V12.1 提供了对 OpenMP V3.1 的全面支持,包含以下功能:

  • 最终且可合并的任务可在紧缩计算规模场景中提供进一步的优化机会。
  • taskyield 结构使用户能够全面控制某个线程可在何处从一个任务切换到另一个任务。
  • 通过 OMP_PROC_BIND 环境变量可以实现更好的线程亲和性控制,这意味着您可利用机器架构的某些特征。
  • 通过 OMP_NUM_THREADS 环境变量更详细地控制嵌套并行性中使用的线程数量,使您可以表明一个团队中使用了多少个线程。
  • 原子结构扩展(读、写和捕获)包含更多类型的原子操作,以便实现更好同步的并行代码。

诊断报告增强

诊断报告可帮助您识别提高代码性能的机会。在此版本中,对这些报告进行了以下增强:

  • 编译器报告能够同时以 HTML 和 XML 格式突出显示编译器可以执行的优化,以及哪些优化机会已经错过了但现在仍然可用。现在已经可以显示 HTML 格式的编译器报告。这些报告提供了可帮助减少调节应用程序中的编程工作的信息。
  • 清单文件中添加了新章节,可帮助您分析程序,包括相关数据、缺失数据和过期的探查数据。
  • 增强了 showpdf 实用程序,以显示一个缓存缺失和值探查信息视图。这个探查信息视图可帮助程序员识别可能的性能瓶颈,从而提高应用程序效率。

编译时性能和可伸缩性改进

XL C/C++ V12.1 提供了更快的编译速度,这对于大型应用程序尤为明显。此外,通过减少编译器需要的内存量,比如用于指针分析和别名计算的内存,提高了机器资源的使用率。头文件(它们会在应用程序中反复使用)缓存在编译器中,以加速编译时的总体处理速度。编译器和优化器使用了 64 位进程更好的可寻址性,因此能够优化更多的程序。


实用性增强

选项、指令和函数继续简化了编程任务,从而缩短了编程时间并减少了风险。

在此版本中,一个包含多个线程的程序可使用 XL C/C++ V12.1 中新的内置函数,以原子方式安全地修改一个线程中的数据,而不会影响其他线程。此行为类似于 GNU Compiler Collection (GCC) 中提供的行为。

添加或增强了多个编译器选项。例如,-g 选项得到扩展,可改进优化的程序的调试。此增强允许您在一些优化的激进程度与可执行程序中生成的准确调试信息量之间进行选择。此方法允许编译器提供调试信息,而不会损失太多的性能提升机会。您现在可以使用此增强调试优化的应用程序。

-qhaltonmsg 选项在生成任何对象文件、可执行文件或汇编语言源文件之前生成指定的错误消息时停止编译。-qinfo=all 选项支持针对除 alsppt 之外的所有组的所有诊断消息。-qlanglvl 选项中添加了一些子选项来支持在此版本中添加的新语言标准。

添加了一组新的编译指令来改进循环迭代。iterationsmax_iterationsmin_iterations 编译指令允许您向编译器提供有关循环将执行的迭代数量的暗示。此信息可进一步加快运行程序的速度。


结束语

本文重点介绍了 XL C/C++ V12.1 中引入的一些比较明显的增强。这个最新的版本包含与性能和应用程序开发相关的新功能。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=823870
ArticleTitle=IBM XL C/C++ for AIX and Linux V12.1 中的新功能
publish-date=07022012