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

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变得很简单,就是赋值计算,取回。

原文地址:https://www.cnblogs.com/noah0532/p/8646376.html

时间: 2024-12-10 04:21:06

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

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

1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matlab-92865.html 2 数据.硬件和算法,MATLAB发展的方向 3 MATLAB并行计算工具的介绍 内嵌多线程(隐式) --MATLAB 内核函数和图像处理工具箱 --矩阵操作(linear algebra,fft,filter,etc) --无须代码修改 并行计算产品(显式) --Para

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

Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?char?抑或是numeric?将MWArray转化为对应的MW****Array并从MW****Array中获取所需的数据如何传递数据从MWArray到C#中的数字MWNumericArray中的数据可以转化为Byte.double.float.integer.long和short类型,一般常用的就是i

Matlab高级教程_第二篇:Matlab2016a和VS2013混合

1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 原文地址:https://www.cnblogs.com/noah0532/p/9834016.html

Matlab高级教程_第一篇:Matlab基础知识提炼_06

第十一节:图形操作 第十二节:文件的IO操作个格式化输出 原文地址:https://www.cnblogs.com/noah0532/p/8587031.html

Matlab高级教程_第一篇:Matlab基础知识提炼_05

第九节:矩阵的操作 第十节:数组与矩阵 linspace函数 原文地址:https://www.cnblogs.com/noah0532/p/8587030.html

ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ArcGIS for Desktop是ArcGIS产品线上的桌面端软件产品,为GIS专业人士提供的信息制作和使用的工具.利用ArcGIS for Desktop,你可以实现任何从简单到复杂的GIS任务,包括制图,地理分析,数据编辑,数据管理,可视化和空间处理等.它可以作为三个独立的软件产品购买,每个

chromium浏览器高级开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 获取depot_tools,解压,设置环境变量; gclient获取python和git,svn,设置环境变量: fetch–nohooks chromium –nosvn=true 获取源码: gclientsync --force

MongoDB基础教程系列--第二篇 MongoDB基本操作(一)

1.安装环境 在官网上下载MongoDB的最新版本,根据自身Windows版本下载正确的MongoDB版本.下载后,双击32位或者64位.msi文件,按操作提示安装就可以了. 说明: 32 位版本的 MongoDB 只支持 2G 以下的数据库,只适用于测试及评估. 在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统.最新版本也已经没有了 32 位系统的安装文件. 创建数据目录 安装完MongoDB以后,我们需要创建数据目录.注意,数据目录应该放在根目录下(如: C:\ 或

cocos2d-x 3.x游戏教程 - Eight 第二篇

游戏界面 上一篇已经做了个简陋的界面,调整一下,界面如下: 通过上一篇的介绍,相信做这个界面都不是什么难事了: 界面的组成元素主要有:图片(ImageView), 图集数字(TextAtlas) 连Sprite都不用了,就两个简单的UI元素,至于如何调整这些元素排列工整也要花点时间的,我就花了大概半个小时调整,需要按照各个元素的大小,然后通过手工调整和数学计算的方法调整好的,也不是什么难事,主要是时间活,大家自己琢磨一下就没问题的: 界面元素的组成结构如下 编程 接下来就可以编程了: - 首先导