目的 :
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