5.真实并发

前面学习了并发编程的基本工具,线程库、互斥和同步。

有了线程就有共享内存,线程之间会共享内存。然后在共享内存上实现并发控制,包括互斥和同步。互斥协议:一把桌上的钥匙。

然后操作系统提供了一些系统调用,让互斥更高效。

有了这些概念,就可以来真正看看实例了。

高性能计算力的并发编程

真实的并发编程

  • 高性能计算中的并发编程 HPC

  • 数据中心里的并发编程 微信支付宝,海量数据的并发并行

  • 身边的并发编程

那么什么是高性能计算呢?

“A technology that harnesses the power of supercomputers or computer clusters to solve complex problems requiring massive computation.” (IBM)

对 CPU 的运算能力要有一个直观的认知。现在的单核 CPU 确实已经很快了。下面这些事情都要去计算,去模拟一个

  • 系统模拟:天气预报、分子生物学、物理系统(控制系统)

  • 人工智能:神经网络训练

  • 矿厂:纯粹的 hash 计算

神威太湖之光 CPU 核数有 10649600 个,如何给他写程序呢?

计算任务需要分解。

局部性。比如说要模拟整个南京市汽车的运行,一辆车与周围车的关系也不过几百米,江北和江南的两个车,可以说是没啥关系的。

切块处理,这就可以并行了。当然边界还需要一些技巧来处理的。

一个并行计算图片的程序。

里面调用了一个在CLI里显示图片的小工具 viu

数据中心里的并发编程

以数据为中心

  • 互联网搜索(google)、社交网络(Facebook/twitter)

  • 各类互联网应用:微信、QQ、支付宝、游戏、网盘

当所有人拿起收起一起用微信发消息。这件事情有可能用一台计算机解决吗?

算法/系统对HPC和数据中心是有意义的。

  • 如果有 1000000 台服务器,一个算法能快 1%

最后更新于