论文部分内容阅读
科学与工程应用对计算性能要求的不断增加使得机群系统得到了迅速发展,但由于功耗和散热等因素,基于CPU的同构机群系统可拓展性已成为发展瓶颈。而图形处理单元(GPU)、众核协处理器(MIC)等其他加速单元在处理高度并行性负载的情况下可以提供比CPU更强的浮点计算能力,且所需能耗更低,因此CPU协同GPU或MIC完成计算任务的异构计算已成为发展主流。然而现有的异构编程模型缺乏为编程人员提供一致的编程环境,编程人员必须区分CPU与加速器并显式的指定数据在不同设备之间的传递情况,一定程度上增加了异构编程难度。PGAS编程模型旨在为分布式内存系统提供一个逻辑上共享的寻址空间,允许编程人员以全局视角操作数据从而简化编程难度。但现有的PGAS模型主要面向同构系统,且缺少针对CPU+MIC结构的实现。本文面向异构计算不断发展的趋势,研究在异构系统中对PGAS编程模型的拓展与实现方式,通过异构PGAS模型为编程人员提供一致的编程环境,简化异构编程难度。论文的主要工作和贡献如下:首先,面向异构系统实现对全局数组(GA)模型的拓展---CoGA。Co GA模型基于CPU+MIC系统上的SCIF接口实现全局数组操作,采用为全局数组分配固定内存的方式提高系统效率并保证数据传输的可靠性,通过SCIF远程内存访问实现CPU与MIC间的高效数据传输。CoGA模型结合异构系统实现的API接口能够为编程人员提供一致的编程环境,允许编程人员以全局视角操作物理上分布于CPU和加速单元间的数据,隐藏不同计算设备之间的内存分配和数据传输细节,进而简化异构编程难度。其次,结合异构系统特点优化数据传输性能。针对现有Offload编程模式中MIC之间无法直接进行数据传输导致通讯操作较为复杂的问题,CoGA模型通过SCIF接口建立MIC设备间的直接连接关系,允许用户通过CoGA接口直接在MIC间进行数据传输,降低数据传输延迟并简化通信操作。针对CPU+MIC协同计算过程中,CPU与MIC间可能需要频繁进行小数据通信的情况,CoGA模型基于SCIF消息传递层实现小消息传递接口,实现CPU与MIC间高效的小数据传递,降低通信延迟。此外,为便于用户通过指定数组分布实现CPU与MIC的任务划分,CoGA模型提供接口允许进程直接获取全局数组本地部分的指针,避免冗余数据拷贝。最后,通过基准性能Benchmark和实际应用测试CoGA模型整体性能。根据CPU-MIC数据传输带宽和延迟,MIC-MIC通信延迟以及矩阵乘应用的测试结果证明了CoGA模型简化编程并优化数据传输性能的有效性和实用性。