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