[問題] 多執行緒library問題

作者: ofd168 (大色狼來襲)   2019-09-05 18:32:18
開發平台(Platform): (Ex: Win10, Linux, ...)
win7/win10/linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
vc++ / gcc
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
openCL / openMP / C++11
問題(Question):
跑模擬想要加速
想要的是CPU的多執行緒
目前爬文大致知道有 openCL / openMP / C++11 有多核心的library
C++11的多執行緒好像來自於boost (?)
openCL是比較偏向GPU那方面的多執行緒,因為伺服器沒有顯卡資源可以用
所以目前應該是openMP與C++ 11在選擇
openMP的優點好像是語法使用容易,3.0版本之後也都支援Data / task parallelism
C++11的優點不太確定
但根據爬文的結果
https://software.intel.com/en-us/articles/choosing-the-right-threading-
framework
https://i.imgur.com/S46pILI.png
目前找資料的是覺得
openMP好像沒有書比較深入的講解
C++11有找到 C++並行程式設計 多執行緒實務
目前應該規劃是會以Data parallelism為主
未來可能會切一些做task parallelism
想問大家是怎麼挑要用哪一種來實作多執行緒?
作者: changhua5566   2018-01-16 21:40:00
我想你也沒被豬噓過
作者: EricTCartman (阿ㄆㄧㄚˇ)   2019-09-05 19:03:00
當然是用TBB上啊
作者: ofd168 (大色狼來襲)   2019-09-05 19:53:00
電腦和伺服器都是用AMD cpu,這樣也可以上嗎
作者: Schottky (順風相送)   2019-09-05 21:44:00
還有 pthread 啊 XDDD
作者: Bencrie   2019-09-05 22:43:00
OpenCL 可以跑純 CPU 啊
作者: ofd168 (大色狼來襲)   2019-09-05 22:59:00
想問這麼多種,大家是怎麼做選擇呢
作者: LiloHuang (十年一刻)   2019-09-05 23:18:00
TBB
作者: Schottky (順風相送)   2019-09-06 01:42:00
小學生才做選擇,我全都要每種都寫一遍再比較看看,反正語法上都沒有很難麻煩的是演算法要怎麼改成可以平行處理吧,平行化之後反而比原本更慢的例子並不少見要簡單地立刻導入舊 code 我推 OpenMP
作者: ofd168 (大色狼來襲)   2019-09-06 23:04:00
好的,謝謝大大
作者: a1u1usul3 (Q-Max)   2019-09-07 01:58:00
學習歷程可以從openmp→ pthread→opencl/cuda如果第一步改用openmp就卡關可能是演算法不適合以for loop切分,可能就要考慮用更有彈性的套件去寫如pthread和std thread
作者: dh4mve (dh4)   2019-09-07 19:57:00
cpp-taskflow

Links booklink

Contact Us: admin [ a t ] ucptt.com