分享

GPU——JACKET 编程介绍

 lzqkean 2013-09-11
 一、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 编辑 ]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多