在matlab中使用GPU加速,来加速矩阵运算。

首先如前面所说,并不是所有GPU都能在maltab中进行加速的,貌似只有NVDIA的显卡可以吧。

硬件:GeForce GTX 980

软件:Matlab 2015a  (Matlab 2012以后的版本才带有GPU加速的工具箱)

下面开始介绍怎么玩GPU加速

第一步:在matlab命令窗口,运行gpuDevice,查看自己的显卡是否具备GPU加速功能

gpuDevice

正常情况下matlab会输出如下结果代表具备GPU加速功能:

  CUDADevice with properties:Name: 'GeForce GTX 980'Index: 1ComputeCapability: '5.2'SupportsDouble: 1DriverVersion: 7.5000ToolkitVersion: 6.5000MaxThreadsPerBlock: 1024MaxShmemPerBlock: 49152MaxThreadBlockSize: [1024 1024 64]MaxGridSize: [2.1475e+09 65535 65535]SIMDWidth: 32TotalMemory: 4.2950e+09AvailableMemory: 3.3203e+09MultiprocessorCount: 16ClockRateKHz: 1380000ComputeMode: 'Default'GPUOverlapsTransfers: 1KernelExecutionTimeout: 1CanMapHostMemory: 1DeviceSupported: 1DeviceSelected: 1

第二步:CPU和GPU之间的数据交换,大致有如下几个函数和功能:

(1)、将数据从CPU中搬入GPU,函数:gpuArray,用法 M = gpuArray(M);

(2)、在GPU中计算完成后,将数据搬出到CPU存储,函数:gather,用法M=gather(M)。

下面给大家看看最简单的用法以及处理同样矩阵运算时的时间对比:

clear all
clc
M = rand(2000,2000);            % 生成一个随机矩阵
tic
[A1,B1] = eig(M);               % 求该随机矩阵的特征值和特征向量
t1=toc tic M = gpuArray(M); % 将数据从CPU中搬到GPU [A2,B2] = eig(M); % 求特征值和特征向量 A2 = gather(A2); % 将数据从GPU中搬到CPU t2 = toc

输出结果(运行时间对比):

t1 = 14.1483
t2 =  9.1567

总结:虽然加速不是特别明显,不过还是非常给力的,需要说明的是,一般的GPU对于单精度型的数据运算加速更明显一点,因此我们在编写代码时,最好能够将数据从double型转换为single型,即M=single(M),然后在使用M=gpuArray(M),将数据搬迁到GPU进行计算,下面看看转换为单精度型后的时间对比:

clear all
clc
M = rand(2000,2000);            % 生成一个随机矩阵
tic
[A1,B1] = eig(M);                    % 求该随机矩阵的特征值和特征向量
t1=toctic
M = single(M);                     % 将数据转换为单精度型
M = gpuArray(M);                % 将数据从CPU中搬到GPU
[A2,B2] = eig(M);                 % 求特征值和特征向量
A2 = gather(A2);                 % 将数据从GPU中搬到CPU
t2 = toc

运行结果:

t1 =  14.8332
t2 =   5.0963

GPU对eig和svd进行加速,和cpu运行时间对比

clear all
A = rand(2000,2000);
tic
A1 = gpuArray(single(A));
[U,S,V] = svd(A1,'econ');
A2 = U*S*V';
A3 = gather(A2);
t = toc
tic
[U1,S1,V1] = svd(A,'econ');
A4 = U1*S1*V1';
t2 = tocerror = norm(A3-A4,'fro')tic
A1 = gpuArray(single(A));
[vv,dd] = eig(A1);
t3 = toc

结果:

t =    3.1564
t2 =    7.1644
error =    0.0032
t3 =    5.2244
t4 =   17.6389

  

 

是不是加速更明显了呢?  

注:1、单精度型初始化矩阵函数例:X=rand(10,'single');  %定义在CPU上的一个10x10的随机初始化数组 

2、直接在GPU中初始化矩阵例:GX=rand(10,'gpuArray');   %直接在GPU设备上随机初始化一个10x10的数组 

  3、判断数据DATA是否存在于GPU内存中例:TF=existOnGPU(DATA)

4、计算效率统计例:t=gputimeit(F,N)         %返回执行F操作N次所需的时间,当N=1时可以缺省 

转载于:https://www.cnblogs.com/phyzrx/p/7475201.html

