AMD宣布GPUOpen倡议,主推开源软件栈
今年九月份,AMD公司专门成立了Radeon技术部门(Radeon Technologies Group,RTG),来壮大自己GPU研发领域的技术力量。此外,该公司还聘请了Raja Koduri为全球资深副总裁兼首席架构师,并提拔图形与并行计算架构师Michael Mantor为公司院士。近日,Raja针对全球媒体主持召开了一次RTG技术峰会,介绍了AMD未来一年的GPU产品和技术战略,内容十分丰富。本文针 对会议中所介绍的GPUOpen进行详细介绍。
GPUOpen是AMD所发起的一个全新倡议。其主要目标是以开放的方式来推动GPU相关的开发,共包含了三个方面的内容。
开源工具链
一直以来,AMD在游戏机市场都占据着重要的地位。PlayStation 4和Xbox One都采用了AMD的CPU和GPU。然而,AMD在PC市场无法和NVIDIA平起平坐。其根源还在于显卡以及相关的开发工具难以与其抗衡。根据经 验,游戏机中GPU的底层访问能够为游戏性能带来很大的提升。因而,AMD和RTG一直在探索如何能够针对PC和游戏机进行类似的开发。之前,AMD曾提 出了一个突破性的显卡 API——Mantle,希望以此来改变游戏开发领域,提升电脑游戏的性能和速度。近期,NVIDIA也推出了Gameworks工具,向AMD发起了挑 战——该工具使得游戏开发者可以快速应用NVIDIA的3D技术,简化开发,但AMD系统就无法享受到这样的好处。
为了应对该挑战,AMD的GPUOpen在开放底层硬件访问权限的基础上提出了开源的想法。GPUOpen倡议包括了为游戏开发者提供底层GPU 硬件和GitHub上开源的效果、工具、库以及SDK的访问权限。其相关代码会使用相对宽松的MIT许可证,而且在GitHub中进行公布。这样,开发人 员就可以利用一个统一的工具库来面向AMD、NVIDIA以及Intel等公司的GPU。目前,TressFX、ShadowFX、GeometryFX 以及AOFX库都包括在了GPUOpen范围内。此外,GPUOpen还包括了FireRender渲染引擎、GPU加速的光线追踪SDK、 RapidFire云SDK以及CodeXL调试器和性能分析器。
支持高级语言开发
几周以前,AMD已经宣布了Boltzmann倡议。该倡议的主要目标就是利用C++等高级语言来简化并行应用程序的开发工作。其所包含的异构系 统架构(Heterogeneous System Architecture,HSA)的软件套件提供了一个针对C++语言的异构计算编译器(HCC)。利用该编译器,开发人员可以更加有效、便捷地使用异 构系统中的GPU硬件资源。
此外,异构计算可移植界面(HIP)还允许开发人员将CUDA代码转换为可移植的C++代码。据AMD透露,HIP在很多情况下可以将90%的CUDA代码转换成C++,而剩余的10%则可以手动转换。预计AMD将在2016年1月开放Boltzmann的初期访问。
开源Linux驱动和运行时
AMD的GPUOpen倡议还包括了一个针对高性能计算的Linux驱动模型和运行时。目前,AMD维护了两个Linux驱动栈——开源的 Radeon驱动和闭源的Catalyst驱动。未来,AMD将会推出一个针对其GPU的统一开源基础图像驱动。在此基础上,AMD再维护两个并行的驱动 栈——全开放的栈包含的都是开源的模块;高性能栈则包含了开源的运动视频模块和闭源的OpenGL模块。未来,和OpenGL模块并行存在的 OpenCL/Vulkan模块将会从闭源走向开源。
而AMD全新的无头64位Linux驱动包括了众多关键功能——低延迟计算调度、PCI-E数据传输、支持对等GPU、从和显存直接互连的InfiniBand网络中远程直接访问内存(RDMA)以及支持单一大内存分配。这些功能可以很好的满足高性能计算的需求。
尽管GPUOpen的倡议刚刚提出,其已经能够明确说明AMD在GPU方面的发展方向。在与NVIDIA的PC市场竞争中,AMD已经处于劣势, 但该倡议却能够有效利用开源社区的力量来促进AMD GPU以及相关工具的发展。而且,GPUOpen能够让开发人员更好的访问底层GPU,实现应用程序性能的提升。这样,更多的应用就会倾向于针对 Radeon硬件进行专门的优化,扩展AMD GPU的应用市场,对于AMD而言,这实在是一步好棋。