參考**:
關於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
說明:此處測試outer和inner是因為,matlab裡面,使用outer形式的平行計算,使用parfor後,如果迴圈比對類似這種三角形式,最終有些核先跑完結果,有些核後跑完結果,導致出現,乙個核累死累活的跑程式,另外n-1個核圍觀的狀態,使最終的計算時間變長(不過在matlab中未測試outer和inner使用parfor的時間對比)。
但是,在c++裡面,不知道是否優化的原因,outer使用parfor比inner使用parfor要快。此處測試了n=2048,結果也是outer比inner的形式要快。
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 的多個核同時開跑,非常明顯地提高 執行速度。所謂 程式 這個中文單詞,嚴格意義上來說,就是按照特定順序,一步一步地執行一些指令。這是標準的序列計算。序列計算的好處是有上下文依賴關係的事情,不會搞錯順序。好比先洗碗,再打飯,程式這樣寫了,計算機絕對不會搞錯成先打了...