先搞清楚MIMD和SIMD,共享内存并行和分布式内存并行,遍几个并行的科学计算程序

国外GPU生产力

https://render.otoy.com/octanebench/results.php?v=2020.1.5&sort_by=avg&scale_by=linear&filter=&singleGPU=0&showRTXOff=0

 

这个图可以简单粗暴的看自己显卡升级后性能提示多少

SIMD和MIMD的区别

Michael Flynn 将计算机组织分为 SIMD 和 MIMD。其中,SIMD 代表单指令多数据。MIMD 代表多指令多数据。

在 SIMD 设计中,一条指令在恒定时间内应用于一堆信息或不同的数据。SIMD 在性能方面的效率低于 MIMD。

SIMD和MIMD的区别

另一方面,MIMD 设计同时对完全不同的信息应用多个方向。MIMD 在性能方面比 SIMD 更有效。

SIMD和MIMD的区别

SIMD 和 MIMD 的主要区别在于,SIMD 具有单个解码器。而 MIMD 有多个解码器。

下面来看看 SIMD 和 MIMD 之间的比较区别:

编号SIMDMIMD
1.SIMD 代表单指令多数据。MIMD 代表多指令多数据。
2.SIMD 需要很小或更少的内存。MIMD需要更多或更大的内存。
3SIMD的成本低于MIMD。MIMD比 SIMD 更昂贵。
4单解码器。MIMD有多个解码器。
5SIMD是潜在的或默认的同步。MIMD是准确的或显式的同步。
6SIMD是一种同步编程。MIMD 是一种异步编程。
7SIMD 在复杂性方面比 MIMD 简单。MIMD 在复杂性方面比 SIMD 复杂。
8SIMD 在性能方面比 MIMD 效率低。MIMD 在性能方面比 SIMD 更有效。

123

GPU上基于SIMD的实现模式与多核CPU上基于MIMD的实现模式各有什么优缺点

由于每个执行单元的指令流都是相同的,SIMD模式将指令的获取时间均摊到每一个执行单元。但是,当指令流出现分支,指令就会被序列化。而MIMD模式的设计主要是为了处理不同指令流,当指令流出现分支,它不需要对线程进行阻塞。然而它需要更多指令存储以及译码单元,这就意味着硬件需要更多的硅,同时,为了维持多个单独的指令序列,它对指令带宽的需求也非常的高。

一般使用SIMD与MIMD的混合模式才是最好的方案。用MIMD的模式处理控制流,用SIMD的模式处理大数据,在CPU上使用SSE/MME/AVX指令扩展集时就是采用的SIMD与MIMD的混合模式,而在GPU上,当线程束于线程块以高粒度处理分支情况时也采用的混合模式。

SIMD 和 MIMD 是对并行体系结构类型的简单分类,指的是计算机具有单个(S)或多个(M)指令流(I)和数据流(D)。经过简单的组合就可以有4种类型的体系结构:SISD、 SIMD、MISD 和 MIMD。

我们直接跳过SISD和MISD,讨论SIMD和MIMD。

单指令多数据(SIMD)意味着所有并行单元共享相同的指令,但它们计算不同的数据。例如,执行数组[1,2,3,4]加上[5,6,7,8],得到一个数组[6,8,10,12]。此时共有4个算术单元在工作,但它们都可以共享相同的指令(此处为“加法”),并且所有相同的操作都是同步执行的。下图是表明SIMD的图片:

 

SIMD 用于需要大量计算且所有处理器执行相同工作的情况。由于 SIMD 设计简单,成本更低,速度更快。由于是同步的,SIMD 架构中的编程相对容易。

SIMD 仅限于少数应用,在我们没有相同且独立的任务的情况下使用 MIMD 架构。多指令多数据(MIMD)意味着每个并行单元具有独立的指令,因此每个单元都可以在任何时间执行不同的操作;一个执行加法,另一个可能执行乘法,另一个可能执行分支等等。这时可以让程序将函数调用分发给不同的处理器上执行,这些核心都是独立的,无论它们是在同一芯片上(多核)、不同的芯片上(多处理器),还是两者的混合。下图是表明MIMD的图片:

MIMD 操作可能同步也可能不同步。由于设计的复杂性,MIMD 处理器往往很昂贵,可以比SIMD解决更复杂的问题。

 

 

https://zhuanlan.zhihu.com/p/439346599

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。