基于OpenCL的异构系统并行编程
2012-07-27赵新灿谭同德
计算机工程与设计 2012年11期
詹 云,赵新灿,谭同德
(郑州大学 信息工程学院,河南 郑州450001)
0 引 言
使用GPU进行通用计算是近些年的热点研究领域。传统的通用计算主要依靠图形API,这给不熟悉图形应用的用户带来了极大的不便。为了克服该缺陷,出现了NVIDIA CUDA[1]和 ATI Stream[2]等编程模型,给编程带来了极大的灵活性。但是在程序移植性方面,NVIDIA GPU和AMD GPU互不兼容。并且今天的计算机系统通常包含高度并行的CPU、GPU和其它类型的处理器,让软件开发人员充分合理的利用这些异构处理平台的优势变得非常重要。
针对上述问题,Khronos Group推出开放计算语言OpenCL[3-4]。OpenCL是一种新的并行计算技术,使用它可以调用计算机内全部计算资源,包括CPU、GPU和其它处理器,为软件开发人员能够方便高效的利用异构处理平台、充分挖掘计算机中所有计算设备的性能潜力提供了充分保障。OpenCL包含一个用来协调异构处理器间并行计算的API,和一个基于ISO C99跨平台的编程语言,且能与OpenGL、OpenGL ES和其它图形类API高效互通,具有跨平台、兼容性好等特点,极大地方便了软件开发人员的编程工作,将大大地推动并行计算的发展。在诸如分子模拟、流体模拟、碰撞模拟、生物应用以及电信、金融、证券数据分析、医疗等各种领域都将具有良好的应用前景。本文以OpenCL的架构、软件框架及实现原理等为基础,对OpenCL进行描述,并将OpenCL与CUDA等通用计算技术进行对比,突出OpenCL的优越性。
1 OpenCL架构
为体现OpenCL的核心思想,可以用4个模型来描述其架构[5-7]。
1.1 平台模型
该模型描述内部单元之间的关系,如图1所示。……
登录APP查看全文
