我只是想知道,当我们可以创建每台机器支持数百或数千个核心/CPU(甚至 GPGPU)的单独机器时,为什么需要经历创建分布式系统以进行大规模并行处理的所有麻烦?
所以基本上,为什么要在机器网络上进行并行处理,因为它可以在一台支持多个内核的机器上以更低的成本和更可靠的方式完成?
我认为它只是更便宜。这些机器今天就可以使用,不需要发明新东西。
下一个问题将是主板的复杂性,想象一下 1 MB 上有 10 个 CPU - 这么多链接!如果其中一个 CPU 死亡,它可能会毁掉整台机器..
当然可以为GPGPU编写程序,但这并不像为CPU编写程序那么容易。有很多限制,例如。每个核心的缓存非常小(如果有的话),您无法在核心之间进行通信(或者可以,但成本非常高)等等。
由于使用历史悠久,连接多台计算机更稳定、更具可扩展性且更便宜。
彼得说的话。 当您向单个计算机添加内核时,通信开销会增加。 如果内存在内核之间共享,那么共享内存和缓存的锁定架构会产生越来越大的开销。
如果您没有共享内存,那么实际上您正在使用不同的机器,即使它们都在同一个盒子中。
因此,通常最好开发没有共享内存的超大规模应用程序。 通常也是可能的 - 尽管通信开销通常仍然很大。
鉴于这种情况,构建高度多核的单独机器几乎没有用处 - 尽管确实存在一些机器,例如英伟达特斯拉...
创建分布式系统有 4 个原因:
多核 CPU 和 GPU 只满足最后 2 点,而且只是在某种程度上满足。如果这对你来说没问题,那么这样的架构就可以了,如果不行,你需要一个分布式系统。