開發平台(Platform): (Ex: Win10, Linux, ...)
Linux Centos 7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
G++ 4.8.5
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
純 C++11
使用 #include <thread>
問題(Question):
想要使用 Thread 加速現有資料計算
不知道該如何開始 ..
程式碼(Code):(請善用置底文網頁, 記得排版)
現有程式碼大至如下
int max_score = 0
for( int a = 0 ; a < 10 ; ++a ) {
for( int b = 0 ; b < 10 ; ++b ) {
int score = algorithm(a,b);
if ( score > max_score ) { max_score = score; }
}
}
簡單來說 algorithm 會帶入 a,b 全部組合
也就是 100 種排列,經過演算法計算後得到 score
我只需要計算最大 score 值
上述程式運作良好
但實際資料大概上億種組合
每次運算約 0.01 秒,耗費時間仍可觀
看過一些文章都是平行做兩件不同 function
我要計算同個 function 而且需要比較結果
找不到類似的 example (包含限制 thread 數量等)
目前機台只有四核心可用
想要透過 thread 加速,不知道該從何入手
希望板友能提供一些簡易說明
(有看過需要使用到 lock / unlcok 或是 mutex .. 因為要避免 race condition)
感謝 :)