1  MATLAB原文:

  如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收。

2  通过gpuDevice命令观察当前电脑的GPU设备

>> gpuDevice
ans =
CUDADevice (具有属性): Name: 'GeForce GT 430' % GPU设备的型号
Index: 1  % 当前GPU设备的编号
ComputeCapability: '2.1' % 计算能力
SupportsDouble: 1  %知否支持双精度运算
DriverVersion: 8  % Cude驱动版本
ToolkitVersion: 7.5000  % 工具版本
MaxThreadsPerBlock: 1024  % 每个Block的最大线程数目
MaxShmemPerBlock: 49152  % 每个Block可用的最大shared内容
MaxThreadBlockSize: [1024 1024 64]  %单个Block支持x,y,z三个方向的最大值
MaxGridSize: [65535 65535 65535]  %最大的grid大小
SIMDWidth: 32  %Warp大小
TotalMemory: 1.0737e+09  %GPU设备全部内存大小
AvailableMemory: 799592448  %GPU设备可分配内存大小
MultiprocessorCount: 2  %GPU设备处理器个数(同CPU处理器个数相同,这是双核GPU)
ClockRateKHz: 1500000  % 时钟频率多少赫兹
ComputeMode: 'Default'  %计算模式
GPUOverlapsTransfers: 1  
KernelExecutionTimeout: 1
CanMapHostMemory: 1
DeviceSupported: 1  %本机MATLAB支持的GPU设备个数
DeviceSelected: 1  %当前选择GPU设备编号。

3  通过gpuDevice(index)编号选择第几个GPU处理器进行数值运算。

4  创建GPU数值阵列(最简单的一种复制和提取应用)

  通过gpuArray函数完成,通过gather函数回收运算或复制的GPU数据:

x = rand(3,3);
B = gpuArray(x);
whos B
% whos B % 返回GPU赋值后的对象
% Name Size Bytes Class Attributes
%
% B 3x3 4 gpuArray X1 = gather(B); % 把GPU中的值在收回来,赋值一个变量
x - X1;
% x - X1 % 结果为0,表示过程正确
% ans =
% 0 0 0
% 0 0 0
% 0 0 0

5  对应的创建GPU数值阵列有一些其他的GPU函数,与常用的MATLAB函数一样,只不过加上gpuArray字符说明,就可以转换成GPU数值阵列。常用的这些函数有两种方式,而且可以函数名来作为定放的位置,分别如下:

eye(___,'gpuArray')	rand(___,'gpuArray')
false(___,'gpuArray') randi(___,'gpuArray')
Inf(___,'gpuArray') randn(___,'gpuArray')
NaN(___,'gpuArray') gpuArray.colon(值)
ones(___,'gpuArray') gpuArray.freqspace(值)
true(___,'gpuArray') gpuArray.linspace(值)
zeros(___,'gpuArray') gpuArray.logspace(值)
gpuArray.speye(值)

6  其他的创建GPU数值阵列的函数可以用帮助的方式取查看

  help gpuArray.methodname(methodname就是想要查看的函数)

7  还有操作GPU数据的函数常用的有:

classUnderlying(___,'gpuArray')     gupArray.classUnderlying(值) % gpu数值阵列数据元素类型
isreal(___,'gpuArray') gupArray.isreal(值) % 判断gpu数值阵列数据元素是否为实数
length(___,'gpuArray') gupArray.length(值) %gpu数值阵列最后一维的数据长度
ndims(___,'gpuArray') gupArray.ndims(值) %gpu数值阵列的尾数
size(___,'gpuArray') gupArray.size(值) %gpu数值阵列各维大小

8  常用的还有这些

9  其实GPU变得很简单,就是赋值计算,取回。

Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序的更多相关文章

  1. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

    1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...

  2. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2

    1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...

  3. Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器

    MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...

  4. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题

    1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...

  5. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_全局变量的妙用_遍历穿透

    1 比如我这边写了一个函数,这个函数中有一个变量作为参数,给定这个参数一个值,然后这个函数返回给我一个值.但是,我写这函数的时候,这个传参我不写到函数里面.可以通过全局变量的方式进行在外部穿透遍历. ...

  6. Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题

    1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...

  7. Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换

    1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...

  8. Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)

    1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...

  9. Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换

    Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...

随机推荐

  1. 干货|浅谈iOS端短视频SDK技术实现

    短视频SDK主要包含"视频录制"和"视频编辑"这两个核心功能. 视频录制包括:视频采集.美颜.滤镜.摄像头切换.视音频采集参数设置等功能: 视频编辑包括:视频导 ...

  2. POJ 1260:Pearls 珍珠DP

    Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7947   Accepted: 3949 Descriptio ...

  3. 越南CTF的crypto 100

    自己做CTF还是没有经验,本来以为crypto更多应该是python编程的,结果这个100的题目是Do you love Arithmetic? 打开文件来看内容是 # charset = " ...

  4. xv6的启动过程

    bootloader 1. bootasm.S : start32 2. bootmain.c : bootmain kernel 3. main.c : main 4. proc.c : useri ...

  5. mac item2自定义光标移动快捷键,移动行首行尾,按单词跳转

    To jump between words and start/end of lines in iTerm2 follow these steps: iTerm2 -> Preferences ...

  6. dac oracle

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  7. centos7-vsftp(虚拟用户)

    要求如下: 1.所有用户主目录为/var/www宿主为virtual用户: 2.ftpuser1用户只能下载不能上传以及删除文件重命名操作: 3.ftpuser2可以下载与上传文件以及删除重命名操作: ...

  8. 2019年春PAT甲级考试

    这次考试不是很理想,一道题目没能做完. 自己原因差不多三条: 1.自己实力不够,准备时间也有点仓促,自己没能做到每道题目都有清晰的思路. 2.考试的心理素质不行,因为设备原因东奔西跑浪费了挺多时间,自 ...

  9. Linux CMD 笔记 & 正则表达式

    一.linux bash 1. 进程名查找kill ps -ef | grep xxxx| grep -v grep| cut -c 9-15 | xargs kill -9 2.端口号kill 占用 ...

  10. gradle配置多个代码仓库repositories

    repositories { mavenCentral() maven { url "https://jitpack.io" } maven { url "http:// ...