高胜寒 熊庭刚
(武汉数字工程研究所 武汉 430205)
近年来,GPU进行通用计算的潜力引起了研究者的注意。由于GPU具有极强的浮点运算能力,通过将GPU引入异构计算系统,可以大幅提高计算系统性能[1]。OpenCL是面向异构系统的并行编程标准和编程环境,它的出现为异构计算提供了一种通用和开放的解决方案[2]。据2018年中国高性能计算机发展现状分析与展望指出,近年我国采用异构加速体系架构的系统数量逐年增加,但是所用GPU硬件仍然为国外主流厂商所垄断[3]。所以,在国产GPU硬件上实现OpenCL异构计算编程框架的实现具有相当的研究意义。
在异构计算领域,国外厂商在软硬件方面均处于领先地位。硬件层面上,图形处理器(GPU)市场基本上为国外公司所垄断,AMD、NVIDIA占有了桌面级GPU市场,在嵌入式市场则主要由ARM、Imagination、VIVANTE等占据[4]。在软件层面,上述国外公司也对如CUDA和OpenCL等一系列异构计算标准提供了支持[5~6]。
当前,尽管已有国内厂商推出了一系列国产GPU,但是其研发重点仍然集中于提高GPU的图形渲染能力上,在通用计算方向研究较少[7-8]。从目前所知的报道看,大部分国产GPU尚未对OpenCL标准提供支持,异构计算在国产GPU上的研究尚有很大空间。
OpenCL标准中定义了四个抽象模型,即平台模型、执行模型、内存模型和编程模型[9]。在国产GPU上进行OpenCL的设计和实现,其关键在于实现隔离,即操作系统无关性和平台无关性[10]。本节结合国产GPU的系统结构,定义和设计了两个隔离层并设计了API解析程序,从而将OpenCL标准的四个模型映射到了国产GPU架构上,实现了模型的匹配。……