以前使用matlab

的时候,很多人都用过里面的并行工具箱,用的最多的应该就是parfor。实际上,matlab里面已经有不少工具箱里面都有了支持GPU加速的函数。使用matlab+GPU加速的前提是,机器必须安装了支持CUDA的显卡,而且CUDA驱动的版本在1.3以上。一些比较常用的函数

例如fft,ifft,三角函数,相关函数xcorr以及常用的运算符等等都可以进行加速。方法也很简单,主要使用到gpuArray和gather这两个函数。

以xcorr为例,假设我们要求向量A和B的互相关,一般是使用代码

M = xcorr(A,B)

以下是使用gpu加速的版本

Ag = gpuArray(A);

Bg = gpuArray(B);

Mg = xcorr(Ag,Bg);

M = gather(Mg);

一般的小矩阵可能感觉不出来,不过如果矩阵规模很大,而且在多次循环内部,这个区别就很明显了。mathwork的网站上有对xcorr的gpu加速效率的详细分析报告,基本上,随着矩阵规模扩大,gpu加速的倍数是直线上升。

除了相关函数,还有很多支持gpuArray数据类型的函数,具体可以用下面的指令查看

methods('gpuArray')

其中某个函数的说明可以用help查看

help gpuArray/functionname

上面的例子中,gpuArray是把数据转换为GPU处理的类型,存储到GPU的显存里。gather是将数据转移回来。除了将现有的矩阵转移到GPU中,gpuArray自带的方法还可以直接在GPU中创建数据:

gpuArray.ones

gpuArray.colon

gpuArray.zeros

gpuArray.rand

gpuArray.inf

gpuArray.randi

gpuArray.nan

gpuArray.randn

gpuArray.true

gpuArray.linspace

gpuArray.false

gpuArray.logspace

gpuArray.eye

这些方法的具体用法可以使用类似下面的命令寻求帮助

help gpuArray/eye

其实,用法和对应的普通函数的用法都是类似的。

II = gpuArray.eye(1024,'int32');

size(II)

1024 1024

还可以用下面的命令生成随机数

parallel.gpu.rng

parallel.gpu.RandStream

对于CPU和GPU产生随机数方法的比较,有兴趣的可以看这里。

最后,一些处理普通数据的函数也可以用来检测GPU数据的属性

Function

Description

classUnderlying

Class of the underlying data in the array

existsOnGPU

Indication if array exists on the GPU and is accessible

isreal

Indication if array data is real

length

Length of vector or largest array dimension

ndims

Number of dimensions in the array

size

Size of array dimensions

值得注意的是,GPU的数据是要存到显存里面的,显存可没有内存那么大,虽然maltab和CUDA为我们做了很多显存管理的工作,但是我们还是要保证处理的矩阵不会把显存撑爆。

matlab的工具箱支持GPU的情况

可以在下面的网页上查询

http://www.mathworks.cn/products/parallel-computing/builtin-parallel-support.html

其中对于图像处理来说有一个很有用的。我曾经的一篇博文

介绍过使用 blockproc 函数加速滑动窗。其实,这个函数还可以进一步被GPU加速,方法就是设置其中的 'UseParallel’ 变量。例子

下面是用gpu解波动方程的例子,cpu和gpu版本程序

进行对比,改动其实不太大,细节见参考中第四个网页

编译.CU文件

对于其他一些复杂的,无法用matlab内部函数进行GPU加速的代码,matlab还提供了一个更强大的工具,就是调用.cu文件。

熟悉matlab+c混合编程的都知道matlab可以把.c,.cc,.cpp等文件编译为能够使用的mex文件。对于CUDA程序.cu,matlab也提供了一套方法来调用,最终编译成.ptx文件。

MATLAB GPU加速相关推荐

  1. float gpu 加速_(总结篇)使用 MATLAB GPU 加速计算|MATLAB 并行计算与分布式服务器|MATLAB技术论坛...

    本帖最后由 蓝云风翼 于 2013-12-18 17:28 编辑 注: 利用gpu加速有一下工具 1.JACKET 可从帖子中寻找 2.MATLAB a.并行计算工具箱 gpuArray,查看支持gp ...

  2. MATLAB上的GPU加速计算

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

  3. Matlab 使用GPU加速 转载

    在matlab中使用GPU加速,来加速矩阵运算. 首先如前面所说,并不是所有GPU都能在maltab中进行加速的,貌似只有NVDIA的显卡可以吧. 硬件:GeForce GTX 980 软件:Matl ...

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

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

  5. matlab 中使用 GPU 加速运算

    为了提高大规模数据处理的能力,matlab 的 GPU 并行计算,本质上是在 cuda 的基础上开发的 wrapper,也就是说 matlab 目前只支持 NVIDIA 的显卡. 1. GPU 硬件支 ...

  6. Matlab 应用GPU加速

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

  7. Matlab之GPU加速方法

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

  8. Matlab的Gpu加速(CUDA cudnn)

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

  9. matlab gpu deep learning_优秀!这个库帮你使用GPU加速传统机器学习方法和Pandas数据处理...

    随着深度学习的火热,对计算机算力的要求越来越高.从2012年AlexNet以来,人们越来越多开始使用GPU加速深度学习的计算. 然而,一些传统的机器学习方法对GPU的利用却很少,这浪费了很多的资源和探 ...

最新文章

  1. matlab中的i=1 length,黄伟建:matlab for i=1:length(y) 什么意思
  2. 前端学习(3064):vue+element今日头条管理-展示频道处理
  3. java jsch 调用shell_Java-Jsch-Shell脚本执行后退出
  4. Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备
  5. Xeogl 基于 WebGL 的 3D 引擎
  6. 【数据分享】学生受欢迎程度评价数据集
  7. java 数据类型转换
  8. 全球15个免费卫星遥感数据源
  9. phpAdmin导入sql文件太大
  10. yum clean all 是什么意思
  11. storj主网挖矿指南
  12. MATLAB中实现图像的空间域滤波和频率域滤波
  13. JS的重绘(repaints)和重排(reflows)
  14. hashcat学习笔记0 安装与例子
  15. 对I2C总线时序的一点理解以及ACK和NACK(NAK)
  16. 编程语言居然是魔法咒语!
  17. 构建U盘启动的嵌入式linux
  18. bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士
  19. 计算机科学与技术 转
  20. 左移寄存器vhdl_8位移位寄存器vhdl代码

热门文章

  1. 数据结构之串:串的模式匹配
  2. 计算机网络之数据链路层:8、介质访问控制之信道划分介质访问控制
  3. VirtualAllocEx 跨进程读写数据 代码注入
  4. Java Map接口详解
  5. USACO-Section1.5 Arithmetic Progressions(枚举)
  6. kali 安装使用记录
  7. 树:二叉树的内存拷贝和内存释放
  8. 纱窗.20190512
  9. jQuery中的跨域问题
  10. Failed to read artifact ......明明之前可以的