一、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 编辑 ] |
|