监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 签约案例 | 购买价格 | 在线试用 | 手机APP | 产品资料
X 关闭
哈尔滨OA软件行业资讯

当前位置:工程项目OA系统 > 泛普各地 > 黑龙江OA系统 > 哈尔滨OA系统 > 哈尔滨OA软件行业资讯

高性能计算的免费午餐结束了吗?

申请免费试用、咨询电话:400-8352-114

文章来源:泛普软件

可扩展性地位逐步提升

一直以来,在高性能计算领域,开发可扩展的应用对程序员来说非常重要,如今多核心处理器的繁荣发展更让这成为了数以百万的程序员们的首要任务。此前,有种扩展性很好的高性能计算程序――“高度并行(embarrassingly parallel)”,简称EP计算。但人们必定不会仅仅满足于“足够好”的并行。任何扩展及能够保持扩展的设计将是至关重要的。如果程序无法适应未来的扩展性要求,高效的设计也将不再重要。“前瞻性扩展”将成为一个好的程序设计的关键组成部分。少一些EP将成为程序员的规范。

人们开始转向多核处理器,意味着今后程序员需要运用新技术来编写可扩展的应用程序,并接受新观念以取得应用性能的进一步提高。过去,随着处理器时钟频率的提高,即使是一个写得不好的应用程序速度也会提高。但现在情况不同了,多核处理器已经成为现实,一个写得不好的并发应用程序的速度是无法提高的。现今的程序员需要“并行思维”,编写并行程序以更多的挖掘多核处理器的潜力。

并行思考且并行编写程序是件很不容易的事。正如计算机科学教授Andrew S.Tanenbaum近日在08年的USENIX会议上所说,“顺序编程已经很难了,但并行编程比它更难”。显然,随着未来新一代架构的发布,我们不愿一遍又一遍的执行这些艰难的任务。未来的扩展就提供了一种避免做大量重复工作的方法。

免费的午餐

正如C++程序设计领域屈指可数的大师之一Herb Sutter几年前所讲的,“免费的午餐结束了”,程序员不能再指望不断提高的时钟速率来加速应用了。那么是否有一道新的免费午餐出现呢?显然程序员希望通过一种方式,让他们今天投入的时间和精力能够在未来获得最大化的长期投资回报。

一些人认为扩展性就是新版的免费午餐。在发布新架构的时候,扩展性提供了一种方法,让程序员们不需要重写代码、重新执行艰巨的任务。当应用可以成功的扩展时,各种软件就可以很好的运行在目前的双核与四核处理器架构上了,乃至未来更多核的架构。

扩展性是否是新的免费午餐?这也许不是“免费啤酒”那种意义上的免费。扩展性承担了一部分工作。其目标是让今天的投资在未来能够不断获得回报。

Forward scaling的定义

Forward scaling是一种软件设计方法,能够让软件应用运行在今天的多核处理器架构中并提供卓越的性能,而且让这种软件应用也可以适应未来更多核心的架构。Forward scaling的目标就是找到这样一种技术――在用户增加更多处理器内核时可以避免重写整个代码。这可能么?在许多情况下似乎可以实现。尽管没有完美的解决方案,但目前可供选择的方案可以有很大帮助。

Forward scaling与scaling是不同的,因为前者是一个面向未来的扩展性设计,而非今天。随着时间的推移,工具会改善,处理器的设计会改进,处理的数据量也会增长。要想让未来的代码更改维持在最小范围,我们必须为这三个因素设计一个路径,使程序在未来可以很好的扩展。

开始设计时就要注意,今天并不需要为高达100多个内核的架构提供扩展性设计,我们只需要找到一条通往明天的路,同时保护大部分软件投资。多年来,我们一直试图设计这样的软件――为明天的系统准备就绪的软件。现在软件的扩展性变得更加重要了。

Forward scaling设计

跟差的程序设计相比,好的程序设计会对未来作出预测并为此做好准备。富有Forward scaling思维的设计可以预见到未来多核心处理器将会盛行。

那么既然如此,我们应该如何设计程序呢?

