Board logo

标题: Cell 编程登堂入室(3)向量化编程实现及简单分析 [打印本页]

作者: look_w    时间: 2018-5-23 16:14     标题: 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 上的编程过程也会变得越来越简单和高效。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0