导航:首页 > 编程知识 > 传统并行编程模型有哪些

传统并行编程模型有哪些

发布时间:2024-12-10 03:28:18

❶ 并行体系结构出现的原因是

并行体系结构出现主要因为随着各个领域对高性能计算的要求越来越高,尤其是多媒体领域大数据量高实时性的需求,使得传统的单处理器体系结构已经很难适应大规模并行计算的需求,于是多处理器并行体系结构逐渐成为研究的热点。

并行结构一般是指并行体系结构和软件架构采取并行编程。主要目的是使更多任务或数据同时运行。并行体系结构是指许多指令能同时进行的体系结构;并行编程一般有以下模式:共享内存模式;消息传递模式;数据并行模式。

数据库中,为了提高存取和查询速率,会同时采用以上两种并行结构。并行性有两种解释,同时性:两个或两个以上的事件在同一时刻发生。并发性:两个或两个以上的事件在同一时间间隔发生。

从处理数据的角度看,并行性等级从低到高可分为四类。字串位串:同时只对一个字的一位进行处理。这是最基本的串行处理方式,不存在并行性。字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。这里已开始出现并行性。

字并位串:同时对许多字的同一位进行处理。这种方式有较高的并行性。全并行:同时对许多字的全部位进行处理。这是最高一级的并行。在数据库中,并行结构主要是处理数据来分析的,具体采用哪一级并行性,主要与数据规模、机器设备和程序架构有关。

并行体系结构:

1、数据级并行它的出现是因为可以同时操作许多数据项。

2、任务级并行它的出现是因为创建了一些能够单独处理但大量采用并行方式执行的工作任务。

3、指令级并行在编译器的帮助下,利用流水线之类的思想适度开发数据级并行,利用推理执行之类的思想以中等水平开发数据级并行。

4、向量体系结构和图形处理器将单条指令并行应用于一个数据集,以开发数据级并行。

5、线程级并行在一种紧耦合硬件模型中开发数据级并行或任务级并行,这种模型允许在并行线程之间进行交互。

6、请求级并行在程序员或操作系统指定的大量去耦合任务之间开发并行。

❷ CUDA/SIMD/SIMT/DSA 关系

实现并行的编程方式

一共有三种不同的编程模型:串行(SISD)、数据并行(SIMD)和多线程(MIMD/SPMD)。

选择合适的并行计算模型可以更好地利用硬件资源,提高程序的性能和效率。

串行执行与 SISD(Single Instruction, Single Data)类似,每次 for 循环(Iter.i)都要执行一次向量 A 和向量 B 相加之后得到向量 C 的操作。在 CPU 中经常使用这种方式。

流水执行 PPE 是流水执行中的一种处理器架构,指令被分成多个阶段,每个阶段由一个专门的处理单元负责执行,从而实现指令的并行处理。

乱序执行 OOE 中,处理器可以在不改变程序语义的情况下,通过重新排序指令的执行顺序来提高指令级并行度和性能。

超长指令集 VLIW 架构是一条指令可以同时包含多个操作,这些操作可以在同一时钟周期内并行执行。

数据并行主要通过循环中的每个迭代独立实现,在硬件层面通过提供 SIMD 较宽的 ALU 执行单元。

多线程 SPMD 指的是在 SPMD 模型中使用多个线程来执行并行计算任务,每个线程处理不同的数据。

GPU 的 SIMT 实际上是具体硬件执行 SIMD 指令,采用并行编程模式使用 SPMD 来控制线程的方式。

NVIDIA 公司于 2007 年发布了 CUDA,支持编程人员利用更为通用的方式对 GPU 进行编程。

SIMD 是单顺序的指令流执行,每条指令多个数据输入并同时执行。

SIMT 是标量指令的多个指令流,可以动态地把线程按 wrap 分组执行。

英伟达 GPU 采用了 SIMT 的指令执行模式,给相关产品带来以下优势:通过细粒度的多线程调度将处理器的执行流水线细分为更小的单元,使得不同线程的指令可以交错执行,减少指令执行的等待时间和资源浪费,实现访存和计算并行。

Warp 是在不同地址数据下,执行相同指令的线程集合,所有线程执行相同的代码,可以看到 Thread Warp 中有很多个 Thread,多个 Warp 组成 SIMD Pipeline 执行对应的操作。

在 GPU 宏观架构层面,GDDR 里面的数据通过内存控制器传输到片内总线,然后分发到具体的核心,在每个执行核心中会有 SIMD 执行单元,实现并行计算。

AMD 的显卡也有大量的计算单元和计算核心,但采用的是 GCN 架构,搭载 GCN 系列架构的产品在游戏机等场景获得较高市场份额,但在数据中心市场并未取得显著成果,这与其性能表现有关。目前 AMD 将其 GPU 架构开发分为单独的 CDNA 和 RDNA 线路,分别专门用于计算和图形。

NVIDIA 推出 CUDA 并遵循自定义的 SIMT 架构,实现了对通用计算的高效支持,构建了用户易于实现的 SPMD 编程模型。如今整个科学计算、HPC 和 AI 的软件生态大多构建在 CUDA 的基础之上。

阅读全文

与传统并行编程模型有哪些相关的资料

热点内容
哪些地方网络信号更好些 浏览:753
jar反编辑工具 浏览:614
描述数据波动大小有哪些 浏览:584
u盘exfat可复制4g以上的文件吗 浏览:667
a4大小的文件过塑多少钱 浏览:26
畅天游2app在哪里下载 浏览:844
微信看文字的图片 浏览:298
将文件直接粘入word 浏览:134
VIP解析APP有哪些 浏览:463
怎样彻底卸载cad文件 浏览:829
iphone4港版 浏览:624
怎么用命令打开程序错误 浏览:665
iphone6怎么改控制中心 浏览:808
ns错误代码 浏览:653
iphone4s如何取消软件更新提示 浏览:538
jsp打印换行 浏览:662
哪个软件可以编程手机软件 浏览:554
如东如何学数控编程培训 浏览:5
微信h5页面怎么修改 浏览:931
手机怎么无法打开视频文件夹 浏览:840

友情链接