团队氛围建设 网站,建设网点查询附近,怎么做网站首页关键词,8小8x在线免费观看2021在matlab中使用GPU加速#xff0c;来加速矩阵运算。 首先如前面所说#xff0c;并不是所有GPU都能在maltab中进行加速的#xff0c;貌似只有NVDIA的显卡可以吧。 硬件#xff1a;GeForce GTX 980 软件#xff1a;Matlab 2015a #xff08;Matlab 2012以后的版本才带有GP… 在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 980Index: 1ComputeCapability: 5.2SupportsDouble: 1DriverVersion: 7.5000ToolkitVersion: 6.5000MaxThreadsPerBlock: 1024MaxShmemPerBlock: 49152MaxThreadBlockSize: [1024 1024 64]MaxGridSize: [2.1475e09 65535 65535]SIMDWidth: 32TotalMemory: 4.2950e09AvailableMemory: 3.3203e09MultiprocessorCount: 16ClockRateKHz: 1380000ComputeMode: DefaultGPUOverlapsTransfers: 1KernelExecutionTimeout: 1CanMapHostMemory: 1DeviceSupported: 1DeviceSelected: 1第二步CPU和GPU之间的数据交换大致有如下几个函数和功能 1、将数据从CPU中搬入GPU函数gpuArray用法 M gpuArray(M) 2、在GPU中计算完成后将数据搬出到CPU存储函数gather用法Mgather(M)。 下面给大家看看最简单的用法以及处理同样矩阵运算时的时间对比 clear all
clc
M rand(2000,2000); % 生成一个随机矩阵
tic
[A1,B1] eig(M); % 求该随机矩阵的特征值和特征向量
t1toc 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型即Msingle(M)然后在使用MgpuArray(M)将数据搬迁到GPU进行计算下面看看转换为单精度型后的时间对比 clear all
clc
M rand(2000,2000); % 生成一个随机矩阵
tic
[A1,B1] eig(M); % 求该随机矩阵的特征值和特征向量
t1toctic
M single(M); % 将数据转换为单精度型
M gpuArray(M); % 将数据从CPU中搬到GPU
[A2,B2] eig(M); % 求特征值和特征向量
A2 gather(A2); % 将数据从GPU中搬到CPU
t2 toc运行结果 t1 14.8332
t2 5.0963GPU对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、单精度型初始化矩阵函数例Xrand(10,single); %定义在CPU上的一个10x10的随机初始化数组 2、直接在GPU中初始化矩阵例GXrand(10,gpuArray); %直接在GPU设备上随机初始化一个10x10的数组 3、判断数据DATA是否存在于GPU内存中例TFexistOnGPU(DATA) 4、计算效率统计例tgputimeit(F,N) %返回执行F操作N次所需的时间当N1时可以缺省 转载于:https://www.cnblogs.com/phyzrx/p/7475201.html