利用Cell BE的SDK写小程序

1、在任意目录下新建文件夹hello,在此文件夹下建立ppu.c、Makefile文件和文件夹spu。

此文件夹下的Makefile:

 

 

解释:DIR,PROGRAM_ppu,IMPORTS,INSTALL_DIR,INSTALL_FILES,CELL_TOP这些变量都是在make.footer中定义的。运行程序的主要的Makefile文件就是make.footer,我们在ppu端和spu端写的Makefile文件都是在包括make.footer文件的基础上为变量赋几个值。写多线程程序必须加参数-lpthread。

 

ppu.c文件:

 

 

解释:pts[N]是线程号。spe[N]是指向线程上下文的指针,一般取spe_context_create函数的返回值。pthread_create函数中的第四个参数&spe[i]是最值得注意的一点,它是线程要执行的函数中传的参数,也就是说这个实参会传给函数void *my_spe_thread(void *arg)中的形参arg。这里的arg之所以是void *类型,是为了适应不同类型的地址传给它,在函数中最好再将arg强制类型转换成自己所需要的类型。spe_context_run函数中的参数arg就是传进来的指针。这里的传参是也可以传结构体的。pthread_join函数是用来线程同步的。

2、在spu文件夹下建立文件hello.c、Makefile。

Makefile文件:

 

hello.c文件:

 

解释:这里面hello.c文件中的形参speid, argp, envp其实是多余的。

 

在执行时,需要非常注意的一点是:可能是Makefile的原因,make时需要先运行spu文件夹下的Makefile文件,再运行hello文件夹下的Makefile文件。若指运行hello文件夹下的Makefile文件,会出现错误,不知为什么。

 

出现的错误是:make: *** 没有规则可以创建" ppu"需要的目标" spu/lib_hello.a" 。停止。

 

程序在运行时出现段错误,不知为什么,希望高人指点。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值