并行计算:并行计算机与并行模型的分类

视频来源:新竹清华大学:并行计算与并行编程课程

分类:1.Flynn's classic taxonomy: 从哈佛结构 CPU的处理器做的分类,基于两个维度:指令及数据(GPU:属于SIMD)

               SISD:单指令,单数据 ,单指令是指在CPU的一个时钟周期 只有一条指令发生动作,单数据是指在CPU的一个任意时钟周期只有一个数据流作为输入。

               SIMD:单指令,多数据,单指令是指所有的计算单元在每个周期内执行相同的指令,多数据是指处理单元可以执行不同的数据。比如GPU,量化处理(X86 AVX指令集)。

                

                MISD:多指令,单数据流,多指令是指 每个处理单元可以通过 分离的指令流  来独立  的处理数据。单数据是指单个数据流送入到多个计算单元中。

                 MIMD:多指令,多数据,每个计算单元可以执行不同的指令流,每个计算单元可以处理不同的数据流。缺点:复杂度很大。如多核CPU。

            2. Memory archicture classification: 从哈佛结构 内存上进行分类

                 Shared Memory: 不同CPU可以访问同一个内存。根据内存的Access ,latency 及速度 可以分为一致/不一致,

                       一致性(UMA):所有CPU与内存直接相连,他们之间的速度是一致的。

                       不一致性(NUMA):多个CPU连接在一个内存上,不同内存之间存在交流,这里造成冗余。也是非一致性的原因。注意的是需要决定程序运行在哪块CPU/内存上。

                 Distributed Memory:不同CPU都有对应的内存,无法读取对方的内存进行沟通,各自管理。

                        

                     沟通:需要一个 沟通网络 来连接内部处理 内存,每个处理器由自己独立的 内存及 地址空间, 不能任意修改 其他处理器的内存。编程时需要注意不同计算单元之间 何时 及 如何 进行 数据的传递。

             3. 编程模式的分类。

                 并行编程模式 基于硬件及内存结构 以 抽象的形式(编程语言) 存在。本质:硬件抽象

                 可分为shared memory prog:用于共享内存机器,message passing prog:针对分布式系统。但编程模式不受限于共享/分布式系统,如 message passing model可以跑在 shared memory上,如signle server上的MPI, shared memory model on distributed memory  如partitioned Global Address Space(此类代价较大)。

             Shared Memory :  两种编程库:Pthread(很底层,编程复杂),OpenMP(很高层次,编程简单)

                

              Message Passing:主要在于 内存之间的沟通,内存拷贝,主要用到的库:MPI API

                                                                  

              总结:shared memory:快,但规模受限,message passing:程序可以控制,但需要定义接送数据,且要对应,内存拷贝需要开销

 

猜你喜欢

转载自www.cnblogs.com/fourmi/p/11919701.html