异构编程难题被HSA有效缓解
http://itpx.eol.cn 来源: 作者:网络 2005-04-25 大 中 小
尽管异构计算的概念已提出多年,包括英特尔、英伟达等多家厂商都在提供异构计算的产品,并应用了不同的技术方案,但在中科院计算所并行实验室的贾海鹏先生看来,异构计算在编程上有三座大山需要翻越:编程思想、编程优化、调试。随着AMD推HSA(Heterogeneous System Architecture,即异构系统架构),异构编程难题将得到有效缓解。
首先是编程难。异构计算和GPU都是并行程序,而传统应用都是串行的,这就需要程序开发者改变编程思维,需要程序员经过一段时间的特殊训练的程序员。在这方面,目前看并没有捷径可走。
第二,借助GPU发展异构计算,其终极目的是为了提高性能,这就需要程序能够完美地映射到硬件上去,需要对GPU程序进行优化。而要实现这点,必须同时具备两个技能:对算法有非常清晰的认识、特别了解底层硬件架构,只有这样才能够做到两者非常好的映射,但这将是一个非常有难度和工作量非常大的工作。不仅如此,由于异构计算还处于日新月异的高速发展过程当中,GPU的架构太多,变化太复杂,兼容性也不够。我们在编写程序时就遇到过一个很大的问题,而当我们耗费巨大精力将程序性能优化到最佳时,GPU架构出现了变化,导致我们有很多优化方法失效,不得不对这个程序进行再次优化。在这方面,HSA提供了中间语言,一份代码只需要程序员编写一次,就可以在任何的地方运行。
第三,调试难。这是最让我刻骨铭心的,程序调试本身就是难点,而在GPU程序中,这个难点就显得尤为突出。在GPU上有成百上千个线程在运行,数据在并行处理时,如果编写的程序在某一个地方出错,开发者很难知道是在GPU上哪里出了问题,也不知道是哪个分支在什么时候出了问题,这是并行计算编程中的常见问题,而在GPU上更为突出。在这方面,基于HSA架构的软件生态环境也提供了一种开放的标准,非常适合各个厂家开发各自的开发工具。
此外,贾海鹏表示,HSA所具有的异构队列、CPU和GPU共享内存等技术也解决了CPU和GPU协同工作,提高效率的问题。“如何让CPU和GPU来协同工作是异构计算中另一个难点。我们在让GPU工作的时候,CPU或者处于闲置状态,或者在等待数据的返回从而进行决策,这就使计算系统上的计算资源不能充分利用。原来在写程序时,这个问题可以通过队列形式让CPU和GPU来协同工作,但这种形式是使所有的交互甚至所有任务都是由CPU来承载,GPU扮演的只是协同者和参与者的角色。所以,如果GPU产生了新的任务,但这个任务又更适合CPU来处理的时候,GPU就无法将任务传给CPU执行。”贾海鹏说,“HSA让CPU和GPU可以共享内存,这就会避免我们原来在编写程序时,无法让CPU和GPU同时工作的瓶颈。CPU和GPU共享内存空间之后,就没有必要对这个数据进行二次处理;而异构队列提供了一个非常好的功能,就是可以让CPU和GPU进行任务的交互,在这种情况下,GPU与CPU将不会是一个简单协同的关系,而是将GPU和CPU摆在了一个同等的位置进行交互运算。”
“我相信AMD在相关技术上也一定会再次带给我们惊喜的表现,我们也期望AMD能够为我们科研工作者,提供更好的科技创新的平台。”他说。
免责声明:
① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。
② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。