(原)測試intel的平行計算pafor

2021-09-07 03:50:02 字數 3109 閱讀 2480

參考**:

關於mt19937:

**如下:

1 #include "

stdafx.h

"2 #include 3 #include //

mt19937的標頭檔案

4 #include //

parfor的標頭檔案

5 #include //

queryperformancefrequency等函式的標頭檔案67

using

namespace concurrency; //

parfor使用

8using

namespace

std;910

11//

分配記憶體

12void allocmatrix(double**m, size_t n)

1317

1819

//初始化矩陣內容

20 template

21void inimatrix(double* m, size_t n, gen&gen)

2229}30

}313233

//釋放記憶體

34void freematrix(double**m)

3541}42

4344

//矩陣相乘,使用for

45void matrixmultiplyfor(double* res, const

double* m1, const

double*m2, size_t n)

4656 res[i*n + j] =temp;57}

58}59}

6061

62//

矩陣相乘,外層使用parfor

63void matrixmultiplyparforouter(double* res, const

double* m1, const

double*m2, size_t n)

6474 res[i*n + j] =temp;75}

76});77}

7879

80//

矩陣相乘,內層使用parfor

81void matrixmultiplyparforinner(double* res, const

double* m1, const

double*m2, size_t n)

8292 res[i*n + j] =temp;

93});94}

95}9697

98//

測試矩陣相乘,使用for的時間

99double testmatrixmultiplyfor(double* res, const

double* m1, const

double*m2, size_t n)

100110

111112

//測試矩陣相乘,外層使用parfor的時間

113double testmatrixmultiplyparforouter(double* res, const

double* m1, const

double*m2, size_t n)

114124

125126

//測試矩陣相乘,內層使用parfor的時間

127double testmatrixmultiplyparforinner(double* res, const

double* m1, const

double*m2, size_t n)

128138

139140

//主函式

141int _tmain(int argc, _tchar*argv)

142

debug

time(ms)

for: 7761.769099

parforounter: 3416.670736

parforinner: 3423.701265

release

time(ms)

for: 3884.167485

parforounter: 1062.581817

parforinner: 1083.642302

說明:此處測試outerinner是因為,matlab裡面,使用outer形式的平行計算,使用parfor後,如果迴圈比對類似這種三角形式,最終有些核先跑完結果,有些核後跑完結果,導致出現,乙個核累死累活的跑程式,另外n-1個核圍觀的狀態,使最終的計算時間變長(不過在matlab中未測試outerinner使用parfor的時間對比)。

但是,在c++裡面,不知道是否優化的原因,outer使用parforinner使用parfor要快。此處測試了n=2048,結果也是outerinner的形式要快。

C Parallel 平行計算測試

concurrentbaglist1 new concurrentbag stopwatch stop1 new stopwatch stop1.start parallel.for 0,10000,item stop1.stop listlist2 new list object synobj n...

python平行計算 pycuda測試 對比及分析

增量式學習演算法能夠同時學習網路的節點與引數,但是隨著模型結構的增長,計算成本也越來越高,有兩個途徑可以減少計算所需的時間成本 1 研究模型劃分方法,將比較大的模型劃分成幾個較小的子模型 2 通過提高計算機的計算能力 gpu或cpu tx2能夠利用cuda進行gpu平行計算,pycuda作為pyth...

Delphi 的平行計算

所謂平行計算,可以讓一段 讓 cpu 的多個核同時開跑,非常明顯地提高 執行速度。所謂 程式 這個中文單詞,嚴格意義上來說,就是按照特定順序,一步一步地執行一些指令。這是標準的序列計算。序列計算的好處是有上下文依賴關係的事情,不會搞錯順序。好比先洗碗,再打飯,程式這樣寫了,計算機絕對不會搞錯成先打了...