{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如何评价Linux之父Linus认为并行计算基本上就是浪费大家的时间?

ShihiraShihira 回答0 收藏1
收藏问题

5条回答

liangzai_cool

liangzai_cool

回答于2022-06-28 11:06

原文:

并行计算有什么好的?

硬件的性能无法永远提升,当前的趋势实际上趋于降低功耗。那么推广并行技术这个灵丹妙药又有什么好处呢?我们已经知道适当的乱序CPU是必要的,因为人们需要合理的性能,并且乱序执行已被证明比顺序执行效率更高。

推崇所谓的“并行”极大地浪费了大家的时间。“并行更高效”的高大上理念纯粹是扯淡。大容量缓存可以提高效率。在一些没有附带缓存的微内核上搞并行毫无意义,除非是针对大量的规则运算(比如图形处理)。

没人会回到从前了。那些复杂的乱序运行内核不会消失。扩展不会一直进行下去,人们需要的是移动性,因此那些主张扩展至上百内核的都是疯子,不要鸟他们。

他们究竟是如何幻想那些神奇的并行算法会有用武之地的呢?

并行只有对图形计算和服务器有意义,而在这些领域我们已经大量应用并行了。把并行推广到其他的领域没有意义。

所以说忘记并行吧。它不会到来的。4个左右的内核对终端用户来说没有问题,在移动领域里,不大幅增加能耗的情况下,你没办法再塞进更多的核。任何一个理智的人都不会为了要塞入更多的内核而阉割内核以降低其大小和性能,阉割内核的唯一理由是你想进一步降低功耗,因此你还是不会得到大量的核。

所以争论是否要讲究程序的并行性根本就是谬误,其前提条件都是错误的。它只不过是一个早该过时的时髦术语罢了。

并行程序在上面提到的一些地方是有用的,并且已经大量地运用了,比如在服务器领域,人们已经并行很多年了。

在其他的领域,并行不是一定必须的,即便是在将来的一些未知领域也是如此,因为你做不到。假如你要做低功耗通用计算机视觉,我基本可以保证你不会使用通用图形处理器(GP CPU)。你甚至不会用图形处理器,因为其功耗也太高了。你大概会用特殊的硬件,很可能是基于某些神经网络的硬件。

放弃吧。“并行就是未来”的说法就是一片浮云。

评论0 赞同0
  •  加载中...
wawor4827

wawor4827

回答于2022-06-28 11:06

这又是一个老帖子了, 是Linus在14年底回复关于"并行"优化的时写的.原文别的答案已附,英文原文可自行百度。

6年后的今天, 现实发展再一次证明Linus此结论的无比正确. 需要注意, 原上下文是在讨论kernel(内核)编程, 因此只在讲单机CPU的"并行", 不是指多机"并行".

LInus原贴重要观点是:

1. CPU是通用复杂计算, 发展方向是"低功耗". 依赖强核(complex core)和大缓存.

Linux是通用OS, 面向通用架构CPU编程. kernel是Linux系统的核心, 要尽量满足通用CPU计算. 因此Linus只接受通用开发方向的改进是符合其定位的. 对于"低功耗"的发展预测也是非常精准, 全球基于ARM和两巨头的移动CPU出货量早就超过了桌面/服务器级出货量. 从目前CPU的主要设计构造看, 高端CPU越来越强化复杂指令和单核处理能力, 同时增大缓存. 从目前英特尔i7系列看, 仍然在上面堆指令, 高速缓存达到16M, 是符合预测的.

2. 并行计算不通用, 依赖小核(weak cores)和很多核. 甚至在未来同样会遇到功耗问题.

从GPU发展看, 现在小核数和功耗年年提升, 一个主流GPU GTX 1660功耗450W以上, 远高于与其常搭配CPU i5的65W功耗. 同时近年的深度学习在GPU而不是CPU的应用也验证了并行计算的不通用性和能耗过高问题.

3. 各种鄙视吐槽话.

是全文精华, 建议对照原文学习.

评论0 赞同0
  •  加载中...
Markxu

Markxu

回答于2022-06-28 11:06

并行计算早已被证明是可行的计算架构,否则全球几百台超级计算机是拿来当玩具玩儿的吗?

采用Hadoop/MapReduce计算架构的大型互联网应用在全球都得到了广泛应用。没有并行计算,淘宝在双十一能处理那么多的并发订单吗?

不理解Linus这句话的意思。

评论0 赞同0
  •  加载中...
Fourierr

Fourierr

回答于2022-06-28 11:06

这就是LINUS不懂了,不懂并行计算的威力,那是因为他没有做深度学习。深度学习训练计算量很大,就是人们说的算力,需要大量计算,比如做imagenet竞赛,百万级图片,一旦训练起来就没完没了,用cpu训练估计要几个月,如果用gpu并行计算,用几天就好了。gpu做深度学习训练速度是cpu的十倍以上,平时要半天训练现在一个小时就好了。而目前最大的bert模型,没有大量gpu还训练不了。所以linus说的浪费时间可能是在操作系统运行上肯定最快的cpu就够了,但是深度学习是不行的。

评论0 赞同0
  •  加载中...
yacheng

yacheng

回答于2022-06-28 11:06

因为人实际上是单线程处理多事物的。举个例子,开车超车,目标车道前后有2辆车,你要插到当中,插之前你看的是2扯间距够不够,打方向盘的时候看后视镜确认候车没有加速前冲不让你超,车身一半进线时,你看前方防止前车刹车。每一个时候其实只是干一件事,其他事只是放着惯性思维觉得该是惯性运动。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<