搜索
您的当前位置:首页GPU——JACKET编程介绍

GPU——JACKET编程介绍

来源:智榕旅游
GPU——JACKET编程介绍

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Top