如果将计算机系统的门电路组成的任意尺度的网络看作一个过滤器,在该网络中的任意两点之间,传输与计算间如何权衡。
一个大尺度的例子,将 n 个数字排序后传输到远端,还是将 n 个数字任意传输到远端后在远端排序,哪个划算。答案显而易见,后者更划算,假设绝对无丢包,至少在后者传输过程中,可以用 UDP 乱序传输,而 UDP 比 TCP 成本更低。
一个小尺度的例子,将 2 个 int 型从内存 load 到寄存器,相加后再 store 回内存,这个过程中哪个环节最耗能。CPU 的各级 cache 的意义正基于此。
可以猜想,数据总量一定时,传输原始数据后再计算,比先计算再传输计算结果成品更具有性价比。简单来讲,即优先在本地现场计算,而不是优先依靠远端传输结果,这个猜想是有根据的。
先看一个行业外的共识,饮料,服装等原材料廉价但成本贵的商品,一般都是就地生产,但可能远程运输原材料,远至欧美大殖民时代三角贸易也是如此,这背后也是一个收益成本的考虑,与本文讨论的一致。即生产(计算)是本地的,原材料(原始数据)可能是远端的,但生产(计算)决不在远端进行,这意味不管是生产运输还是计算传输,背后都是同一个共识,运输成品或传输结果成本高昂。
用状态和熵的概念去理解这个共识。
将时空的世界一起看成一个整体,经过加工计算的成品或结果是被注入了负熵的低熵体,整个过程中,生成该低熵体的成本是一定的,区别仅在于这个成本是在本地还是分布式成本的集合,运输成品或传输等效于在更大的时空维持该低熵体在一个特定状态,这意味着传输过程需要额外的持续消耗(负熵),这就是额外的成本。
我在 时延抖动的物理本质 一文中提到过数据传输中时延和抖动的本质,与本文的成本因素关联,始终在时空中进行的传输成本归根结底还是时间代表的熵增。既然纯计算成本省不了,传输的内容越低熵,成本就越高。所以,尽量不传输,非要传输就传输高熵数据。
尽量在本地做计算,无论尺度如何,都要避免频繁 load & store,至于分布式计算,更要规划网络路径,特别是 GPU 参与的计算,相比 CPU 而言,与数据传输相比,本地计算更具有高性价比。
传输的成本真的很高,我此前提到过,最好不要做传输,非要传输的话就尽可能少传输,尽可能传浅加工数据,优先本地计算,甚至本地猜测,传输优选压缩,字典,都是减少传输数据量的方法。
总体而言,在物理意义上,距离就是能耗,距离越远,能耗越高,想象一下用脉冲电压驱动线缆就能直观理解,1cm 的线缆和 1000m 的线缆,同样脉冲而耗电不同。我们很早就学过物体做功,距离仍是狠变量。
我前年写过一篇 内存墙的本质,总结得不错。
归根结底,能耗就是时延,时延就是能耗,都由熵衡量。而传输时延在直观上一方面决定于距离,另一方面决定于存储 IO,在上述引文中,我将 DRAM 存储行为最终归结为了一系列步骤的计算,而计算则是空间展开的压缩,空间则被距离度量,这就完全统一到距离引发的熵的度量了,传输,存储,计算只是展开方式不同罢了,归于一处都是熵增,都是能耗,而数传输的距离正相关性最大,也就最不可扩展。
传输的能耗很大,尽量不要传输。在这套共识下,把计算资源主动靠向原材料就像可口可乐,农夫山泉了,也就是存内计算,存算一体,就合理了。
浙江温州皮鞋湿,下雨进水不会胖。
1695

被折叠的 条评论
为什么被折叠?



