最近学习GA库,发现应当对多种计算机架构进行区分,故查阅资料,总结如下
MPP(Massive Parallel Processing),每个
现在有多种架构需要区分
- MPP (Massive Parallel Processing)
- cluster
- SMP(Symmetrical Multi-Processing)
- NUMA (Non-uniform memory access)
- SSMP(Scalable shared-memory multiprocessing)
- DSM(distributed shared memory)
1 SMP和NUMA、DSM
SMP是对称多处理器,如下图所示。所有的处理器共享一个内存,使用相同的地址空间。所有的处理器通过一条总线(bus)和内存以及IO设备(硬盘等)连接。总线同一时刻只能处理一个请求,当有多个处理器的访存访问请求时,只能一个一个处理,会导致部分处理器由于没有数据而空闲等待。
SMP的优点:
- 编程容易,不需要修改代码为使用MPI并行的代码。
- 处理器之间的通讯延迟低
SMP缺点
- 内存征用情况严重,导致可扩展性差,一个系统支持的处理器数量远没有NUMA的多
- 需要在硬件上支持cache一致性 (cache coherence)
像一般笔记本用的低端核少的CPU,比如说Intel core i3 ,往往都是SMP架构,只有一个内存控制器 存疑,不是NUMA架构就是SMP了吗?
NUMA是SMP的扩展版。NUMA中每个处理器都有自己的local memory,而且每个处理器都可以访问其他处理器的local meomory,但是延迟会比访问自己的local memory要高。根据这里所说,对DSM(分布式内存)的访问,就是NUMA(非均匀内存访问)。DSM也可以说是NUMA。
NUMA架构可以减缓内存访问征用的问题。现在较高性能的处理器如AMD高端CPU Threadripper锐龙、Intel定位高端HEDT的i9 CPU都使用了NUMA架构。例如知乎老狼所说的
2 MMP 和 CLUSTER
他俩和SMP以及NUMA不一样,MMP/cluster由多个彼此独立的节点构成的,无法跨节点访问彼此的内存,只能通过MPI等信息传递的方式来实现节点间通信。因为没有内存征用和总线带宽的限制,MMP/cluster的扩展性特别好,像现在(2021年3月)世界排名前500的超算,有几十万、上百万的核心,都是使用的MMP或cluster架构。
MMP和cluster的区别:
-
MMP使用了更多定制化的组件,包括网络、处理器、操作系统等
(这两段话几乎是复制的阿里云技术专家蜚廉,那里有更加详细的说明)最早出现的是MMP,cluster是后来才有的。这两个的区别在于MMP的组件大多是单独定制开发,每个节点使用定制CPU,运行OS微内核,使用单独开发的专有网络连接。
///
进入新世纪后,Cluster 得到蓬勃的发展。cluster运行通用操作系统,互连网络使用商业标准的IB和以太网设备连接,存储为SAN、NAS和并行文件系统。原有的MPP超级计算机的单独定制门槛被打破,“堆机器”成了新玩法。 -
MPP实际上是一台机器,这台机器有使用高速网络紧密连接的成千上万个处理器,只有一个操作系统。
cluster实际上是有多台机器,每个机器有自己的操作系统(一般都是一样的)、硬盘、内存等,这些机器使用一些普通网络的一些变体连接起来,使用某些系统帮助分配任务给这些主机。
参考 What is the difference between a Cluster and MPP supercomputer architecture?
3 SSMP
SSMP(可扩展的共享内存处理)的提出是为了在利用SMP优点的同时,提高他的可扩展性,主要措施有两点:
- 使用DSM
- 使用switch替代bus(内存总线)
具体不太懂,这里有详细的介绍
参考文献
- 并行计算、分布式计算、集群计算和云计算,大科谱!链接
- 超算简史与下一代超级计算机 (介绍了cluster 和MPP的区别 链接)
- why parallel architecture (介绍了SSMP,链接)
- stack Exchange的一个帖子,里面的一个回答引用了很多链接,很值得学习 链接
- Massively Parallel Processing (MPP) (大绿字,给了一个综述和一些关于cluster、mpp、smp、numa以及一些其他关于高性能计算的学习链接,传送门)
- SMP vs NUMA vs MPP 架构简介 链接
4 不成熟的思想(下面是搜索材料时候的一些混乱思想,留在这里,可能有错)
NUMA似乎是当初SGI公司主推的一种架构,多个处理器使用共享内存来获得比单个处理器更高的性能,同时又不需要额外的MPI编程。
那串行程序如何使用多个处理器呢? 这需要查一查SGI是怎么成功的
关于SGI的成功,知乎的yolfilm说到
1994年,我们买过一台 sgi 的名机:「 iris crimson 」。
当年作动画(90年代中期),PC机用的是 3dmax 早期版本,最早的3dmax v1.0,我查了一下,是1996年才发售,换言之,我们最早用那玩意儿(1994年),装在dx66 pc机上的3ds,都是beta版。而且是在dos下运行,装起来要一整盒的软盘。相比之下,整个完整套装的 iris crimson,跑unix系统,除了「中文字」比较烦以外(当时作动画,主要是给建筑案作效果图,里面的中文都是自己建模造字。)除了字体比较痛苦外,相较pc机,那种速度,那种可用性,那种出来画面的品质(商业性),都是 pc 望尘莫及,完全无法比拟的。
而知乎的Tech Priest 说了SGI成功的另外一个原因
超算这块,sgi当年的看家法宝是numalink, 我不知道numa的机器他家是不是最大的,不过绝对是卖的最多的, 换句话说,单一内存地址空间的,没我核多,比我核多的,都是分布式的mpp或者cluster架构。所以很多不适合mpp/cluster架构的应用(再加上懒得把代码拿mpi重写一遍的应用),还有numa架构带来的管理/开发/使用上的便利(当成一台多核的机器就行),使得sgi从origin到altix随然top500上榜不多(没办法numa没法堆太多的核)但是实际用户不少,sgi当年绝对是闷声发大财。今天转手几次的sgi还在卖UV, 没查过销量但是应该也不会太差, 毕竟就算是今天很多应用更适合numa而不是集群(包括一小部分算法上不适合分布式内存的
第三个从wiki中NUMA的介绍里也提到了一些原因:
Modern CPUs operate considerably faster than the main memory they use. In the early days of computing and data processing, the CPU generally ran slower than its own memory. The performance lines of processors and memory crossed in the 1960s with the advent of the first supercomputers. Since then, CPUs increasingly have found themselves “starved for data” and having to stall while waiting for data to arrive from memory. Many supercomputer designs of the 1980s and 1990s focused on providing high-speed memory access as opposed to faster processors, allowing the computers to work on large data sets at speeds other systems could not approach.
从上面的分析来看,SGI成功的原因包括
- 对于视频剪辑,SGI的性能高(为什么嘞?),有配套的剪辑软件,可用性好
- 对于高性能计算,SGI的服务器提供统一内存寻址空间,对于不适合或是不方便修改为用于MPP/cluster类型并行计算的应用十分友好
- 在1960年代开始,处理器的计算能力逐渐不再是计算速度的瓶颈。内存访问速度慢常让CPU因等待数据送达而处于空闲状态,这逐渐成为制约计算速度的一大瓶颈。而SGI支持的CC-NUMA架构可以改善这个问题,因此计算性能很高。(均为猜测)
SGI的没落是在家用PC机的性能开始逐渐增强的时候,知乎的yolfilm认为
SGI的「生死交叉点」,是家用机的 cpu 主频,开始出现超过 100mhz 的机种时(英特尔奔腾系列,以及苹果的 power pc系列),sgi 的败象就按捺不住了。
主频一过百,那时代立刻出现了一堆 pc 架构下的「类 sgi 图型工作站」(比如名机 toaster,大陆市场上的各种杂牌组装图形工作站,更是不计其数)。当然,这种机器会 down,但人家售价只有你的十几分之一,而且还挺好用,你哪能比得过?
这衰败的原因感觉是CPU的性能提升了?这不是和之前说的CPU性能不制约计算速度相违背吗?
可能是因为以前CPU单核性能不高,因此使用多处理器架构,但是多处理器SMP架构会有内存争用的问题,因为一个CPU对内存的访问会让其他CPU都等着。但是NUMA架构能够改善这个问题(这个在NUMA的WIKI里面也说了)。但是随着CPU 的性能提升,不需要太多的核就可以有很好的性能,内存争用情况有了改善,这时其他厂商的电脑、工作站等也能很好的解决问题了,因此SGI的市场受到了蚕食。
(猜测需要证实)
至于说没落,应该说是整个cluster架构的崛起和numa的没落(mpp也没落了)。这就又回到了和工作站一样的问题,既然大家都是堆xeon堆tesla/phi堆infiniband这些开放平台,不计成本狂堆能上top500前十也叫集群,一穷二白刚毕业小青椒暑假找几个本科生拿几台破机器装个rocks也叫集群, 为啥非要sgi呢?
作者:Tech Priest
链接:https://www.zhihu.com/question/30500794/answer/64657328
SGI的特色是NUMA LINK,难道说SGI的机器使用的其实是NUMA的架构?已知NUMA架构是和SMP类似的(wiki,NUMA architectures logically follow in scaling from symmetric multiprocessing (SMP) architectures.
)
那么NUMA和SMP的区别与联系是什么呢
才发现,老师给我的《可扩展并行计算》里面就已经讲了各种架构。唉,本科就已经给我的宝藏,我到现在才发现。现在简单了解一下各种架构,然后慢慢地看书学习。不能影响当前的科研进度。
现在的家用电脑是NUMA架构的吗?