原文:

并行计算有什么好的?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

不理解Linus这句话的意思。

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