首先,我们必须摒弃显然不具扩展性生产的编程方法。避免使用本地线程,如Pthreads, Windows线程, Boost 线程, and Java 线程。一般来说,使用本地线程编写的代码,随着时间的推移根本不会有旺盛的生命力。利用本地线程会导致很多假设被编入低级程序中。

相反,我们应采用基于标准的工具和足够并行的方法,使我们能够有机会处理更多数据。Forward scaling通过使用简单的基于标准的工具,提供抽象的并行。OpenMP 、线程库、英特尔TBB(线程构建模块),或者英特尔MPI 库都可以确保今天采用的技术明天仍然有效。

库将在forward scaling上发挥关键作用,而且当程序员开始大规模向未来迈进的时候,一个好的库无疑将会存在巨大的需求。当然,库接口还需要不断改进,以最大限度地发挥它的作用。许多开发者已经通过使用英特尔Math Kernel Library(MKL)简化了编程并可支持更多内核。随着我们的处理器的发展,英特尔将继续调整该库以为今后几年的发展提供扩展支持。英特尔的MKL目前已经提供了应对数以千计的处理器的扩展。今后,更多的库也能够达到这样的水平。

为了体现forward scaling的优势,软件开发人员和他们的客户必须选择合适的硬件。在英特尔,我们正在努力实现系统的处理能力、内存以及I / O带宽的平衡。核心数量在增加,为实现应用程序的性能提升,平衡系统是必不可少的。我们还要促进处理器和内存、处理器内核本身之间更好地通讯。我们在英特尔QuickPath互连方面做的工作支持“Nehalem” 架构,促进可扩展性,大大降低了总线带宽的竞争。当然,没有人会提供完美的平衡,但英特尔的理解是,平衡对保护软件投资非常重要。

可扩展性PK应用效率

过去,应用能够实现高效率是至关重要的,因为它们都运行在昂贵的硬件上。但是,实现这一高效率是以程序员的生产力为代价的。看来今后的局面会是:低成本的硬件和高成本的程序员。创建可扩至使用更多核心的未来并行程序对提高未来架构的性能是必不可少的。

着眼于可扩展性而不是把重点放在提高应用效率上,通常是更好地利用程序员资源的方法。具成本效益的多核处理器越来越多,降低了计算成本,减少了提供绝佳效率的客户应用需求。如果我们的程序是可扩展的,实现百分之五十效率就足够了,如果我们指望未来架构可达到同样的效率水平的话。若没有实现扩展性,那么从一个程序挤出效率相对来说就没什么意义。

一旦我们创建了一个可扩展程序,我们又将过上有“免费午餐”的日子。所有新一代架构都将有助于提高应用程序的性能,程序员可以把精力放在为应用添加新功能上,而不是为了跟上架构的变化整天忙于重写代码。

保护软件投资

今天一个好程序需要具有可扩展性。选好了会使程序适应未来的架构变化,而坏的选择将无法保护原来的软件投资。

对并行多核系统的关注是否给了我们更多高性能计算机的选择空间?或者MPI会继续成为可扩展程序的编程选择?如果高性能计算程序员继续依靠的MPI ,那么非高性能计算程序员是否也会转向MPI呢?在近期内,MPI将继续主导最具扩展性的程序。但从长远角度来看,一切皆有可能。

目前,对大多数程序员来说,扩展性显然是一个新且重要的话题。选择更好的具扩展性的方案,将对保护我们的投资至关重要。(IT专家网)

发布:2007-04-21 13:53    编辑:泛普软件 · xiaona    [打印此页]    [关闭]

泛普哈尔滨OA软件行业资讯其他应用

哈尔滨OA软件 哈尔滨OA新闻动态 哈尔滨OA管理信息化 哈尔滨OA快博 哈尔滨OA软件行业资讯 哈尔滨软件开发公司 哈尔滨门禁系统 哈尔滨物业管理软件 哈尔滨仓库管理软件 哈尔滨餐饮管理软件 哈尔滨网站建设公司