HPC系统实际上就是一个并行计算系统,很多初学者刚接触并行计算的时候会对MPI、OpenMPI和OpenMP产生非常大的疑惑,主要原因是对这几个概念本身理解的不清晰以及这几个缩写的字母确实是如此的近似。下面先通过一张图来看看MPI、OpenMPI和OpenMP的区别。
MPI(Message Passing Interface)是信息传递接口,是独立于语言的通信协议(标准),是一个库。MPI的实现有MPICH、MPI-1、MPI-2、OpenMPI、IntelMPI、platformMPI等等,OpenMPI(open Message Passing Interface)是MPI的一种实现,也是一种库项目。
OpenMP(Open Multiprocessing)是一种应用程序界面(即Application Program Interface),是一种并行的实现和方法,也可以认为是共享存储结构上的一种编程模型。
在当前的并行计算系统中,OpenMP和OpenMPI都是需要的(从上面的各自概念可以看出),OpenMP用于本地的并行计算(共享内存内存架构),支持目前所有平台上的程序共享内存式并行计算,它相当于是给出了一个让并行编程更加容易实现的模型,而OpenMPI则是用于机器之间的通信(分布式内存架构)。
从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构SMP (SymmetricMulti-Processor) ,非一致存储访问结构 NUMA(Non-Uniform MemoryAccess) ,以及海量并行处理结构MPP(Massive ParallelProcessing) 。
它们的特征分别是共享存储型多处理机有两种模型,即均匀存储器存取(Uniform-Memory-Access,简称UMA)模型和非均匀存储器存取(Nonuniform-Memory-Access,简称NUMA)模型。而COMA和ccNUMA都是NUMA结构的改进。
SMP (SymmetricMulti-Processor)
SMP对称多处理系统内有许多紧耦合多处理器,在这样的系统中,所有的CPU共享全部资源,如总线,内存和I/O系统等,操作系统或管理数据库的复本只有一个,这种系统有一个最大的特点就是共享所有资源。多个CPU之间没有区别,平等地访问内存、外设、一个操作系统。操作系统管理着一个队列,每个处理器依次处理队列中