Cell 编程登堂入室(3)向量化编程实现及简单分析
- UID
- 1066743
|
Cell 编程登堂入室(3)向量化编程实现及简单分析
向量化编程实现SPU 强大的计算性能需要数据的向量化,才能最好的发挥出来,我们接着将刚才的程序向量化:
1
2
| [root@localhost test]# cp spu/test_spu.c spu/test_spu.c.bak
[root@localhost test]# vi spu/test_spu.c
|
test_spu.c 文件内容如下:
清单 2:test_spu.c 文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| [root@localhost test]# more spu/test_spu.c
#include <stdio.h>
int c[4] __attribute__ ((aligned (128)));
int main()
{
vector signed int a = {120, 230, 580, 970};
vector float b = {1.8, 1.98, 0.68, 0.7};
vector signed int cVec;
vector float tmp;
int i = 0;
tmp = spu_convtf( a, 0 );
tmp = spu_mul( tmp, b );
cVec = spu_convts( tmp, 0 );
*(vector signed int *)c = cVec;
for( i = 0; i < 4; i ++ )
{
printf("c[%d] = %d\n", i, c);
}
return 0;
}
|
简要性能分析mambo 可以精确地计算出 SPU 上程序运行时 CPU Cycle 数,据此我们可以对自己的程序不断的做性能调优。如果要求 mambo 精确的统计出 SPU 上程序的 cycle 数,点击 mambo 上的“Mode”按钮,然后选择“Cycle Models”,如下界面(图5)配置好 mambo:
图 5:SPU Mode 配置配置好后,关闭弹出的选项窗口。然后如上图 4 所述在 console 中运行 test 程序,在 mambo 的左栏中即可看见性能数据,如图 6 所示:
图6:查看性能数据结束语在多核处理器日益普及的今天,通过对于 Cell 编程的实践,可以很快发现这个异构多核处理器的独特之处。Cell 芯片的应用范围将会越来越广,它在游戏市场、嵌入式系统、并行应用、分布式计算等领域都有一定的优势。这个与众不同的处理器,目前除了被用在著名的 PS3 游戏机,还被用于 IBM 的 Blade Center QS22,目前世界上最快的超级计算机 Roadrunner 使用的也是 Cell 芯片。随着 Cell 相应 SDK 包的完善和改进,Cell 上的编程过程也会变得越来越简单和高效。 |
|
|
|
|
|