5. 优化应用程序 现有的PowerPC应用程序通过重新编译,基本上可以顺利的移植到CELL BE上。但是这种方式,只利用了PPU,而没有利用到SPU的计算能力。通过编译选项,CELL BE的编译器(XLC 或者 gcc)能够为应用程序进行一定程度的自动优化。不过,既然CELL BE的C/C++编译器和开发库对C和C++作了大量扩展,我们尽可以充分利用CELL BE的多处理器架构及SIMD能力,来优化应用程序。 有了SPE开发库及扩展的intrinsics的支持,程序员可以在代码中显式的使用SIMD指令和数据结构,来指导编译器进行代码优化。SIMD优化是一个重要的工作,CELL BE的编程手册指出,原有代码经过SIMD化以后,能够大幅的提高应用程序的性能。通过对任务进行划分,将计算任务分配到多个SPU上,同样也能够有效的提高应用程序的性能。此外,通过并行编程,减少指令流水线的等待和停顿,可以提高应用程序的并行化程度。 下面通过CELL BE编程手册中的一个例子,来展示如何通过对代码进行SIMD优化,从而提高应用程序的性能。图 8中,array_sum是一个对数组进行求和的函数。
图 8 普通的求和函数,通过循环遍历数组,对数组的每个元素求和。 下面的例子,利用CELL BE编译器对SIMD指令的支持,来消除不必要的串行循环,从而提高代码的运行效率,改进的代码如图 9。
在这个例子中,vec_perm函数从偏移地址0到16,以左对齐的方式,读入nums中的16个字节,并构成vector。vec_sums则是对两个vector求和。 在这里,vec_sum4s将变量vnums按1/4饱和运算的方式与一个值为全0的vector进行向量求和,即相当于对nums的元素进行逐个相加。 6.小结 基于CBEA架构的CELL BE处理器是一个适用于高性能和多媒体计算的RISC处理器。CELL BE SDK提供了高效的软件开发库,高性能的编译器以及交叉编译的toolchain。同时,IBM Full-System Simulator提供了完整的CELL BE应用的仿真环境和性能分析工具。 CELL BE的软件开发与普通PC的应用软件开发有所不同。CELL BE是第一个同时应用异构多核心和同时多线程SMT 技术的主流处理器, 它是一个为分布和并行处理设计的体系结构。开发者如果能够充分利用CELL BE处理器架构的优势,将能有效提高应用程序的性能。 |
正在阅读:CELL Broadband Engine软件开发环境介绍CELL Broadband Engine软件开发环境介绍
2007-06-26 11:18
出处:PConline
责任编辑:gongjianhui
键盘也能翻页,试试“← →”键
本文导航 | ||
|