Re: [討論] 多線程軟件設計用書

看板Soft_Job (軟體人)作者 (3d)時間10月前 (2024/01/04 07:23), 編輯推噓12(13114)
留言28則, 16人參與, 10月前最新討論串2/3 (看更多)
※ 引述《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

01/04 09:05, 10月前 , 1F
先謝謝大大分享~~~~~
01/04 09:05, 1F

01/04 09:13, 10月前 , 2F
01/04 09:13, 2F

01/04 13:54, 10月前 , 3F
推!
01/04 13:54, 3F

01/04 17:15, 10月前 , 4F
謝謝哥
01/04 17:15, 4F

01/04 17:29, 10月前 , 5F
推分享!
01/04 17:29, 5F

01/04 18:49, 10月前 , 6F
哥的觀念有點問題...必須等高人指出問題XD
01/04 18:49, 6F

01/04 20:44, 10月前 , 7F
推 tbb
01/04 20:44, 7F

01/05 01:10, 10月前 , 8F
01/05 01:10, 8F

01/05 20:00, 10月前 , 9F
有請造輪子大師開示
01/05 20:00, 9F

01/06 11:33, 10月前 , 10F
share memory by communicating/serializability
01/06 11:33, 10F

01/06 16:56, 10月前 , 11F
推 Intel tbb
01/06 16:56, 11F

01/07 10:21, 10月前 , 12F
真的,上鎖就先輸一半,parallelism有很大一部分都在想怎
01/07 10:21, 12F

01/07 10:21, 10月前 , 13F
麼省鎖
01/07 10:21, 13F

01/07 13:01, 10月前 , 14F
01/07 13:01, 14F

01/07 13:18, 10月前 , 15F
初學者先鎖再說啊,會鎖懂鎖知道哪些api隱含鎖才可以避鎖
01/07 13:18, 15F

01/08 07:15, 10月前 , 16F
現在都流行GC/Ref Count語言,管理記憶體很難。Lock一樣
01/08 07:15, 16F

01/08 07:17, 10月前 , 17F
很難做的對。先學會如何Partition Tasks才重要,然後JS的
01/08 07:17, 17F

01/08 07:19, 10月前 , 18F
Atomics類的api設計,直接lock真的太低階也太容易出錯。
01/08 07:19, 18F

01/08 07:23, 10月前 , 19F
Lock出錯,超難debug,超挫折的。需要很系統很有耐性處理
01/08 07:23, 19F

01/08 07:28, 10月前 , 20F
Lock就交給專家吧。真喜歡Concurrency,先試試OpenMPI這種
01/08 07:28, 20F

01/08 07:30, 10月前 , 21F
Message Passing的API也是很好的選擇
01/08 07:30, 21F

01/08 19:02, 10月前 , 22F
印象中OpenMP針對單一節點多核心的平行化
01/08 19:02, 22F

01/08 19:02, 10月前 , 23F
而MPI針對多節點資料的傳遞與平行化計算
01/08 19:02, 23F

01/08 19:02, 10月前 , 24F
兩者使用的地方不一樣
01/08 19:02, 24F

01/08 19:02, 10月前 , 25F
雖可以混成 hybrid parallelization
01/08 19:02, 25F

01/08 19:02, 10月前 , 26F
但還是別搞混了
01/08 19:02, 26F

01/08 21:13, 10月前 , 27F
OpenMP是shared-memory所以只能一個節點。OpenMPI是Msg
01/08 21:13, 27F

01/08 21:15, 10月前 , 28F
Passing。所以各種情況都可用,單節點多核心也適合。
01/08 21:15, 28F
文章代碼(AID): #1bbUo2TK (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1bbUo2TK (Soft_Job)