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

文章目录

  • 0. 必要条件
  • 1.给GPU传输数据
    • 1.1 CPU的数据复制到GPU
    • 1.2 直接在GPU上设置数据:
  • 2.数据在GPU上运算
  • 3.GPU数据回传
  • 4.使用技巧
    • 4.1 如果没有并行计算不建议使用GPU
    • 4.2 如果没有Nvidia显卡或者显卡驱动
    • 4.3 双精度尽量转换为单精度
  • 附录

0. 必要条件

要想在Matlab中使用GPU加速有两个必须的条件

  1. 计算机上安装了NVIDIA显卡,目前AMD与Intel显示是暂不支持的;
  2. 安装NVIDIA显卡驱动。

1.给GPU传输数据

1.1 CPU的数据复制到GPU

在使用GPU计算的时候,只需要将CPU的数据复制到GPU中即可。

G = gpuArray(M);

上边是对数据的名称做了修改,也可以直接进行重新赋值。

M = gpuArray(M);

1.2 直接在GPU上设置数据:

A = zeros(10, 'gpuArray');

可以对0矩阵以及1矩阵直接进行复制,但是在程序后边需要标注使用gpuArray。

r = gpuArray.rand(1, 100) % 一行,一百列

随机矩阵的产生。

2.数据在GPU上运算

在GPU可以正常运行基本的运算,与正常矩阵计算方法相同

A=abs(A);

具体的可以运行的运算可以使用命令

methods(gpuArray)

进行查看,Matlab可以在GPU运行的具体运算可以查看附录,附录中是Matlab给出的结果。

3.GPU数据回传

B = gather (A);

直接使用上边的命令就能够将GPU中的数据回传给CPU。

4.使用技巧

4.1 如果没有并行计算不建议使用GPU

index = 0;
index = gpuArray(index);
for i = 1 : 10000ticfor j = 1 : 100000index = index + 1;endtoc
end
disp(index)

通过上边程序第二行程序就可以在GPU上运行,注释掉就会在CPU上运行。在我的电脑上运行时间如下表所示。

设备 CPU GPU
时间 0.00010 s 1.973017 s

由此可以看出,单个线程运行程序还是建议在CPU上运行,CPU的主频还是高一点,GPU主要是支持多个线程同时运行。

4.2 如果没有Nvidia显卡或者显卡驱动

如果没有Nvidia显卡或者显卡驱动,会显示下边的提示。

4.3 双精度尽量转换为单精度

在条件允许的情况下,尽量将计算过程中双精度转换为单精度。因为在GPU中单精度的计算速度明显优于双精度,在时间上会有很大的缩减。
附:单精度与上精度区别

数据类型 大小(字节) 取值范围 保留有效位数
单精度 4个字节(32位) 3.4E-38~3.4E+38 7位
双精度 8个字节(64位) 1.7E-308~1.7E+308 16位

参考:
Measuring GPU Performance - MATLAB & Simulink Example - MathWorks 中国

MATLAB上的GPU加速计算——学习笔记 - CSDN博客

附录

