目的 :

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次 ,做4000×4000的FFT2 运算,数据类型单精度(多运算几次,第一次很慢,需要配置系统,第二次,第三次就快了,而且结果相差不大)

运行结果如下

基于 CPU并行计算 ,使用 16.594280 秒。
基于 GPU并行计算 ,使用11.476335 秒。

(2).使用parfor 循环100次 ,做1000×1000的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


版权声明:本文为lukeliuli原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lukeliuli/article/details/47374849