越来越多的人正在关注异构计算,为了发表一点个人理解和看法,本文将从一个开发者的角度阐述一下自己的观点。期待大家的批评指正。
异构计算平台
越来越多的主流媒体,出版物都在花时间向大家传递一个信息——异构计算已经并可能在相当长的一段未来时期中主宰计算平台[1,2]。那到底什么是异构计算呢?
作为软件开发者,我认为异构计算就是在异构平台上执行计算,因此我们应该先对异构的计算平台有一定理解,然后在了解如何在异构平台上执行计算。那到底什么是异构平台呢?首先我们知道现在有很多可以用于计算的单元,诸如CPU,GPU,MIC,DSP,FPGA等等,如果在同一个计算机系统中加入不同的计算单元,那么组成的这个计算机系统就可以认为是一个异构的计算平台。大多数人认为现在比较成熟的异构平台是CPU+GPU的计算平台,原因在于两点:越来越多的用户开始使用这种平台;这种异构的计算平台的性能在top *百中屡有佳绩。当然这两点原因看上去联系也很密切。
关于CPU+GPU的这种计算平台,目前也有多种存在形式,根据是否共享内存可以分为两种:CPU与GPU共享内存,比如AMD的APU,目前AMD将CPU和GPU共享同一块内存,但是CPU的线程不能和GPU的线程共享同一块数据,在HPCChina2012上,AMD表示不久的将来他们会完成CPU线程与GPU线程共享数据,作为开发者我们也期望那一天再点到来;另一种就是CPU和GPU完全保有独立的存储单元,他们之间使用PCIE通信,这是Nvidia正在做的,Nvidia还在继续努力的提高GPU计算单元的访存和计算速度,以及计算单