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

Posted fourmi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并行计算:并行计算机与并行模型的分类相关的知识,希望对你有一定的参考价值。

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

分类: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:程序可以控制,但需要定义接送数据,且要对应,内存拷贝需要开销

技术图片

 

 技术图片

 

 

以上是关于并行计算:并行计算机与并行模型的分类的主要内容,如果未能解决你的问题,请参考以下文章

数据并行与模型并行

《并行计算》期末总结

并行计算基础&编程模型与工具

并行算法设计

并行计算与分布式计算原理

并行计算与分布式计算原理