Matlab平台下Nvidia显卡和Intel I7 CPU的并行计算性能比较:第一次测试
2015-08-09 13:56
495 查看
目的 :
1. 使用比较好的高端游戏平台(不很贵),测试在Matlab平台下Nvidia显卡和Intel I7 CPU做并行计算的性能
2.解决如下问题
(1) 性能是1-2倍差距,还是5-20倍差距,还是50-100倍差距?
(2)要考虑并行计算的话 ,需不需要在有限预算下配高端游戏显卡,还是以配更好的CPU为主?
(3)信号处理的算法(非信息处理)的应用背景下,程序的编写简便和运行速度那个重要?
平台
CPU:I7 4790K
显卡:GTX 970
内存:8G
其余都一样
(去淘宝找I7 4790K的组装机,配置大多数都差不多)
测试结果
1.测试1
程序基础设定
(1).使用parfor 循环100次 ,做4000x4000的FFT2 运算,数据类型单精度(多运算几次,第一次很慢,需要配置系统,第二次,第三次就快了,而且结果相差不大)
运行结果如下
基于 CPU并行计算 ,使用 16.594280 秒。
基于 GPU并行计算 ,使用11.476335 秒。
(2).使用parfor 循环100次 ,做1000x1000的FFT2 运算,数据类型单精度
运行结果如下
基于 CPU并行计算 ,使用 1.184894 秒。
基于 GPU并行计算 ,使用 0.809882 秒。
结论
1.与 《NVIDIA GTX 980 通用并行计算实测》(http://tieba.baidu.com/p/3700790326),测试结果相差很大。
2.Matlab平台下,结合其他程序(有些程序无法并行),FFT2性能是在整体提高30%-50%左右。个人估计其他类似程序,经过专门优化,速度提高在 2-4倍左右,运行时间能降低50%或者70%
3.要考虑并行计算的话 ,还是配高端CPU为主(不要是5960X,至强高端系列,那种很贵的)。因为大部分计算程序还是无法并行,用通用CPU,程序编写简便舒服点。
4.大规模的信号处理程序和模型参数识别,如优化。程序运行在10分钟到半小时之内,以CPU为主。需要2到3小时,才能运行出结果的程序。在能并行化的前提下,用GPU并行比CPU并行优化能省50%-90%的时间,还是要配好点的显卡吧。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%测试程序
function mainTestGPU1
%%
%%%%test using GPU or no
clear all;
close all;
s = tic;
parfor i = 1:100
A= rand(4000,4000,'single');
B=fft2(A);
end
toc(s)
s = tic;
parfor i = 1:100
A= rand(4000,4000,'single');
A1=gpuArray(A);
B=fft2(A1);
B = gather(B);
end
toc(s)
end
1. 使用比较好的高端游戏平台(不很贵),测试在Matlab平台下Nvidia显卡和Intel I7 CPU做并行计算的性能
2.解决如下问题
(1) 性能是1-2倍差距,还是5-20倍差距,还是50-100倍差距?
(2)要考虑并行计算的话 ,需不需要在有限预算下配高端游戏显卡,还是以配更好的CPU为主?
(3)信号处理的算法(非信息处理)的应用背景下,程序的编写简便和运行速度那个重要?
平台
CPU:I7 4790K
显卡:GTX 970
内存:8G
其余都一样
(去淘宝找I7 4790K的组装机,配置大多数都差不多)
测试结果
1.测试1
程序基础设定
(1).使用parfor 循环100次 ,做4000x4000的FFT2 运算,数据类型单精度(多运算几次,第一次很慢,需要配置系统,第二次,第三次就快了,而且结果相差不大)
运行结果如下
基于 CPU并行计算 ,使用 16.594280 秒。
基于 GPU并行计算 ,使用11.476335 秒。
(2).使用parfor 循环100次 ,做1000x1000的FFT2 运算,数据类型单精度
运行结果如下
基于 CPU并行计算 ,使用 1.184894 秒。
基于 GPU并行计算 ,使用 0.809882 秒。
结论
1.与 《NVIDIA GTX 980 通用并行计算实测》(http://tieba.baidu.com/p/3700790326),测试结果相差很大。
2.Matlab平台下,结合其他程序(有些程序无法并行),FFT2性能是在整体提高30%-50%左右。个人估计其他类似程序,经过专门优化,速度提高在 2-4倍左右,运行时间能降低50%或者70%
3.要考虑并行计算的话 ,还是配高端CPU为主(不要是5960X,至强高端系列,那种很贵的)。因为大部分计算程序还是无法并行,用通用CPU,程序编写简便舒服点。
4.大规模的信号处理程序和模型参数识别,如优化。程序运行在10分钟到半小时之内,以CPU为主。需要2到3小时,才能运行出结果的程序。在能并行化的前提下,用GPU并行比CPU并行优化能省50%-90%的时间,还是要配好点的显卡吧。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%测试程序
function mainTestGPU1
%%
%%%%test using GPU or no
clear all;
close all;
s = tic;
parfor i = 1:100
A= rand(4000,4000,'single');
B=fft2(A);
end
toc(s)
s = tic;
parfor i = 1:100
A= rand(4000,4000,'single');
A1=gpuArray(A);
B=fft2(A1);
B = gather(B);
end
toc(s)
end
相关文章推荐
- 解析在main函数之前调用函数以及对设计的作用详解
- CPU也有远程攻击漏洞 英特尔匆匆修补
- java和matlab画多边形闭合折线图示例讲解
- C#调用Matlab生成的dll方法的详细说明
- 浅谈.Net并行计算之数据并行
- 从java中调用matlab详细介绍
- 用python做GPU计算(1)——安装以及配置
- java实现简单的并行计算框架
- Fourinone四合一分布式计算框架整体介绍
- [硬件资讯]32nm Atom性能首曝:GPU性能三倍于今
- 对L2和B2的阐述
- U盘启动CDlinux,U盘启动BT5,关键命令!原创!新加图文教程。新加0.971版制作方法。
- U盘启动CDlinux,U盘启动BT5,关键命令!原创!新加图文教程。新加0.971版制作方法。
- AMD CEO罗瑞德称将调整战略 应对市场变化
- VC++与Matlab混合编程的快速实现
- Intel超线程技术有多少种?
- 英特尔Nehalem微架构三级缓存原理学习
- vtkGPUVolumeRayCastMapper (Examples)
- GPU通用计算调研报告
- 英特尔与数字标牌