论文部分内容阅读
IBM Cell作为异构多核处理器具有高速的计算性能,但目前并未得到广泛的应用,其主要原因在于其复杂的体系结构导致复杂的编程和编译技术。目前,如何有效地进行异构多核上的并行开发已成为高性能计算领域研究的热点之一。在IBM Cell上的软件开发环境主要是SDK,并有DACS、ALF、OpenMP等编程模型。本文基于图像和信号处理方面的应用,通过与MecuryMCF的对比分析,最终确定使用OpenMP编程模型来进行通用性研究,在不改变原有编程模型的基础上实现编译技术的优化,并设计一套相应的运行支持库。
非规则数据存取是影响处理器计算效率的因素之一,预取技术和软Cache是解决非规则应用的经典方法,鉴于IBM Cell独特的层次存储特点,还存在很大的优化空间。数组私有化是并行化编译中的重要技术之一,SPMD是实现OpenMP数组私有化的重要手段,但是SPMD形式的OpenMP程序却不能直接通过IBM XLC(适用于IBM Cell多核平台的编译器)的编译,为了解决该问题,本文提出了一种IBM Cell多核平台的OpenMP数组私有化技术。该技术旨在充分利用本地存储器,减少DMA通信,集中处理可重用数据的私有化,其主要内容包括:数组私有化分析、数组私有化转换、同步消除与非阻塞DMA操作、扩大数据的可重用作用域。转换后的Jacobi迭代代码的实际测试结果表明,这种基于IBM Cell多核平台的数组私有化技术能够平均提高3%左右的执行性能,对于小规模计算来说性能提高还会更多。在此基础上,通过消除临界区和隐藏Flush操作,调用运行时SPE线程通信API,建立运行时流水模型,可进一步减少通信等待延迟,提高处理器利用率,并保持SPE各线程间的同步和数据一致性。实际测试显示,经过进一步优化的实例其并行执行的加速比得到了明显的提高。