高性能计算

ps3编译blas程序

2010年4月24日 阅读(36)

cell上的编译命令:
 /usr/bin/ppu32-gcc -o blas_dblat1  blas_dblat1.o  -Wl,-rpath  /usr/lib    -L/opt/cell/sdk/usr/lib -R/opt/cell/sdk/usr/lib  -m32 -Wl,-m,elf32ppc /usr/lib/libblas.so   -lspe2 -lm -lnuma

注意malloc和free内存使用的头文件及函数
#include <malloc_align.h>
#include <free_align.h>

data_ptr_y = (DTYPE *) _malloc_align( entries_y * sizeof( DTYPE ), 7 ) ;   
_free_align( inp.sx ) ;

需函数库对其进行封装。

异构函数库面临的需要解决的问题:
1.通信的异构,节点字节序,对齐,类型大小不同,
2.源程序使用的头文件,库文件不同,生成的可执行文件不同,使用的函数接口定义可能不同
3.节点处理能力不同 适合处理的运算不同
其中通信的异构,节点字节序,对齐,可以由底层通信库屏蔽,类型大小需要函数库提供封装支持;
头文件 库文件 可执行文件可以由ide屏蔽,函数接口则由库wraaper;
节点处理能力 运算类型 由库提供接口进行管理及优化。

hetelib及其example在cell上的编译方法:

拷贝之后,需要修改的内容,/home/duanple/hete_show/hete_lib/src
的Makefile.in加入-I/opt/cell/sdk/usr/include/

hete_comm下的compile_config.h的#define PLATFORM_TYPE PLATFORM_CELL_TYPE:
cd hete_comm
vim compile_config.h

example,编译直接先采用
mpicc data_plot.c  -Wl,-rpath  /usr/lib    -I/opt/cell/sdk/usr/include/ -L/opt/cell/sdk/usr/lib -R/opt/cell/sdk/usr/lib  -m32 -Wl,-m,elf32ppc /usr/lib/libblas.so  /home/duanple/hete_show/hete_lib/src/hetelib.a  -lspe2 -lm -lnuma

为何在ps3上测试blas库cblas_daxpy还不如我的pc机跑的快?
查看cellsdk的doc,/opt/cell/sdk/docs/index.html
BLAS Programmer’s Guide and API Reference可以发现其实目前只有提供了部分blas接口基于spe的优化实现
  The following routines have been optimized to use SPEs and are available as PPE
具体支持的函数参考该文档.
如果想得到更优化的性能,必须使用:  SPE APIs.
具体方法参考该文档.

You Might Also Like