>> methods(gpuArray)Methods for class gpuArray:abs                   eq                    ipermute              quiver3
accumarray            erf                   iradon                rad2deg
acos                  erfc                  isaUnderlying         radon
acosd                 erfcinv               isbanded              rdivide
acosh                 erfcx                 isdiag                real
acot                  erfinv                isempty               reallog
acotd                 errorbar              isequal               realpow
acoth                 existsOnGPU           isequaln              realsqrt
acsc                  exp                   isequalwithequalnans  reducepatch
acscd                 expint                isfinite              reducevolume
acsch                 expm                  isfloat               regionprops
all                   expm1                 ishermitian           rem
and                   eye                   isinf                 repelem
angle                 ezcontour             isinteger             repmat
any                   ezcontourf            islogical             reshape
applylut              ezgraph3              ismember              rgb2gray
area                  ezmesh                ismembertol           rgb2hsv
arrayfun              ezmeshc               isnan                 rgb2ycbcr
asec                  ezplot                isnumeric             ribbon
asecd                 ezplot3               isocaps               roots
asech                 ezpolar               isocolors             rose
asin                  ezsurf                isonormals            rot90
asind                 ezsurfc               isosurface            round
asinh                 factorial             isreal                scatter
assert                false                 issorted              scatter3
atan                  feather               issparse              sec
atan2                 fft                   issymmetric           secd
atan2d                fft2                  istril                sech
atand                 fftfilt               istriu                semilogx
atanh                 fftn                  kmeans                semilogy
bandwidth             fill                  knnsearch             setdiff
bar                   fill3                 ldivide               setxor
bar3                  filter                le                    shiftdim
bar3h                 filter2               legendre              shrinkfaces
barh                  find                  length                sign
besselj               fix                   line                  sin
bessely               flip                  linspace              sind
beta                  flipdim               log                   single
betainc               fliplr                log10                 sinh
betaincinv            flipud                log1p                 size
betaln                floor                 log2                  slice
bicg                  fplot                 logical               smooth3
bicgstab              fprintf               loglog                sort
bicgstabl             full                  logspace              sortrows
bitand                gamma                 lsqr                  sparse
bitcmp                gammainc              lt                    spfun
bitget                gammaincinv           lu                    spones
bitor                 gammaln               mat2gray              sprand
bitset                gather                mat2str               sprandn
bitshift              ge                    max                   sprandsym
bitxor                gmres                 mean                  sprintf
bsxfun                gop                   medfilt2              spy
bwdist                gpuArray              mesh                  sqrt
bwlabel               gradient              meshc                 stairs
bwlookup              gt                    meshgrid              std2
bwmorph               head                  meshz                 stdfilt
cast                  hist                  min                   stem
cat                   histc                 minres                stem3
cconv                 histcounts            minus                 stream2
cdf2rdf               histeq                mldivide              stream3
ceil                  histogram             mod                   streamline
cgs                   horzcat               mode                  streamparticles
chol                  hsv2rgb               movmean               streamribbon
circshift             hypot                 movstd                streamslice
clabel                idivide               movsum                streamtube
classUnderlying       ifft                  movvar                stretchlim
comet                 ifft2                 mpower                sub2ind
comet3                ifftn                 mrdivide              subsasgn
compass               im2double             mtimes                subsindex
complex               im2int16              nan                   subspace
cond                  im2single             ndgrid                subsref
coneplot              im2uint16             ndims                 subvolume
conj                  im2uint8              ne                    sum
contour               imabsdiff             nextpow2              superiorfloat
contour3              imadjust              nnz                   surf
contourc              imag                  nonzeros              surfc
contourf              image                 norm                  surfl
contourslice          imagesc               normest               svd
conv                  imbothat              normxcorr2            svds
conv2                 imclose               not                   swapbytes
convn                 imcomplement          nthroot               symmlq
corr2                 imdilate              null                  tail
corrcoef              imerode               num2str               tan
cos                   imfill                numel                 tand
cosd                  imfilter              nzmax                 tanh
cosh                  imgaussfilt           ones                  tfqmr
cot                   imgaussfilt3          or                    times
cotd                  imgradient            padarray              transpose
coth                  imgradientxy          pagefun               trapz
cov                   imhist                pareto                tril
csc                   imlincomb             patch                 trimesh
cscd                  imnoise               pcg                   trisurf
csch                  imopen                pcolor                triu
ctranspose            imreconstruct         pdist                 true
cummax                imregdemons           pdist2                typecast
cummin                imregionalmax         permute               uint16
cumprod               imregionalmin         pie                   uint32
cumsum                imresize              pie3                  uint64
curl                  imrotate              planerot              uint8
deg2rad               imrotate_old          plot                  uminus
del2                  imshow                plot3                 union
det                   imtophat              plotmatrix            unique
detectFASTFeatures    ind2sub               plotyy                uniquetol
detectHarrisFeatures  inf                   plus                  unwrap
detrend               inpolygon             polar                 uplus
diag                  int16                 poly                  var
diff                  int2str               polyder               vertcat
discretize            int32                 polyfit               vissuite
disp                  int64                 polyval               volumebounds
display               int8                  polyvalm              voronoi
divergence            interp1               pow2                  waterfall
dot                   interp2               power                 xcorr
double                interp3               prod                  xor
edge                  interpn               psi                   ycbcr2rgb
eig                   interpstreamspeed     qmr                   zeros
end                   intersect             qr
eps                   inv                   quiver                Static methods:colon                 rand                  randperm
freqspace             randi                 speye
loadobj               randn

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加速 转载

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

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

  9. matlab 中使用 GPU 加速运算

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

最新文章

  1. 软件版本中 release stable alpha beta pre snapshot 区别
  2. 创建分区表+分区表的分类+创建散列分区表+查看散列分区表分区中的数据+创建列表分区表+查看列表分区表分区中的数据...
  3. Git 之一 起源、安装、配置
  4. java 程序迁移后oracle 数字溢出_Spring Boot 应用迁移到 Java 11
  5. BDI Agent模型结构
  6. [转载] PGPool介绍和安装经验
  7. 我年薪百万,孩子教育花掉一半
  8. java获取动态天气api,java调用中国天气网api获得天气预报信息
  9. javascript/jquery给动态加载的元素添加click事件
  10. Spring Data JPA整合Redis缓存的配置
  11. 选择JSF不选Struts的十大理由
  12. 解读四大应用场景,神策分析云之 LTV 分析模型抢先体验
  13. 【数据结构】NOJ016—计算二叉树叶子结点数目
  14. [论文阅读笔记29]生物医学文本摘要(Biomedical Text Summarization)
  15. tfidf算法 python_Python TFIDF计算文本相似度
  16. Python爬取虎扑NBA球员信息
  17. 机器视觉:高动态范围图像
  18. 【字符集五】c++标准库<locale>
  19. 小手一敲,让JS Map现原形
  20. Mysql update from 使用

热门文章

  1. 传奇3的WIL文件格式
  2. 现今活跃在信息技术领域的卓越作者--张亚飞新作上市
  3. Redis高级应(2)-事务以及LUA脚本
  4. font-face使用的web字体格式介绍、浏览器兼容和字体转换
  5. 批量修改文件名字、不同的目录下
  6. UE4 自建基础玩家时重力的设置
  7. 阿里巴巴三面总结,讲一讲从P5到P8需要掌握的知识点,本人已成功入职。
  8. w ndows10怎么关闭启动项,开机启动项怎么设置?Win10启动项修改技巧
  9. 月亮搭配忧郁蓝色系海报设计模板
  10. 安盎顺汲称叫蒲惺勤狙陡邮可王大胖,从小就和他这个堂弟要好,听了此事,当然不肯罢休,找上