为多核环境创造并行编程语言

作者:Ed Sperling

 

软件开发往往滞后于硬件的变革速度,尤其在多核芯片领域这种差距还在不断扩大。
 

硬件方面,在合理功耗条件下进一步发掘130纳米乃至65纳米单核处理器的性能潜力已变得极为困难。在笔记本电脑等便携式设备中,将单核芯片的性能提高 50%会使设备过热,导致无法手持或者需要耗尽电池的电量来冷却整个设备,有时两种情形兼有。即使在数据中心等能够有效冷却芯片的地方,降低服务器机架的热度所需要的能量也非常惊人,这令美国环境保护署极为不满。
 

硬件方面,在合理功耗条件下进一步发掘130纳米乃至65纳米单核处理器的性能潜力已变得极为困难。在笔记本电脑等便携式设备中,将单核芯片的性能提高50%会使设备过热,导致无法手持或者需要耗尽电池的电量来冷却整个设备,有时两种情形兼有。即使在数据中心等能够有效冷却芯片的地方,降低服务器机架的热度所需要的能量也非常惊人,这令美国环境保护署极为不满。
 

即使在已经小有成效的领域,应用开发商也要利用多个内核,将不同功能进行线程化或者在多个内核上操作。例如,在进行数据库搜索时,就非常适合于使用线程化,因为单一任务可以在多个可用的处理器或内核中进行解析。可用的内核越多,应用的运行速度就越快。相反,利用线程化运行游戏软件却会更困难,因为执行的任务完全不同且按照随机顺序处理。
 

英特尔的首席工程师 Anwar Ghuloum 表示:“线程的确是提升系统性能的一种低层方式。这种方式非常容易出错、造成程序死锁。”
 

英 特尔的研究实验室正在与其大客户合作开发全新的编程环境―Intel Ct; Intel Ct是英特尔的万亿级(Tera Scale)项目的一个主要组成部分(见图)。在今年四月于中国召开的英特尔信息技术峰会上,东软公司首席技术官张霞(Zhang Xia)演示了一组幻灯片,说明用于单线程应用的单一命令需要的代码行数是36,使用具备前向可扩充性的矢量化多线程方法需要的行数是 29-在使用Ct后的结果,而使用单一线程矢量化且不支持扩充的方法则需要116 行。
 

这是一个接近理想化的环境。位于中国沈阳的东软公司主要开发安全软件,由此已经看到了并行编程的美好未来。但是对于游戏软件制造商等其他公司而言,这一优势并不十分明显。对于 Microsoft• Word 等台式机应用,编写并行代码的优势,如果有的话,也是非常微弱。在开发 Ct 的过程中,英特尔特别关注速度型应用的构建。
 

Ghuloum 表示:“真正的问题在于我们如何获得上一代面向对象语言(如 C++)的生产力和 Fortran 的性能优势。如果您比较 C 代码和 Fortran,Fortran 的性能是两倍高。
 

优势与成本

性能方面,开发可充分利用更多内核的软件必将是未来发展趋势。使用单一模片甚至多个嵌入式内核构建系统是唯一的经济高效开发方式。但是多个内核仍是有多个内核相关的性能开销。即使使用高度并行的应用,额外添加一个内核也不会使性能翻番。
 

英特尔预计,通过使用 C++ 等编程语言,性能损失已经达到20%至30%,如果编写代码能够获得生产力优势,则这一点可以接受。通过并行编程,性能开销可能在30%左右。但是通过多个内核,整体性能却可以提高多达 6 倍。
 

Mathworks 公司信号处理与通信总监Ken Karnofsky称他公司一直努力在其MATLAB产品中实现并行计算,并更快速的模拟MATLAB和Simulink中的代码。他说这项工作包括拆分功能以及将不同功能分布到多个处理器上。
 

Ken表示:“这样的并行计算有些让人尴尬——需要使用面向不同数据的不同参数重复进行计算,这一点相对简单。更困难的问题是您还得考虑算法采用的结构以及数据分配方式。”
 

在某些情况下,使用并行性更高的软件意味着需要更多中间件,这也会影响整体性能。为此,英特尔自主开发能够利用多个内核的中间件。IBM对其Cell处理器也进行了同样的处理,为芯片创造了一个管理程序,其作用相当于处理器的交通警察。而且由于这样的流量都必须进行动态引导,在能源和性能上都要付出代价。
 

这样做的优势是采用了更多软件,即具备更高的可编程性。尽管软硬件之间的功能比例视芯片架构而定,但是添加更多软件(无论是嵌入式代码、固件还是外部软件)还 是可以为设备的构建增加一些灵活性。库存方面,在消费电子等迅速变化的市场中,独立组件可以即时提升,以便集成最新的通信协议或接口。

 

并非所有内核都是类似的

并行软件的开发仍然非常复杂,这也是截至目前尚未出现专门开发团队的原因所在。正如价廉的汽油造成备用能源成为面向未来的工作一样,传统的扩充方式也使多核的吸引力有所降低。即使如此高的复杂性,多核编程的重要性不言而喻。当您考虑到并非所有的内核(有些内核较大)都是类似的时候,复杂性将更高。而且在软件并行过程中,相同的应用可以在不同时间充分利用部分或全部不同类型的内核。
 

至今,Ct多数是在共享内存系统上大范围的被应用。目前,英特尔在考虑是否使用分布式计算环境方法,以使应用能够扩充至系统的每个节点。
 

当然,上述工作都需要一定的时间来实现。对于数据库和框架而言,第一步是支持并行。英特尔相信在今后一到两年内能够完成这项工作。此后,使开发语言成为主流的一项工作将需要5-10 年的时间,以及英特尔及其价值链厂商,和世界各地多所高校一起努力进行研究与开发。
 

Ghuloum 说:“首要问题是如何使多核编程变得更简单化。这是个尚未解决的问题。”
 

Ed Sperling是《Chip Design》杂志的特约编辑。Ed从事技术相关研究和写作已有20年。出色的报道让他获得了无数奖项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值