天天看點

Matlab平台下Nvidia顯示卡和Intel I7 CPU的并行計算性能比較:第一次測試

目的 :

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

繼續閱讀