MATLAB上的GPU加速计算——学习笔记
来源:互联网 发布:淘宝天弘基金怎么赎回 编辑:程序博客网 时间:2024/05/21 17:54
MATLAB目前只支持Nvidia的显卡。如果你的显卡是AMD的或者是Intel的,就得考虑另寻它路了。
MATLAB可谓工程计算中的神器,一方面它自带丰富的函数库,另一方面它所有的数据都是内建的矩阵类型,最后画图也方便,因此解决一些小规模的计算问题如果对性能要求不高的话开发效率远大于C++ FORTRAN之类传统手段。不过受限于PC的计算能力,对于一些大规模数据处理它就力不从心了。还好最近Matlab开发了cuda的wrapper,计算能力因而上升了一个数量级。
那么怎样在MATLAB上做GPU计算呢?
首先要进行数据的初始化。有两种方法可以进行初始化:一是先在CPU上设置好数据然后拷贝到GPU;二是直接在GPU上初始化数据。先看看第一种方案:
N = 6;
M = magic(N);
G = gpuArray(M);
可见把数据从CPU拷贝到GPU上非常简单,只要B = gpuArray (A)就可以了。实际上MATLAB并没有规定一个矩阵定义之后不能改类型,所以以下也是可以的:
M = gpuArray(M);
有时候GPU受限于硬件架构,单精度的计算远快于双精度。这时候可以考虑在拷贝的时候顺便转换一下精度:
A = gpuArray(single(B));
如前所述,第二种方法是直接在GPU上设置数据:
A = zeros(10, 'gpuArray');
这时候运行size函数:
size (A)
得到 100 100。所以A其实是一个二维数组。
也可以生成一个一维的随机数组:
r = gpuArray.rand(1, 100) % 一行,一百列
运行class函数:
class(r)
得到
ans = gpuArray。可见这是一个在gpu上的数组。
下面就是对GPU数据进行操作。首先,MATLAB定义了GPU上丰富的库函数,比如快速傅立叶变换:
这样result就是另一个GPU上的数组,存储了对r做fft的结果。
加减乘除更不在话下:
r2 = (real(result) + r ) / 2
作用是对result取实部之后加r再除以2.这里r2, r, result都是GPU上的数组。方便吧?
最后是如何把GPU上的数据回传给CPU:
B = gather (A);
其中A是GPU上的数据,B是CPU上的数据。B的内容在回传之后等于A。
并不是所有的电脑都可以用MATLAB进行GPU加速计算。想知道自己的电脑有没有这个能力,运行gpuDevice:
>> gpuDevice
ans =
MATLAB目前只支持Nvidia的显卡。如果你的显卡是AMD的或者是Intel的,就得考虑另寻它路了。
MATLAB目前只支持Nvidia的显卡。如果你的显卡是AMD的或者是Intel的,就得考虑另寻它路了。
1 0
- MATLAB上的GPU加速计算——学习笔记
- Matlab编程的GPU加速
- 什么是 GPU 加速的计算?
- 使用 GPU 加速计算
- 了解GPU加速计算
- 【Python - GPU】基于Python的GPU加速并行计算 -- pyCUDA
- 利用GPU实现Matlab加速
- Matlab之GPU加速方法
- matlab中利用GPU加速仿真的配置
- GPU加速计算-工具介绍
- 如何建立一个GPU加速的研究计算集群(一)
- 【学习笔记-图像拼接】基于GPU加速的大尺寸图像拼接
- GPU上大规模稀疏矩阵特征值计算高效算法之一——GPU介绍
- matlab中使用CUDA kernel GPU加速
- matlab 中使用 GPU 加速运算
- matlab学习笔记 数值计算
- Matlab学习笔记--数值计算
- Matlab学习笔记--符号计算
- const mutable 等的作用
- Appium搭建
- Swift-可空链式调用
- 使用Consul打造弹性可扩展的PaaS平台
- C# ~ 从 XML 到 Linq 到 Linq to XML
- MATLAB上的GPU加速计算——学习笔记
- Android 开发工具下载网址
- 使用ESESC对功耗和温度进行仿真
- 按键定时扫描——有限状态机的软件实现方法(上)
- Swift-条件语句
- Android 弹款点击空白处不消失
- c++作业5
- Python中的Numpy、SciPy、MatPlotLib安装与配置
- BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