`
hzbook
  • 浏览: 251806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何掌握多处理器编程技巧

阅读更多

每逢我们在多处理器平台上进行编程时,往往会有这么一种感觉:即使已熟练掌握了系统提供的各种同步原语,但所编制的并行程序的实际性能似乎总有些差强人意,并不十分理想。

究其原因,问题的根结在于多处理器编程应是一门科学和艺术完美结合的学科。若要在多处理器系统结构上编制出性能良好的并行程序,要求设计者不仅要精通多处理器系统结构、并行算法以及一些系统构建工具,还应能基于一种设计理念,充分发挥个人的想象空间,合理搭配这些知识和资源,从而和谐地构建完整的系统,使设计者能比底层硬件和操作系统“做得更好”。也就是说,在编写多处理器程序时,要能同时从宏观和微观两种角度分析问题,并能在这两种角度之间灵活地转换。


自20世纪中叶第一台通用电子计算机研制成功以来,程序的编制大多是基于顺序计算模型的,程序的执行过程是操作的有序序列。由于顺序计算机能够用图灵机精确地描述,因此顺序计算的编程能在一组易于理解且完备定义的抽象之上进行,而不需要了解底层的细节。近年来,尽管单处理器仍在发展,但由于指令级并行的开发空间正在减少,再加上散热等问题限制了时钟频率的继续提高,所以单处理器发展的速度正在减缓,这最终导致了起源于在单独一个晶片上设计多个内核的多处理器系统结构的出现。多处理器系统结构允许多个处理器执行同一个程序,共享同一程序的代码和地址空间,并利用并行技术来提高计算效率。在这种计算模型中,并发程序的执行可以看做是多个并发线程对一组共享对象的操作序列,为了在这种异步并发环境中获得更好的性能,底层系统结构的细节需要呈现给设计者。


作为一名优秀的程序设计员,在编写多处理器程序之前首先应弄清楚:多处理器计算机的能力和限制是什么;在异步并发计算模型中什么问题是可解决的,什么问题是不可解决的;是什么使得某些问题很难计算,而又使另一些问题容易计算。这要求设计者具备一定的多核并行计算理论基础知识,掌握多处理器系统结构上并发计算模型的可计算性理论及复杂性理论。其次,应掌握基本的多核平台上的并行程序设计技术,包括并行算法、同步原语以及各种多核系统结构。


Maurice Herlihy 教授和 Nir Shavit教授在并发程序设计领域具有很深的造诣,并拥有40年以上一起从事并发程序设计教学的合作经验。他们对多处理器并行程序设计技术做出了巨大的贡献,并因此而成为2004年ACM/EATCS哥德尔奖和2012年分布式计算领域Dijkstra奖的共同获得者。《多处理器编程的艺术》由他们合著的专著致力于解决如何采用更好的并行算法来克服多核并发程序并行度低的问题。



 
Amdahl定律早已明确地告诉我们,从程序本身可获得的并行度是有限的,加速比的提高主要取决于程序中必须增加的串行执行部分,而这部分又往往包含着具有相对较高开销的通信和协作。因此,在多处理器系统结构上,如何提高程序中必须串行部分的并行度,以及降低并行处理器中远程访问的时延是我们目前面临的两大技术挑战。这些问题的有效解决,必须依靠软件技术和硬件技术的改进和发展。本书则侧重于对前一个挑战的研究。


作者先从宏观的抽象角度出发,在一个理想化的共享存储器系统结构中研究各种并行算法的可计算性及正确性。通过对这些经典算法的推理分析,向读者揭示了现代协作范例和并发数据结构中所隐藏的核心思想,使读者学会如何分析饥饿和死锁等微妙的活性问题,深层次地研究现代硬件同步原语所应具有的能力及其特性。随后,从微观的实际角度出发,针对当今主流的多处理器系统结构,设计了一系列完美高效的并行算法及并发数据结构,并对各种算法的效率及其机理进行了分析。所有的设计全部采用Java程序设计语言详细地描述,可以非常容易地将它们扩展到实际应用中。


本书的前6章讲述了多处理器程序设计的原理部分,着重于异步并发环境中的可计算性问题,借助于一个理想化的计算模型来阐述如何描述和证明并行程序的实际执行行为。由于其自身的特点,多处理器程序的正确性要比顺序执行程序的正确性复杂得多,书中为我们展现了一系列不同的辅助论证工具,令人有耳目一新之感。随后的11章阐述了多处理器程序设计的实践部分。由于在多处理器环境中编写程序时,底层系统结构的细节并不像编写顺序程序那样被完全隐藏在一种编程抽象中,因此,本书附录B介绍了多处理器硬件的基础知识。最后的第18章介绍了当今并发问题研究中最先进的事务方法,可以预言这种方法在今后的研究中将会越来越重要。

  • 大小: 22.9 KB
分享到:
评论

相关推荐

    多处理器编程的艺术

    现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的...

    多处理器编程的艺术中文版

    现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的...

    多处理器编程的艺术 中英两版 完整版

    现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备...

    多处理器编程的艺术中英文版两本

    现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的...

    多核处理器的艺术(英文版)

    现今,大多数工程技术人员都是通过艰辛的反复实践、求助有经验的朋友来学习多处理器编程技巧。这本最新的权威著作致力于改变这种状况,作者全面阐述了多处理器编程的指导原则,介绍了编制高效的多处理器程序所必备的...

    NX数控铣编程后处理器制作技巧.pdf

    NX数控铣编程后处理器制作技巧.pdf

    ARM编程技巧.ppt

    本文详细介绍了ARM嵌入式处理器的一些编程技巧,很值得一看

    Delphi编程技巧.rar

    如何为Delphi程序添加事件和事件处理器 在DELPHI程序中使用ADO对象存取ODBC数据库 轻轻松松在DELPHI3.0中实现三态按钮 Api函数列表【与文件有关】 Api函数列表【与打印有关】 Delphi中TApplication类的巧...

    DSP编程技巧之---详解浮点运算的定点编程

    我们使用的处理器一般情况下,要么直接支持硬件的浮点运算,要么就只支持定点运算,此时对浮点数的处理需要通过编译器来完成。在支持硬件浮点处理的器件上,对浮点运算的编程最快捷的方法就是直接使用浮点类型。

    Visual C++编程技巧精选500例.pdf

    《Visual C++编程技巧精选500例》pdf Visual C++编程技巧精选500例.pdf 第1章 消息框 001 如何创建消息框? 002 如何设置消息框标题? 003 如何使用资源串创建消息框? 004 如何使用资源串动态显示消息框内容? 005 如何...

    ARM处理器下C语言编程效率优化.pdf

    ARM处理器下C语言编程效率优化,对于想提高嵌入式C语言编程技巧的同志们来说,比较受用

    TI的C66x-DSP处理器优化技巧

    针对TI的C6000系列,或者TI的SOC芯片上面集成的C6000DSP,说明如何进行编程和优化,使得代码高效率、充分发挥硬件的性能。(总共包含3个说明文档)

    操作系统实验:处理器调度作业(有界面 QT 可视化)

    练习模拟算法的编程技巧,锻炼分析试验数据的能力。 2、实验说明:随机给出一个进程调度实例,如: 进程 到达时间 服务时间 A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 模拟进程调度,给出按照算法先来先服务 FCFS、轮转...

    IAR_EWARM嵌入式系统编程与实践

    其中包含IAR公司提供的32 KB版本全功能EWARM软件包和《IAR EWARM嵌入式系统编程与实践》所有范例程序,读者在阅读《IAR EWARM嵌入式系统编程与实践》的同时按照范例进行实际...,快速掌握ARM核嵌入式系统应用编程技巧...

    SST28SF040与高速数字处理器的接口设计及编程技巧

    SST28SF040与高速数字处理器的接口设计及编程技巧 武汉高压研究所华电公司 张蓬鹤湖南大学电气与信息工程学院 邵 霞 DSP具有先进的并行处理结构,特别适合于信号处理,已经越来越多的应用于工业控制领域和各类仪器...

    GPU.Programming.Guide.rar_GPU编程指南

    图形处理器编程指南 介绍了各种gpu硬件编程的技巧

    GPU精粹.实时图形编程的技术技巧和技艺

    本书主要基于当今图形处理器(GPU)的可编程图形管线,除了讲述用于创建高级视觉效果的基础知识和性能优化技术外,还着重介绍了前沿开发者们总结出来的快速技巧。本书全体撰稿者和编辑人员将他们多年的经验通过这...

    VISUAL C++MFC扩展编程实例

    本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...

Global site tag (gtag.js) - Google Analytics