不支持Flash
|
|
|
通用CPU并行计算远景 采访Intel软件开发部门http://www.sina.com.cn 2007年02月09日 11:19 天极yesky
Oscar
第1页:题首语 天极网在整个2006年都致力于宣传多核时代软件的重要性,旨在为消费者阐明多核心处理器的性能瓶颈所在,使之能更加理性的去看待多核。对于行业而言,天极网愿意和工业界与学术界一起加速并行编程的推广进程。之前我们在多款处理器的评测中都都强调了软件是目前多核处理器性能瓶颈,在我们更进一步的评测中还发现:通过不同编译手法产生的并行化程序在实际使用中会有效能提升的差异较大,这也说明了并行编程中还存在许多我们不了解的问题。而这一次我们将通过对Intel SSG部门的采访来进行并行编程的更深入探讨…… 英特尔很早就认识到软件的重要性,英特尔软件与解决方案事业部(SSG)是一个全球性的大型机构,有超过十年的历史,主要针对英特尔的产品进行相应的软件开发。正是这个软件部门一直在幕后默默的支持着Intel处理器事业的发展,使得多年来不管在何种情况下Intel的处理器都能以最好的软件兼容性能回馈消费者。多核时代的来临更是让Intel的SSG部门变的全所未有的重要。在过去的三十几年里,处理器的设计者主要从三个方面来提高处理器的性能,它们分别是时钟速度,执行优化和缓存,而头两个就是从线性执行流程上考虑的。这使得大多数软件不用做版本的升级就可以轻松而持续地享受处理器性能提升的成果,让程序的执行速度大大加快。比如同一款Photoshop6.0版本软件在奔腾3和奔腾4上的执行速度就大不一样。而事情现在却有了新的变化。虽然制造工艺的发展允许把更多的晶体管集成在一起,通过提高主频的方法来提高处理器性能变得越来越困难,同时带来了功耗的增加。这时,并行计算的理论又被重新提起,把多个处理器集成在一个芯片上便产生了多核处理器。然而多核处理器与之前的单核处理器有之间一个很大的不同就是它更加需要软件的支持,只有多线程化的软件运行在多核处理器上才能充分发挥出多核处理器的效能,因此多核处理器当前面临的一个很大问题就是软件问题。 虽然并行编程并不是什么新鲜的玩意,利用并行方法进行加速运算的程序也早就出现,比如Oracle、IBM的DB2这类的数据库程序就充分利用了数据存取的并发。但有一点要提醒的是,Simula作为最早的面向对象语言我们从上个世纪60年代就开始采用,但一直到90年代面向对象语言才真正开始占主流地位。并行编程差不多也有同样漫长的历史可以追溯,特别是近十年来,并发应用越来越多(有多线程的,也有多进程的),但发生整体转向性巨变,目前还不具备条件,需假以时日。 新技术通常都很吸引人,有时候也很有用,但软件开发方式的重大变革必须来源于在真正得到爆发式应用前就存在并经过多年的缓慢成长、先进而稳定的技术。这个过程是必须的。变革所依赖的基础技术必须足够成熟(包括有固定的厂商与工具支持),通常这个稳定与成熟的过程需要花费7年甚至更长的时间,新的技术在广泛应用时才不会有潜在的性能悬崖与陷阱。面向对象的编程是这样,并发编程也同样如此。 我们就是基于目前大部分的程序都是基于单线程的大环境下对Intel软件开发部门作出这次采访,旨在了解被寄予厚望的Intel软件部门如何帮助程序员从过去的单线程编程过渡到并行编程,毕竟并行编程需要以人类不习惯的方式去思考问题。 第2页:Intel软件开发部门的职能及产品信息 1. 问题:作为一般的程序员我们通常很少接触到Intel的软件开发工具产品,在我们的理解中只有大型的软件设计公司和学术研究机构才会与Intel的软件部门有所接触,因此我们希望了解Intel软件开发部门的职能及产品信息? A: 英特尔很早就认识到软件的重要性,英特尔软件与解决方案事业部(SSG)是一个全球性的大型机构,有超过十年的历史,主要针对英特尔的产品进行相应的软件开发。SSG的主要任务有三大块,一是在英特尔内部担负着为其它事业部承接软件方面的研发任务,提供软件支持,并协调英特尔公司整体软件项目开发;另外一个主要任务是和第三方软件开发商和解决方案提供商开展积极合作,提供软件原型的开发与合作,帮助它们设计出能够完全发挥英特尔架构优势的产品,以便英特尔的产品和平台可以很好地和业界其它软硬件产品进行互通,从而为最终用户创造巨大的价值。第三,研发面向开发者的软件开发和调试工具,如编译器,性能分析器™,性能函数库,线程监测器和分析器, 和集群工具包。目前,SSG事业部在全球拥有十多个重点实验室,而最大的实验室则设立在中国上海,意味着英特尔看好中国软件人才的优势以及并对中国市场的高度重视。 第3页:intel如何帮助程序员从单线程编程过渡到并行编程 2. 问题:Intel软件部门如何帮助程序员从过去的单线程编程过渡到并行编程、如何解决并行编程需要以人类不习惯的方式去思考问题? A: 多线程并行编程将使程序在多核系统上得到了性能的飞跃,而代码优化工具则令多线程编程更加简便。英特尔软件和解决方案事业部提供一整套强大的线程工具、编译器和其它性能调试工具套件与白皮书,以帮助软件开发人员在其代码中提升线程级并行处理能力。英特尔还有多款多线程软件开发辅助工具,包括Intel Threading Building Blocks、Intel Thread Checker 3.0和Intel Thread Profiler 3.0,以帮助程序员在软件开发过程中充分发挥双核或多核的强大处理能力,在一个应用软件中采用多线程模式。Intel的编译器在编译时能最大限度的优化编译代码并且使之并行化。同时Intel软件学院还以各种形式的课程和动手实验帮助各个层次的程序员掌握并发编程的技巧。 第4页:Intel的编译器支持哪些编程语言、如何工作? 3. 问题:我们知道Intel已经针对各种编程语言推出相应的编译器(Compiler),请具体说明Intel的编译器支持哪些编程语言以及这些编译器是如何工作的。这些编译器支持对多核处理器的专门代码优化吗?(for example : c++ compiler \ Fortran compiler) A: 英特尔® 编译器可提升软件的性能。英特尔® 编译器与您使用的其他工具保持兼容,可以集成到广泛使用的开发环境,并且同其他广泛使用的编译器保持着特性源与二进制方面的兼容性。英特尔® 编译器支持应用最广泛的系统编程语言 C, C++ 以及最常用的科学、工程计算语言 Fortran。英特尔® 编译器既可以使用用命令行调用,方便自动化大规模编译,又可以嵌入最流行的Microsoft Visual Studio 集成开发环境中,方便用户的使用。 英特尔编译器内置多核支持,与 32 位和 64 位英特尔® 体系结构的其他优化完美集成。充分利用多核处理功能特性,从而提供卓越性能。另外,英特尔编译器还可以对自动并行处理和 OpenMP* 的支持,您能够创建优化的多线程应用程序,这些应用程序会充分利用多核处理特性,从而提供更加卓越的性能。 第5页:VTune产品的功能效用 4. 问题:我们之前知道Intel有一款性能分析工具叫VTune,请具体说明这款产品的功能效用,以及其对并行编译有何贡献? A: 在多核处理器面世之前, VTune作为一个性能调试工具已存在多年,并能提供结果图形化显示和表格化输出。有三大基本功能:1) 基于时间或CPU有关的事件(缓存,指令分支,总线等)的性能数据样本收集,不仅针对用户程序,而且针对系统上所有的活动进程和模块; 2)调用图,组装用户的执行代码,获得函数间调用关系,次数及执行时间; 3)性能计数器监控,可以取得一些非处理器有关的性能数据。 性能样本表达了代码所消耗的处理器的资源,可以追踪至源代码, 并可落实至相应的进程,线程和模块。比如,当发现某段代码大量消耗处理器的资源,同时可知是哪个进程,线程以及相应的处理器。 VTune在Intel Pentium 4 HT 平台上已能显示两个逻辑CPU的工作情况。当你的多线程代码运行于双核的CPU, VTune能探知在四个逻辑CPU上代码所消耗的处理器的资源。 英特尔®VTune™可视化性能分析器最大限度提高代码性能。其增强的命令行界面和全新自动化数据输出功能,可进一步简化与我们日常开发活动的集成,并可通过图形用户界面轻松优化应用性能,而且无需重新编译。 VTune™ 基于时间–和事件的系统范围取样, 提供最精确的实际软件性能,且对程序执行影响最小。VTune™ 调用关系图分析提供关于程序流程的示意图,帮助您快速识别主要功能和调用顺序。VTune™ 计数器监控器允许您在运行时间期间轻松跟踪系统活动和资源消耗,以帮助您检测和发现系统级性能问题。 第6页:说明播放软件开发者如何利用IPP进行开发 5. 问题:针对Multi-Media软件开发,Intel有Integrated Performance primitives(IPP),请详细说明播放软件开发者如何利用IPP进行开发。IPP有针对多核进行的优化吗? A: Intel(R) Integrated Performance Primitives( Intel IPP)是一套跨平台的高性能函数库,它提供了图像处理、信号处理、音频编解码、视频编解码(H263 、MPEG-4、H.264等)、图像压缩、语音压缩、加密解密等优化函与示例代码. Intel IPP已经针对多核处理器进行了优化, 它所有函数都是线程安全的, 同时Intel IPP 的很大一部分的函数与例子代码, 已经在内部进行了多线程化.借助这些函数与例子代码,程序开发人员可以提高程序的性能,大大节省开发时间. 附图是Intel IPP对H.264编解码的流程框图。 读者还可以到 http://www.intel.com/cd/software/products/asmo-na/eng/perflib/ipp/ 去下载样本代码。 第7页:Intel Mobile Platform Software Development Kit具体说明 6. 问题:请针对Intel移动平台的开发工具包Intel Mobile Platform Software Development Kit具体说明,其中有无对多核平台的优化部分。 A: 英特尔® 迅驰TM 移动技术正使得全世界越来越多的人们享受无线技术所带来的计算体验。对无线以及移动计算的需求正在快速增长。移动设备比如笔记本、UMD等都需要智能地适应系统资源和环境的变化,才能够在移动环境下运行地更为有效。适应移动环境的软件系统需要考虑以下几点需求: n 针对电源及性能的优化。能够更好地节省电池的耗电量,同时提供更高的计算能力和I/O性能。 n 智能的网络连接状态监测并能随之作自适应调整。 n 离线数据管理。使得应用程序能够在不同的网络连接状态下,提供相同的用户体验。 n 多平台支持。应用程序可以方便地部署在不同的客户和服务器上。 英特尔® 移动平台SDK是Intel提供的针对移动设备软件系统的开发工具包。它给软件开发者提供了统一的接口用于访问系统的网络连接、电源、带宽、存储状态以及屏幕显示等管理。它使得ISV和最终用户可以制定并控制移动平台,动态地针对系统变化作出相应的行为。英特尔移动平台SDK包括系统类库、可安装组件、代码样例、测试工具以及开发者手册等。 英特尔移动平台SDK是移动软件创新技术组正在研发的移动新技术之一。我们将致力于开发各种工具产品来展示英特尔公司的最新最好的技术。通过开发这些工具,我们期望移动和无线领域的新技术,新架构能够尽早的服务于业界。我们同时也会通过开发产品,拓展使用模式和移动商业用例,协助ISV接受并开发出更多适应移动环境的应用产品。 以下的网址有更多的相关中文资料: http://www3.intel.com/cd/software/products/apac/zho/perflib/mobileplatform/index.htm 第8页:并行编程将会是软件开发史上的又一次重大变革 7. 问题:现在很多专家在为"并行编程将会是软件开发史上的又一次重大变革"这个问题展开讨论,也有人说:“并行编程将是比面向对象更伟大的变革”;请问Intel如何看待这个问题? A: 从单核处理器到多核处理器的迈进是整个工业界不可逆转的一个趋势。随着多核处理器的日益推广,更多的程序需要被并行化和多线程化,因此并行编程将对多核技术的推广将起到非常重要的作用。这里所说的并行编程,既可以是程序员根据经验在程序设计和开发时进行的手工并行划分,也可以是利用并行优化工具进行的多核性能优化。由于Intel的软件开发部门在并行编程方面积累了非常丰富的经验,Intel愿意和工业界与学术界一起加速并行编程的推广进程。并行编程其实跟面向对象编程并不矛盾,也就是说,在面向对象编程中可以利用并行编程的思想和工具提高面向对象程序的并行性。 并发编程和面向对象是计算技术的两个重要突破, 两者都很重要而且并不矛盾。面向对象技术需要人们去挖掘更多的计算潜力, 从而促进了并发编程的发展。 另一方面现在很多面向对象的语言已经实现了并行化。 实践证明,将程序多线程化是显著提高性能的方法。 随着Intel引入多核处理器,我们面临一个全新的机遇。无论是在台式机解码更多高清图像还是在服务器上完成成千上万的事务,线程都是释放多核威力的重要工具。在多核处理器迅速地占领市场的同时,软件开发商必须开发并行的程序以适应这个潮流。在开始并行化的时候,软件开发者会遇到许多新的挑战,Intel 准备了一系列工具和培训,帮助开发社区进行技术上的准备和强力的支持。诸如编译器、性能库IPP、线程工具 Thread blocks和调优工具VTune等。 第9页:Intel对我们现在的程序员在并行编程上给一些建议 8. 问题:最后想请Intel对我们现在的程序员在并行编程上给一些建议,还有对已经购买了双核处理器的用户有什么话想说? A: 并行编程最重要的是并行性的挖掘和并行划分,也就是说如何把一个任务划分成可以并行执行的若干子任务。子任务的并行既可以是对不同数据的完全并行执行(图1),也可以是对同一数据的流水线并行执行(图2)。在把子任务分配到各个核上去的时候,还要考虑到不同核之间的负载均衡。广大的程序员可以从Intel的网站(http://www3.intel.com/cd/software/products/apac/zho/index.htm)上取得Intel多核/多线程软件工具的试用版,从而评估一下Intel多核/多线程软件工具带来的并行优化好处。由于各大软件厂商都已经(或已开始)对各自的软件产品进行并行优化,双核处理器的用户可以逐渐体会到单个程序在双核处理器上运行所带来的性能加速。由于Intel的双核处理器采用了Intel最先进的酷睿微体系架构,即使对于单线程程序的运行也能提供很好的加速。同时,用户还可以感觉到同时运行多个程序时的良好体验。 并行编程需要全新的思维方式。需要强大的工具支持。Intel 软件社区提供了大量的背景知识介绍、培训。有Intel工具的试用下载,还有社区互动支持,您有任何相关问题都可以在这个社区提问,都会有专家或是热心成员给出解答,使您在并行化的道路上不再孤独。她的网址是http://www3.intel.com/cd/ids/developer/apac/zho/index.htm 建议程序员们多来参与。 对于已经购买了双核的用户, 可以更好地运行经过并行优化的软件, 获得更高的性能。 图1:对不同数据的完全并行执行 图2:对同一数据的流水线并行执行 最终页:编者的话 正如我们前面提到的:软件开发方式的重大变革必须来源于在真正得到爆发式应用前就存在并经过多年的缓慢成长、先进而稳定的技术。这个过程是必须的。变革所依赖的基础技术必须足够成熟(包括有固定的厂商与工具支持)。Intel作为半导体行业的先驱者,正在通过其SSG部门履行着应尽的责任,为并发软件开发时代的来临默默奠基。我们期望Intel能继续在该领域发挥更大的作用,早日趋生多核时代的来临。而在那之前,消费者不妨以“理性的眼光”和“平和的心态”来默默做准备。
|
不支持Flash
不支持Flash
|