一种跨平台的并行编程框架设计与实现
2014-12-02聂鹏宇潘玮华
李 婷,徐 云,聂鹏宇,潘玮华
(1.国家高性能计算中心(合肥),合肥 230027;2.中国科学技术大学计算机科学与技术学院,合肥 230027)
1 概述
并行化计算已经成为提高计算性能的主流方向,多种并行计算平台也应运而生。传统并行计算平台有多核CPU、大规模并行处理机和工作站机群等[1]。为满足不同行业的计算需求,多种专用并行平台也迅速发展,如现场可编程门阵列(Field Programmable Gate Array,FPGA)和通用图形处理器(General Purpose Computing on GPU,GPGPU)[2-3]。然而,由于并行程序的行为模式比传统的串行程序更为复杂,使得并行程序的编写、调试和优化都更加困难。同时,并行计算平台的多样化和硬件的升级,对程序的可移植性提出了严峻挑战。
为了解决以上问题,人们尝试从不同平台上并行程序的行为模式中抽象出并行编程模型,并将其表达成易理解、易操作的编程框架。并行编程框架是将并行编程模型以API、编程规范等形式表达出来,并提供相应的函数库、编译系统等底层支持的编程库或工具集(toolkit),其目的在于对程序员隐藏底层细节,降低并行程序开发的难度。传统的并行编程框架如OpenMP[4]、MPICH[5]等已不能适应硬件的发展和多样化的计算需求。并行编程框架的研究,向着专业性、可移植性、混合编程等多种方向发展。
为了实现并行程序的可移植性,简化上层并行程序的开发,并能灵活适用于不同计算需求和硬件变化,本文设计并实现了一种跨平台、分层次、可扩展的并行编程框架OpenCH。框架以并行函数库的形式和层次化的API 设计对上层应用程序的开发隐藏了底层计算平台的差异和并行化细节,使得没有经过并行编程训练的开发人员可以按照串行程序开发的模式快速开发并行程序。……
