多核时代:填补软硬件之间的鸿沟
计算机硬件与软件之间的互动已经发展了50年之久。但在过去,双方的关系仍然保持一定的距离。往往是由硬件工程师研制出芯片之后,再扔给软件程序员。而随着多核处理器的出现,硬件/软件之间的联系会变得更加紧密。芯片制造商们逐渐认识到,多核架构正在从根本上改变传统的软件生产模式——过去的软件通常都是单线程的,要对它们进行改编使之适合多线程、多内核技术非常困难。因此,如果芯片厂商要想推广自己的产品,就必须想方设法缩短硬件和应用之间的鸿沟。
芯片厂商的共识
事实的情况是正是如此。在某种程度上,英特尔、IBM、AMD、NVIDIA等芯片厂商都在跟ISV和研究机构加强广泛合作,提供早期的硬件样品、软件支持及相关培训。芯片制造商们已经通过编译器和处理器接口库(processor interface libraries)等形式提供软件支持,来帮助工具开发商处理芯片上越来越多的内核。
比如,IBM为其CELL处理器提供软件开发套件(SDK)和其他工具(参见:Cell宽带引擎Linux扩展和软件开发工具发布:http://publish.it168.com/2005/1122/20051122046901.shtml),IBM 还启动了一个名为Octopiler的项目,使对Cell的编程更简单。
AMD为其GPU编程引入名为“Close to Metal”的CTM技术,使开发者能够随意访问AMD流处理器中的原生指令集和大规模并行计算单元的内存。利用CTM,流处理器就能够像今天的中央处理器(CPU)一样成为功能强大的开放式可编程架构。通过开放架构,CTM使开发者能够对硬件进行低阶、确定和可重复的访问,这一能力是开发编译器、调试器、数学库和应用平台等基本工具所必需的(参见:AMD发布针对流运算的CTM技术
NVIDIA则为其GPU产品提供了CUDA平台,开发人员可运用Quadro系列解决方案的高速运算性能,以研发、设计原型以及解决复杂的可视化问题。在多核X86软件支持方面,英特尔更是拥有非常广泛的商业产品、软件工具和教育培训服务,来帮助开发人员更好地应对多核芯趋势。针对大量存在的行业ISV,为了帮助其尽快的实现从单线程应用向多线程应用的转变,英特尔投入大量资源,向业界提供编译器、应用程序分析和调试、数学函数库等软件工具。
在高性能计算领域,这一策略已经变得更加清晰。最近的例子就是围绕相对较新的IBM Cell BE和通用GPU处理器,涌现了许多开发工具。在这些芯片出厂之前,PeakStream和RapidMind等厂商就开始为新的加速器设备提供应用开发平台。如果这些产品获得成功,将在芯片厂商和软件开发商之间就有望实现非常重要和关键的协同机制。下面,我们就以CELL和GPU在HPC中的应用为例,来看看其软件开发方面存在的机遇和挑战。
用GPU和CELL充当HPC加速器
使用GPU和CELL处理器来充当流处理加速器(stream processing accelerator),这一做法已经在HPC业界引发了相当的关注。人们可以通过这些处理器来实现应用加速,其目标领域包括3D可视化、广播编码、医疗成像、多媒体内容创作、图像和信号处理、金融财务分析、地震资料处理、大规模数据库交易和企业科研,几乎适用于所有要求强劲计算性能的数据密集型应用。这些多核加速器在HPC领域里的广泛适用性,已经吸引了软件开发商的关注。
早在去年9月份,Peaksteram公司就推出了一种“基于GPU显卡来构建超级计算机”的解决方案——该公司的C/C++程序接口、虚拟机处理任务调度和内存管理等工具软件,为程序员提供一种方便的途径,利用多内核x86或Cell处理器和GPU组成联合系统。编程人员可以象以往那样使用C/C++ 语言编写程序,PeakStream的软件负责硬件资源的分配。虽然客户必须根据PeakStream软件的接口对应用软件进行改编,但跟搞明白图形卡或其它硬件产品的内部原理来说,还是要简单得多。如其今年3月发布的PeakStream Workstation for Windows包含了一系列工具和库文件,可以方便开发者在微软的Visual Studio下为显卡开发多线程通用运算程序。
http://jingyan.qihoo.com/fr.html?kw=%B6%E0%BA%CB&url=http%3A%2F%2Fshop.wlkj.net%2Fthread-34646-1-1.html&title=%B6%E0%BA%CB%CA%B1%B4%FA%A3%BA%CC%EE%B2%B9%C8%ED%D3%B2%BC%FE%D6%AE%BC%E4%B5%C4%BA%E8%B9%B5+