【HSA】Heterogeneous Systems Architecture

感觉自己始终有一天要用到这个东东,HSA的好处是无缝调用GPU资源,不需要再经过显存的调度,不但编程简单了,代码效率也大大提高了。毕竟图像处理很依赖并行运算,特别是高分辨率下的应用需求。说白了也就是一个运算工具,底层的工作已经由强大的架构师们搞定了。

这个东东提出来很久了,2012年。现在主要用在游戏产业,以及部分实时图像处理应用当中。


AMD异构系统首席架构师Phil Rogers表示:从编程角度,异构计算HSA架构也力图让传统的OpenCL编程变得容易,最终普通的编程人员也可以用Java、C++等来进行异构编程。在AMD的计划里,AMD将会支持更多语言比如微软的C++ AMP和利用开源项目来降低门槛,比如通过Aparapi工具、BOLT库等,同时通过这些工具和库的支持引入对Java和C++的支持。更多的开源应用也得到HSA的支持,比如OpenCV的异构版本。需要指出的是,HSA并不是APU的专利,对于追求独立显卡这种更高设备性能的开发用户,同样也享有效率和性能的提高。


当前的CPU和GPU是分立设计的处理器,不能高效率地协同工作,编写同时运行于CPU和GPU的程序也是相当麻烦。由于CPU和GPU拥有独立的地址空间,应用程序不得不明确地控制数据在CPU和GPU之间的流动。CPU代码通过系统调用向GPU发送任务,此类系统调用一般由GPU驱动程序管理,而驱动程序本身又受到其他调度程序管理。这么多的环节造成了很大的调用开销,以至于,只有在任务所需处理的数据规模足够大,任务的并行计算量足够大时,这样的调用开销才是划算的。而其他的调用形式,比如由GPU向CPU发送任务,或者GPU向自己发送任务,在今天则根本不被支持!为了充分释放并行处理器的计算能力,架构设计者必须打破既有格局,采用新的思路。设计者必须重塑计算系统,把同一个平台上分立的处理单元紧密整合成为不断演进单颗处理器,同时无需软件开发者的编程方式发生重大的改变,这是HSA设计中的首要目标。

为此,异构系统架构(HSA,Heterogeneous System Architecture)创造了一种更佳的处理器设计,展示了CPU和GPU被无缝集成后所带来的益处和潜能。通过HSA,程序可以在统一的地址空间中建立数据结构,在最合适的处理器上创建任务。处理器之间的数据交互不过是传递一个指针。多个计算任务之间通过coherent memory,barrier,和atomic等操作来保证数据的同步(和多核CPU的方式相同)。


参考资料:

异构计算实例:http://www.pcpop.com/doc/0/911/911103_all.shtml

hUMA异构统一寻址技术:http://www.expreview.com/25200.html

HSA Foundation官网:http://www.hsafoundation.com/

C++ 接口:https://bitbucket.org/multicoreware/cppamp-driver-ng/wiki/Home

openCL:https://www.khronos.org/opencl/

OpenCV和OpenCL:http://blog.csdn.net/feixiang_john/article/details/8086766

http://blog.sina.com.cn/s/blog_6c868c470102v15y.html

你可能感兴趣的:(HSA)