近几年,大家讨论得比较多的是计算机硬件走向多核化——采用多核多线程的芯片、改良系统架构。据IDC数据表明,2008年度发售的PC、PC服务器和笔记本中,超过80%的机型将内置多核处理器。到2009年,几乎所有发售的服务器、PC和笔记本都内置了多核处理器。
但是,光有硬件,如果没有软件来配套发挥多核的功效,显然路还只走了一半。
“随着多核硬件产品的逐步普及,并行化在显现出其优异性能的同时,也带来了软件并行化的全新应用模式,这也就意味着,软件开发人员再也不能忽视‘并行化’在软件开发中的重要地位。” 英特尔开发者产品事业部销售和业务发展总监佘飞日前谈到。
但实际上,面对多核硬件的普及,软件界似乎还没有准备好。起码到目前为止,还缺乏快速、简单、高效的方案来帮助广大软件开发人员实现面向多核环境的多线程编程和并行计算。
英特尔和AMD一手把计算设备带入了多核时代,现在,英特尔更希望能够把软件也能带入并行时代。只有这样,它的CPU才能卖得更多,当然,用户也才能真正体会到多核应用的威力。
要做好并行化软件,从多线程软件开发的整个流程来看,不仅要通过直观的方式告诉软件人员如何区分哪些代码需要并行化,通过包括编译器在内的很多开发工具来帮助软件开发人员实现多线程优化,还要通过调试工具来检测多核的性能以及多线程中存在的一些问题。
其实,英特尔很早就开始行动了。早在上个世纪90年代末,英特尔就已经意识到多线程软件开发在未来多核时代将扮演的重要角色,并开始与协同操作系统和应用软件厂商携手做关于软件线程性能优化和多核软件开发技术的研究,随后也推出了针对主流编程语言和操作系统的开发工具套装:包括线程分析工具、C++和Fortran编译器和其它性能调试工具套件、性能库及群集工具包等开发工具。
其中,英特尔线程分析工具包括线程检查器、线程档案器和线程构建模块,使用这些线程工具可以加速并简化多线程应用程序的开发与维护。这些工具帮助快速找到并纠正线程错误,并能确定多线程软件中的性能瓶颈。
而VTune性能分析器可通过图形用户界面轻松优化应用性能,而且无需重新编译。它独立于编译器和语言,因此可与 C、C++、Fortran、C#、Java、.NET 等等一起使用。与只提供调用图分析或一组有限的采样事件的产品不同,VTune 分析器可通过一组丰富的适用于所有最新英特尔处理器的调试事件同时实现上述两种功能。
英特尔性能库则提供了高度优化的函数,这些函数可充分利用英特尔处理器,从而能够最大限度地获得应用程序的性能并减少开发时间。英特尔提供的性能库包括:
1)高性能多媒体函数库(IPP)——包含音频、视频、图像处理、密码学、语音识别和信号处理函数以及编解码器组件函数,用于数字媒体和数据处理的应用程序中;
2)数学核心函数库(MKL)——包含高度优化、针对线程进行扩展的数学函数,应用于需要最大性能的工程设计、科学和金融领域;
3)线程构建模块——基于 C++ 模板的运行时库,简化了线程处理,实现了可扩展的多核性能,可避免重写、重测试、重调试通用并行数据结构与算法;
4)高性能消息传递接口(MPI)库——用于开发可在多个集群架构互联(在运行时由用户选择)时运行的应用程序;
5)移动平台软件开发套件——简化了应用程序适应移动环境的过程。
这些工具往往相互结合使用,如将英特尔C++ 编译器 Windows* 版与线程构建模块(TBB)、高性能多媒体函数库(IPP)和数学核心函数库(MKL)相结合,从而为构建成本低廉、功能强大的高性能并行代码打下坚实的基础。
另外,针对高性能计算领域,英特尔提供了群集工具套件,包含了一些核心库和工具,如MPI 库、数学核心函数库集群版、跟踪分析器和跟踪采集器以及MPI 性能指标评测等,可有效地开发、优化、运行和分布并行应用程序,适用于包含英特尔处理器的集群。最新的英特尔集群工具套件编译器版包括C++ 编译器、Fortran 编译器以及所有英特尔集群工具,可以帮助开发和分析 Linux 或 Windows CCS 集群上的并行应用,并优化其性能。
显然,单纯的芯片制造能力和技术,已不足以体现多核处理功能和性能优势,具备在多核环境中多线程工作的优秀软件,也是组成多核化世界的另一极。