Re: [讨论] 多线程软件设计用书

楼主: oopFoo (3d)   2024-01-04 07:23:42
※ 引述《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。
作者: nicetw20xx (哇爱台湾)   2024-01-04 09:05:00
先谢谢大大分享~~~~~
作者: devilkool (对猫毛过敏的猫控)   2024-01-04 09:13:00
作者: Hsins (翔)   2024-01-04 13:54:00
推!
作者: NCTU5566 (交大彭于晏)   2024-01-04 17:15:00
谢谢哥
作者: hobnob (hobnob)   2024-01-04 17:29:00
推分享!
作者: final01 (牛顿运动定律)   2024-01-04 18:49:00
哥的观念有点问题...必须等高人指出问题XD
作者: a82611141   2024-01-04 20:44:00
推 tbb
作者: haydou (haydou)   2024-01-05 01:10:00
作者: WTS2accuracy (宝钟海贼団の一味)   2024-01-05 20:00:00
有请造轮子大师开示
作者: Suleika (Suleika)   2024-01-06 11:33:00
share memory by communicating/serializability
作者: paul123 (COOOOOOL)   2024-01-06 16:56:00
推 Intel tbb
作者: Litfal (Litfal)   2024-01-07 10:21:00
真的,上锁就先输一半,parallelism有很大一部分都在想怎么省锁
作者: netburst (133 134 592)   2024-01-07 13:01:00
作者: labbat (labbat)   2024-01-07 13:18:00
初学者先锁再说啊,会锁懂锁知道哪些api隐含锁才可以避锁
楼主: oopFoo (3d)   2024-01-08 07:15:00
现在都流行GC/Ref Count语言,管理内存很难。Lock一样很难做的对。先学会如何Partition Tasks才重要,然后JS的Atomics类的api设计,直接lock真的太低阶也太容易出错。Lock出错,超难debug,超挫折的。需要很系统很有耐性处理Lock就交给专家吧。真喜欢Concurrency,先试试OpenMPI这种Message Passing的API也是很好的选择
作者: leviliang (levi)   2024-01-08 19:02:00
印象中OpenMP针对单一节点多核心的平行化而MPI针对多节点资料的传递与平行化计算两者使用的地方不一样虽可以混成 hybrid parallelization但还是别搞混了
楼主: oopFoo (3d)   2024-01-08 21:13:00
OpenMP是shared-memory所以只能一个节点。OpenMPI是MsgPassing。所以各种情况都可用,单节点多核心也适合。

Links booklink

Contact Us: admin [ a t ] ucptt.com