`
pcajax
  • 浏览: 2185090 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

并行编程走下神坛 将成为开发者基本技能?

阅读更多

[Csdn.net专稿]早在几年前,Herb sutter就发表《免费午餐已经结束,软件历史性的向并发靠拢》,引起了业内很大的反应。这几年来Erlang这种老古董也因为多核的发展而逐渐热起来,网上关于普通程序员是否需要掌握多核编程技术也有很多争论,不论大家观点是否正确,至少多核相关技术引起了开发人员的注意。而最近3月25日在北京举行的2011年英特尔软件大会也再次聚焦并行和应用优化,并获得了众多业内并行编程的行业专家、开发经理和高手的关注。

并行编程渐受关注

接受采访在谈到传统编程模式面临的挑战时,英特尔软件开发产品部全球销售与业务开发总监Phil De La Zerda(佘飞)认为,“如今的企业级应用从整个IT环境和架构来看都到了需要做一些改变的时候,过去靠提高主频来提高运算性能的方式已经受到了(难以逾越)的问题,从物理学的角度来看,散热(发热量太大且难以驱散)、功耗(太高)、尺寸以及泄露问题,主频速度的提升已经越来越困难。”

从他的观察来看,在5年前做并行计算往往还是一些很高端的客户,主要集中在高性能计算领域,例如天气预报、能源地质勘探、科研计算包括金融公司开发金融衍生品的时候做的投资分析,“当时主要是看到这些客户在做并行计算。但这几年来越来越多的大众主流应用,比如做图像处理、网络游戏也开始采用并行编程等。总体来看,每个软件行业的应用领域里,前十位的应用开发商都在做并行计算。此外,比较明显的就是很多做网络游戏的开发商在使用并行计算方法后,在用户体验、性能提升或者计算资源的提升上都有了更好的反馈。”

在谈到近年来在全球各推广多核编程中最令人兴奋的事情时,佘飞告诉CSDN记者:

越来越多的开发者把英特尔并行开发工具当做标准的开发平台,并在企业内部做推广。而且,业界(当然英特尔也是积极推动者之一)也举办了很多针对软件开发人员的大会或技术研讨会,无论在中国、日本还是印度等等国家,来参加这些技术研讨会的听众大多都是年轻的受众,这些技术人员非常乐意去学习新的并行软件开发技术。从整个产业来看,毫无疑问,跟多的人开始关注并实践起来了。

在如何利用业界提供的并行编程工具方面,佘飞认为首先开发人员要形成一套系统的方法论,包括接受适当的培训。另一方面,要借助于适合的软件工具去入手并行编程,他认为,如果传统的开发者凭着经验和现有知识自己动手来做的话,往往花的功夫会比较大,可能走的路也不定是对的。但是如果通过这些并行开发工具,则能提供一整套的环境来提供恰当的帮助,无论是做编码、测试还是做性能调优的过程中。

      英特尔公司软件开发产品部全球销售与业务开发总监 Phil De La Zerda(佘飞)

佘飞提到,去年英特尔发布了Parallel Studio XE2011,新增加了一个英特尔Parallel Advisor组件,能帮助很多没有丰富开发经验的人给他们做一些建议,比如如何在软件程序里哪个部分适合加入并行,如何去加。另外一方面可以帮助开发者做一些引入并行算法后具体性能参数对比预测,这些都可以帮助开发者避免一些弯路。

而根据在之前一份面向业界45名各公司程序员/开发经理、战略师关于“什么是实施并行编程的最大障碍”的挑战中:

与会者给出的5大挑战分别是遗留代码(legacy code)、教育(education)、工具(tools)、对众核趋势的恐惧(fear of many cores)以及可维护性(maintainability)。

对此,佘飞着重谈到了传统代码如何实行并行化面临的挑战,他认为最大的挑战来自于架构(传统拓扑架构的变化给软件开发人员带来了颠覆性的挑战),过去基于文本的顺序编程模式已经不再适用,在并行化的过程中确实需要花相当的功夫去改写原来的代码,但从另一个角度来看,业界也通过工具提供了一些简便的方法。重要的是,并不是所有原有的代码全部都要重写,例如,英特尔会首先帮助用户分析哪些代码是需要做改写的,哪些需要做并行。此外,英特尔也提供了其他的方法,可以利用第三方英特尔的库,或者C/C++语言来编写。此外,在算法咨询和工具的免费试用、技术交流大会、支持社区交流上业界也都提供了多种方式。

当然,就并行编译工具的需求上,有业界观点认为:

从成本上来讲,如果能通过一些优秀的编译器(例如Intel的ICC)自动并行化一些遗留代码无疑是最省钱的,但是这种方法最大的缺陷就在于像Intel ICC这种自动型编译器能自动并行化的代码非常少,从而导致它能提供的性能优化非常有限,而且就算是真正能获得speedup的代码也有很多约束条件(例如loop的循环之间没有dependence,并且该loop应该是一个程序热点)。所以目前的现状就是大量的遗留代码并不能有效的被并行化,从商业的角度上来讲,如果能有一种解决方案能在短时间内快速可靠的通过实施并行化让遗留代码在多核平台上获得10%~30%的性能提升,那么它就已经能为公司节省大量成本了。

其实,就开发者如何入手并行编程方面,CSDN此前就对SD2.0大会多核编程专家周伟明进行了采访,周伟明表示:

对于普通程序员来说,掌握多核编程技术并不是一件难事,只要有多线程编程基础的程序员都可以掌握。当然,就像C++标准模板库STL一样,掌握其基本原理和使用它对每个程序员都不是难事,但是要自己去实现它并不是每个程序员能做到的。多核编程技术也一样,普通程序员掌握其基本原理和使用它不是难事。

并行编程会成为主流趋势吗?

  佘飞认为,未来并行编程会走向“神坛”,并成为开发人员职业生涯的核心竞争力之一,就像多年前的(Java)一样。当时,只要你拥有Java编程技能很快就能得到一份具有竞争力的工作。他认为未来并行编程人员会出现像Java一样类似的情形。

  事实上,在之前记者对Erlang之父的采访中,他也认为并行计算将成为绝对主流,而不仅仅是一个阶段并且很快对并行编程感兴趣的人将(又一次)变成高性能社区的一员。这个观点在2011年英特尔软件大会上CSDN记者与英特尔首席工程师Peng Tu的谈话中获得了赞同,但他认为并行编程目前存在的问题是在标准语言和打造(统一的)开发平台方面仍面临挑战。

  从另一个角度来看,并行编程给业界和开发者带来了许许多多新的技术难题,现阶段想要高效利用这些多核平台以获得更好的性能,就必须对计算机的硬件有较深入的理解,而广大程序员却更喜欢能有一些更加便利的编程模型(也许是一门新语言Erlang?也许是新的编程模型)来简单高效地进行并行编程。有人就认为,这也许是新的软件危机的开端,前路满是荆棘。但是,程序员从来都是迎难而上的,只要有问题,就会有机会。

并行时代,开发者该如何应对新的挑战呢?(付江)

分享到:
评论

相关推荐

    python并行编程pdf

    整个文档结构清晰地为读者介绍了Python并行编程的各个方面,从基础的并行概念到具体的多线程和多进程编程技术,再到分布式计算和异步编程的高级应用,为想要深入学习和应用Python进行并行计算的开发者提供了宝贵的...

    本书将介绍一些并行编程的架构和编程模型。对于初次接触并行编程技术的程序员来说,这些都是非常有用的概念;对于经验丰富的程序员来说,本书可以作为基础参考。

    总的来说,本书将涵盖并行编程的基础理论和实践技巧,无论你是初学者还是经验丰富的开发者,都可以从中受益。通过学习并行编程,你将能够驾驭多核处理器的力量,解决计算密集型问题,提高代码执行效率,为复杂项目的...

    perfbook.2019.12.22a.pdf_深入理解并行编程_prefbook_perfbook_

    在阅读"perfbook.2019.12.22a.pdf"时,开发者可以期待掌握并行编程的基本理论,理解并行计算模型,学习设计并行程序的方法,以及如何有效地进行性能调优。通过深入理解并行编程,开发者能够编写出更高效、更具扩展性...

    并行编程技术(linux)

    总之,并行编程是一项复杂的技能,它要求开发者不仅要精通编程本身,还要理解底层硬件的工作原理和操作系统提供的并行支持。随着多核处理器和大型分布式计算平台的普及,对于并行编程的需求只会越来越强烈,掌握这项...

    OpenCL异构并行编程实战-src,opencl异构并行编程实战 pdf,C,C++

    《OpenCL异构并行编程实战》是一本深入探讨OpenCL技术的专业书籍,旨在帮助开发者理解和应用OpenCL进行高效的异构计算。OpenCL,全称为Open Computing Language,是由Khronos Group开发的一种开放标准,旨在为不同的...

    并行编程原理及程序设计.pdf

    并行编程则是实现并行计算的具体方法之一,它涉及到如何将程序代码按照一定的策略分解成多个可以并行执行的部分。 #### 三、并行编程模型 并行编程模型主要分为两大类:共享内存模型和分布式内存模型。 1. **共享...

    大规模并行处理器编程实战

    通过CUDA,开发者可以将复杂的并行算法转换成高效的计算代码。书中对CUDA的基础知识、编程模式、内存管理、以及性能优化等进行了系统性地讲解,使得即使是没有并行编程经验的读者也能够逐渐掌握这门技术。 除了CUDA...

    并行编程cuda

    在标题“并行编程cuda”中,我们可以看出本文是关于CUDA(Compute Unified Device Architecture)的讨论,CUDA是一种由NVIDIA推出并行计算平台和编程模型,它使开发者能够利用NVIDIA的GPU(图形处理单元)进行通用...

    并行编程高级源码

    总的来说,这个资源对于想要提升在.NET环境下并行编程技能的开发者来说是宝贵的资料。通过学习和实践,你可以掌握如何编写高效、可靠且易于维护的并行应用程序,从而充分利用现代计算硬件的能力。

    labview多核技术下的并行编程模式

    ### LabVIEW多核技术下的并行编程模式 #### 使用设计模式的益处 - **简化整个开发过程**:设计模式的应用使得程序结构更加清晰,易于理解和维护。 - **代码可重用**:通过标准化的设计模式,可以减少重复编码工作...

    C#并行编程完整示例

    在并行编程的场景下,它可能利用多核CPU的优势,将图像处理任务分割成多个部分,并行执行。例如,你可能看到如何使用FastImage类来并行地对图片进行缩放、裁剪、旋转等操作,从而加快处理速度。 4. 数独程序: 数独...

    并行编程教材

    “并行编程教材”不仅适合初学者,也对有一定经验的开发者有参考价值。它通过实例和练习引导读者逐步掌握并行编程技术,为解决复杂计算问题提供有力的工具。配合提供的“www.pudn.com.txt”文档,可能是补充资料或...

    CUDA编程 并行编程

    CUDA编程是一种专门针对NVIDIA图形处理单元(GPU)的并行编程技术,它允许开发者使用C、C++以及其他语言来开发可以在GPU上运行的软件。GPU内部拥有成百上千个小核心,能够并行处理大量的数据,尤其适合处理那些可以...

    .NET中的并行编程.pdf

    .NET中的并行编程是一项重要的技术,它可以让开发者利用多核处理器的计算能力,将应用程序中可以并行执行的任务分散到不同的处理器核心上,从而提高程序运行效率。在.NET框架中,为了支持并行编程,引入了任务并行库...

    [Visual.Studio.2010并行编程

    ### Visual Studio 2010 ...通过以上章节的学习,开发者不仅可以掌握并行编程的基本概念和技术,还可以学会如何利用 Visual Studio 2010 中的工具和框架来有效地实现并行程序,从而显著提升应用程序的性能和响应速度。

    英特尔Parallel Studio并行编程

    5. 实现并行:在决定并行位置之后,开发者需要运用并行编程模型和API来实现具体的并行化编程。英特尔提供的Threading Building Blocks (TBB)、OpenMP等工具可以辅助开发者实现。 6. 错误检查:在并行程序中,错误和...

    C#并行编程编程高级教程(节选)

    首先,了解并行编程的基本概念至关重要。在共享内存的多核系统中,多个核心可以同时访问同一块内存,这与分布式内存系统有显著区别。并行程序设计是针对多核环境优化代码的过程,目的是提升程序运行速度。理解硬件...

    掌握Fortran多任务处理:并行编程指南

    因此,多任务处理和并行编程成为了Fortran开发者必须掌握的技能。本文将详细介绍如何在Fortran中实现多任务处理,包括并行编程的基本概念、工具和技术。 多任务处理和并行编程是Fortran开发者提升程序性能的重要工具...

Global site tag (gtag.js) - Google Analytics