一、JACKET 函数 JACKET与MATLAB整合
一旦JACKET安装完,它集成了透明的MATLAB的用户界面,用户可以通过交互的MATLAB桌面和命令窗口以及写M -函数使用MATLAB编辑器和调试器方式开始GPU工作。所有Jacket数据以及任何其他MATLAB的矩阵在MATLAB的工作空间都是可见的。
Jacket GPU提供了MATLAB的CPU数据类型,如实数,复数的双精度,单精度数据, 无符号32位整数,32位整数, 逻辑数据类型等等。任何变量在主机(CPU)的内存,可转换为存储在JACKET的GPU的数据类型。JACKET的内存管理系统在GPU上的这些变量自动分配和管理。而在幕后,基于GPU的数据调用的函数将自动执行,实现动态编译,在GPU上无须任何额外的编程。
任何函数调用在JACKET的GPU矩阵结果都会使计算加快,Jacket's 核心价值之一是为matlab用户提供透明的操作,唯一你要知道的是将MATLAB的数据结构转换为GPU的数据结构。
1.1 基础函数库
Jacket 函数 描述 例子
GSINGLE 施放一个MATLAB矩阵到GPU的单精度浮点矩阵 A = gsingle(B);
GDOUBLE 施放一个MATLAB矩阵到GPU的双精度浮点矩阵 A = gdouble(B);
GLOGICAL 施放一个MATLAB矩阵到二进制GPU的矩阵。所有非零值都设置为'1'。输入矩阵可以是GPU或CPU的数据类型 A = glogical(B);
A = glogical(0:4);
GINT8, GUINT8, GINT32, GUINT32 施放一个MATLAB的矩阵符号和无符号8位或32位整数的到GPU矩阵 A = gint8(B);
A = guint8(B);
A = gint32(B); A = guint32(B);
GZEROS 创建一个GPU的零矩阵函数 A = gzeros(5); A = gzeros(2,6);
GONES 创建一个类似ONES 的GPU矩阵函数 A = gones(5);
A = gones([3 9]);
GEYE 创建一个类似EYE 的GPU矩阵函数 A = geye(5); GRAND 创建一个类似RAND 的GPU矩阵函数. A = grand(5);
GRANDN 创建一个类似RANDN 的GPU矩阵函数 A = grandn(5);
一旦GPU的数据结构已经建立,该GPU矩阵的任何操作都只能在GPU上进行,而不能在CPU上,要返回CPU计算, 必须转换回CPU类型。
A = gsingle( B ); %将CPU的B矩阵转换为单精度GPU类型 B = double( A ); %将GPU的A矩阵转换为双精度CPU类型 附加的GPU类型
Jacket 函数 描述 举例
GHELP 检索的任何JACKET支持的MATLAB函数信息. ghelp sum;
GACTIVATE 用于JACKET 手动激活 gactivate; GVER 查询MATLAB和工具箱版本,JACKET版本cuda信息 gver;
GVERSION 输出夹克版本和版本的修订号。 gversion; GINFO 查看JACKET 的相关信息以及图像显卡驱动情况 ginfo;
GSELECT 选择或查询的图形处理器中使用 gselect(0); GFOR 执行在GPU上的并行循环 gfor n = 1:10; % loop body
gend;
GCOMPILE 编译的M -代码直接到一个CUDA内核。 my_fn=gcompile('filename.m');
[B C ...] = my_fn(A)
GPROFILE 测试JACKET的代码执行效率情况 gprofile on; foo;
gprofile off; gprofile report;
GPROFVIEW 视觉表征的分析数据。 gprofview; GEVAL 返回值在GPU中 geval;
GSYNC 阻止,直到所有排队的GPU计算已完成。 gsync(A);
GLAUNCH 原型,执行和基准的CUDA内的M -文件的内核 glaunch;
GMEX 编译GPU启用mex的jacket SDK的文件 (在Windows中) gmex [options] source.cu;
GCACHE 保存为特定的GPU编译MATLAB的脚本代码 gcache;
GLOAD 直接从磁盘加载到GPU上。需要JACKET的SDK gload('filename');
GSAVE 直接从GPU上保存数据到磁盘作为文本文件。需要JACKET SDK. gsave('filename', A);
GREAD 在选项指定字节范围直接从磁盘加载到图形处理器,要求JACKET SDK. gread('filename', OFFSET, BYTES);
GWRITE 选择指定字节范围直接从GPU保存数据到磁盘,需要JACKET的SDK. gwrite('filename', OFFSET, DATA);
Graphics Library 函数中包含的图形库 gplot(A);
例子:gsync; % 确保GPU内核同步开始 tic; for i = 1:n
a = a .* a; % 计算 end
geval(a); % 确保计算
gsync; % 等待GPU的完成执行 toc; 不等式符号
A < B lt(A, B) A > B gt(A, B) A <= B le(A, B) A >= B ge(A, B) A == B eq(A, B) A ~= B ne(A, B)
A & B and(A, B) A | B or(A, B) ~A not(A) JACKET 计时函数tic/toc.
JACKET包含两个重要的功能是利用GPU的代码计时,用MATLAB的tic/toc. 由于JACKET的懒惰执行,必须使用gsync和geval以确保Gpu在执行toc之前运行完。
[ 本帖最后由 蓝云风翼 于 2011-1-24 15:42 编辑 ]
因篇幅问题不能全部显示,请点此查看更多更全内容