Matlab 使用GPU加速 转载相关推荐

  1. Matlab之GPU加速方法

    Matlab之GPU加速方法 Matlab之GPU加速方法 一般代码加速方法 GPU设备确认 GPU和CPU之间数据传递 复杂代码加速方法 一般代码加速方法 Matlab目前只支持Nvidia的显卡. ...

  2. Matlab的Gpu加速(CUDA cudnn)

    多CUDA版本的切换,及Matlab版本对应的CUDA版本 学习笔记–Matlab的Gpu加速 安装CUDA和cudnn时,踩了不少坑,总结如下几个经验: 1.显卡驱动的版本与CUDA是一对多的关系, ...

  3. Matlab 应用GPU加速

    由于GPU近几年地迅速发展,GPU在多线程计算等方面逐渐超越CPU成为计算的主力军.而Matlab是常用的数学应用软件,现在讲解一下如何在Matlab中使用GPU加速计算 文章目录 0. 必要条件 1 ...

  4. matlab win10 gpu加速,win10怎么开启gpu加速有用吗 GPU硬件加速设置方法介绍

    win10怎么开启gpu加速有用吗 GPU硬件加速设置方法介绍 作为Windows 10的一项重要功能,微软在分享了GPU硬件加速细节后,现在还为大家送上了开启它的技巧,对于中低端设备来说,提升效果还 ...

  5. MATLAB使用GPU加速计算

    先上结论 1.对于特征值运算eig()函数来说,GPU的加速效果是很明显的 2.如果要求精度不高,采用单精度计算,加速效果更加明显 首先查看自己的电脑是不是支持GPU计算 在matlab的终端中输入: ...

  6. matlab win10 gpu加速,win10的Edge浏览器设置GPU硬件加速,大幅度提升浏览器性能

    不知道大家对于GPU硬件加速是否有了解,这是现在的浏览器必备的功能,开启后能大幅度提升浏览器的性能,给我们更加顺滑的浏览体验.GPU硬件加速能够利用GPU的图形性能,加速渲染网页中的图像信息. 如果我 ...

  7. matlab win10 gpu加速,大师讲解win10硬件加速gpu计划开启方法的详尽处理方式

    要是你在用系统的时候遇到了win10硬件加速gpu计划开启方法的情况你会怎么办呢?我们通过调查发现不少用户都碰到了win10硬件加速gpu计划开启方法的问题,我们来看看怎么解决win10硬件加速gpu ...

  8. MATLAB上的GPU加速计算

    概述 怎样在MATLAB上做GPU计算呢?主要分为三个步骤:数据的初始化.对GPU数据进行操作.把GPU上的数据回传给CPU 一.数据的初始化 首先要进行数据的初始化.有两种方法可以进行初始化:一是先 ...

  9. MATLAB上的GPU加速计算——学习笔记

    MATLAB目前只支持Nvidia的显卡.如果你的显卡是AMD的或者是Intel的,就得考虑另寻它路了. MATLAB可谓工程计算中的神器,一方面它自带丰富的函数库,另一方面它所有的数据都是内建的矩阵 ...

最新文章

  1. Qt使用教程:使用Qt Quick UI表单(五)
  2. python中变量类型在程序中可以改变_python的可变与不可变数据类型
  3. 私有属性和方法-伪私有属性和方法
  4. Linux操作Oracle(8)——Oracle数据库迁移全纪录(1) — 表空间 用户 权限迁移
  5. C++冒泡排序(正宗版)
  6. Android第三十八天
  7. AttributeError: module ‘tensorflow‘ has no attribute ‘ConfigProto‘
  8. 【图像加密】图像加密解密含Matlab源码
  9. 大屏幕显示屏 html,在大屏幕上显示墙的三种解决方案
  10. 5-1 厘米换算英尺英寸 (15分)
  11. maskrcnn-benchmark安装过程
  12. WebStrom代码中出现浅黄色背景
  13. 如何检测本计算机耗电量,如何查看我的电脑到底费不费电?
  14. java中的toArray()
  15. LDO线性稳压电源PCB布局布线
  16. ArcGIS学习网站
  17. 23种设计模式常用模式
  18. windows系统C盘空间满了?两步让你多出来10个多G!
  19. Python网络爬虫实战案例之:7000本电子书下载(2)
  20. css美化下拉框select

热门文章

  1. 使用Java中的Try-With-Resource
  2. 随机森林分类器_建立您的第一个随机森林分类器
  3. C语言那点事——如何从零学好C语言?
  4. 迪信通机器人_迪信通要做机器人 玩票还是另有深意?
  5. python查看文档的软件_Python __doc__属性:查看文档
  6. 自然水体辐射特性与数值模拟 pdf_OpenGMS系列讲座(十三)汪亚平教授:南黄海水动力过程和辐射沙脊群演化...
  7. 软件测试面试选择判断提,软件测试面试常考判断题
  8. 【theano-windows】学习笔记九——softmax手写数字分类
  9. JAVA 框架-Spring-AOP面向切面
  10. POJ 1811 Prime Test (Rabin-Miller强伪素数测试 和Pollard-rho 因数分解)