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