看板 Soft_Job
※ 引述《musashi023 (太陽魚)》之銘言: : 嗨蓋斯 : 最近下班在研究Qt multithreading, 對於把CPU性能榨乾覺得蠻有成就感的 : 就搞了一本 C++ Concurrency in Action 來翻翻 除非特別需要,不要自己打造輪子。現在最普及使用的是OpenMP,資源多,會的人也多。 https://www.openmp.org/resources/openmp-books/ 都是好書可以讀。尤其"High Performance Parallel Runtimes"可以讓你了解基礎,也知道parallel programming is HARD。 我自己喜歡的是Intel TBB(Threading Building Blocks),語法比較適合我的用法。 Intel ISPC也是我喜歡的東東,不過這就有點偏門了。 : 前陣子面試 : 剛剛好跟他們主管聊到,怎麼讓多線程上鎖的成本最小化,覺得蠻酷的 : 雖然明白這本來就是多線程程序設計的重點 : 想知道有沒有專門在聊這個的書 上鎖就輸了,如果你的鎖複雜,更容易出錯。 如何重新解構資料結構去避開鎖,如何排列記憶體是Parallel Programming的重點。false sharing,很常碰到,data thrashing也是頭痛問題。 以上都是shared-memory model的問題,但要最高效能無法避免的。 這也是為什麼Erlang, goLang,這種message passing盡量避開shared-memory的問題,流行起來。Recommended。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.70.128.119 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1704324226.A.754.html
nicetw20xx: 先謝謝大大分享~~~~~ 01/04 09:05
devilkool: 好 01/04 09:13
Hsins: 推! 01/04 13:54
NCTU5566: 謝謝哥 01/04 17:15
hobnob: 推分享! 01/04 17:29
Chricey: 關節痛有沒有辦法完全根治啊?UC2聽起來像萬靈丹 01/08 07:17
final01: 哥的觀念有點問題...必須等高人指出問題XD 01/04 18:49
a82611141: 推 tbb 01/04 20:44
haydou: 推 01/05 01:10
WTS2accuracy: 有請造輪子大師開示 01/05 20:00
Chricey: 本魯關節痛始祖,葡萄糖胺保證沒用,乖乖吃UC2 01/08 07:30
Suleika: share memory by communicating/serializability 01/06 11:33
paul123: 推 Intel tbb 01/06 16:56
Litfal: 真的,上鎖就先輸一半,parallelism有很大一部分都在想怎 01/07 10:21
Litfal: 麼省鎖 01/07 10:21
Kroner: 剛開始吃UC2,期待 01/08 19:02
netburst: 真 01/07 13:01
labbat: 初學者先鎖再說啊,會鎖懂鎖知道哪些api隱含鎖才可以避鎖 01/07 13:18
oopFoo: 現在都流行GC/Ref Count語言,管理記憶體很難。Lock一樣 01/08 07:15
oopFoo: 很難做的對。先學會如何Partition Tasks才重要,然後JS的 01/08 07:17
Chricey: 看到關節痛,我就想起我姨媽 01/08 07:17
oopFoo: Atomics類的api設計,直接lock真的太低階也太容易出錯。 01/08 07:19
oopFoo: Lock出錯,超難debug,超挫折的。需要很系統很有耐性處理 01/08 07:23
oopFoo: Lock就交給專家吧。真喜歡Concurrency,先試試OpenMPI這種 01/08 07:28
oopFoo: Message Passing的API也是很好的選擇 01/08 07:30
Kroner: 有人用過中醫針灸治療關節痛的嗎?效果如何? 01/08 07:30
leviliang: 印象中OpenMP針對單一節點多核心的平行化 01/08 19:02
leviliang: 而MPI針對多節點資料的傳遞與平行化計算 01/08 19:02
leviliang: 兩者使用的地方不一樣 01/08 19:02
leviliang: 雖可以混成 hybrid parallelization 01/08 19:02
Kroner: 我有在用UC2,感覺效果還不錯欸! 01/08 19:02
leviliang: 但還是別搞混了 01/08 19:02
oopFoo: OpenMP是shared-memory所以只能一個節點。OpenMPI是Msg 01/08 21:13
oopFoo: Passing。所以各種情況都可用,單節點多核心也適合。 01/08 21:15