由于OpenMP编程模型专用于单一进程,因此其可伸缩性最终要受到一台计算机中处理器(线程)数量的限制。可伸缩性还会受编程逻辑复杂程度和编程风格的限制。当前的OpenMP语义尚不够灵活,无法处理某些应用程序。例如,当前的OpenMP规范仅答应在并行区域内创建有限的动态线程。MPI(Message Passing Interface,消息传递接口)是一种工业标准的API规范,专为在多处理器计算机和计算机集群上获得高性能计算而设计,该标准是由大量计算机供给商和软件开发商共同设计的。有多种来自不同研究机构和厂商的MPI实现,其中最流行的一种就是MPICH,MPICH常用作为特定平台或互连而优化的MPI实现的编码基础。MPI实现依然在不断发展。MPI-1支持一些要害特性,如点到点及与通信设备的集群消息通信。一条消息中可包含基本数据类型或派生(用户定义的)数据类型的MPI数据,它还支持互连拓扑。MPI-2则提供许多高级通信特性,如远程内存访问和单端通信等,还支持动态进程创建、治理和并行I/O。总体而言,MPI为计算机集群上的并行应用程序提供了一个出色的解决方案,但对于许多开发人员来说,MPI也是一种困难的编程模型,因为MPI的通信延迟时间较长,所以必须合理分割程序的核心逻辑,以使分布成本更为合理。分析及划分应用程序问题,并将问题映射到分布式进程集合中,绝对不是一项可靠直觉完成的任务,因为许多MPI进程之间的交互作用都相当复杂,因此即便选用了恰当的工具,调试并调整运行在大量节点上的MPI应用程序也极具挑战性。MPI的性能取决于底层硬件平台和互连,在某些极端的情况下,MPI应用程序的性能可能会受到繁重的互连流量的影响。另外一个严重的问题就是大规模MPI应用程序的可靠性。对于许多MPI实现而言,只要单一计算节点发生故障,无法正确响应,MPI程序就会停止工作。(本文内容由Sun软件架构师Liang T·Chen和微软软件架构师Herb Sutter提供) QQread.com 推出Windows2003教程 win2003安装介绍 win2003网络优化 win2003使用技巧 win2003系统故障 服务器配置 专家答疑 更多的请看:http://www.qqread.com/windows/2003/index.html真实案例研究:并行搜索要在大量符合某条件的问题中查找最优解决方案,或所有可枚举出的解决方案,最流行的一种方法就是树搜索。许多科学问题或日常生活中碰到的问题都可以转换并表达为一个并行树搜索问题。可能的应用程序范围从微不足道的解谜一直到复杂的战略分析。一种流行的方式就是建造一个状态树,每个节点表示一种特定的应用程序状态,然后对状态树进行搜索,找到具有最优状态的目标节点,或经过最少的步骤抵达目标节点。为这样的并行搜索应用程序开发软件共有两个步骤。第一步是创建一个良好的抽象模型和转换问题,并以状态树的形式将其表现出来。抽象模型的质量将影响树的外形和大小,也会影响搜索的难易程度。第二步是使用并行计算在整个状态树内搜索。在大多数情况下,树都是在程序运行时动态建造的。由于树易于以一种不均衡的方式成长,因此随机地将一个子分支指派给工作线程或进程,可能会失去负载均衡。总体而言,概括并行搜索编程非常困难,从模型抽象开始,我们就要面对挑战,随后是树建造,最后是并行搜索算法。一个出色的树模型需要开发人员具备指定行业的丰富经验,将问题完备地表达出来,并用树节点的形式表现问题。建造状态树后,通常还需要对树模式进行试验分析,以设计出一种有效的并行搜索算法。算法通常需要对树节点进行分割和分组,以发挥并行性能。编看编想:大规模的并行化来了在服务器端,RISC架构的服务器进入多核技术领域要早一些,所以一些专有的、或者说是基于Unix操作系统的行业化特征非常显著的应用已经是并行化编写的。而当x86领域迎来64位计算和多核技术的时候,绝大多数的基于Windows的应用都是传统的按照单一线程开发的。现在,标准化、开放、TCO等浪潮席卷整个计算领域,x86服务器市场在飞速发展,逐步挤压原来的、非常强势的RISC架构服务器占有的份额,跟随服务器硬件技术的发展脚步,基于x86服务器的操作系统以及上层应用,都需要考虑处理器级别的多核、并行计算设计带来的性能提升,考虑软件如何能够适应并且更充分发挥硬件架构的优势。应该说,这是软件层进入了大规模的并行化设计阶段,究竟,在销售量方面,x86市场是绝对领先的。记者之前接触过一些将应用改为并行运行的案例,是采用集群系统后,将原来的应用进行一些修改以便能够充分利用集群系统并行处理的优势,比如石油勘探行业的用户,他们在计算和分析地震勘探资料应用中,采用大规模并行计算系统来实现叠前偏移和精确地震成像处理,提高勘探开发效益。不过,这些应用都还处在一个刚刚开始的并行化应用阶段,采用的是集群系统。多核技术在x86服务器中成熟后,如何能够充分利用到多核并行处理的优势,才是软件层面真正的挑战,就是所谓的“线程级并行”。新闻热点
疑难解答