[CMU 15-418] (Lecture3) Parallel Programming Abstractions

本系列文章为 CMU 15-418/15-618: Parallel Computer Architecture and Programming, Fall 2018 课程学习笔记
课程官网:CMU 15-418/15-618: Parallel Computer Architecture and Programming
参考文章:CMU 15-418 notes
相关资源与介绍:CMU 15-418/Stanford CS149: Parallel Computing - CS自学指南


Ways of thinking about parallel programs, and their corresponding hardware implementations, ISPC programming


Example: Prograamming with ISPC

Intel SPMD Program Compiler(ISPC)
SPMD: single program multiple data

image.png
image.png


1. SPMD vs SIMD

SPMD是编程抽象
ISPC编译器生成SIMD指令,使用SIMD指令来计算而不是生成若干线程来计算
实例Instance数量为SIMD width或其倍数

image.png
image.png


2. Interleaved vs Blocked

根据Schedule
从缓存角度来看,Interleaved assignment相较Blocked assignment有更好的局部性,出现cache miss的次数更少
image.png
具体取决于Cache的大小

image.png
image.png
image.png
image.png


Three machine architectures

image.png
image.png
image.png


Three parallel programming models

1. Shared address space

共享地址,通过读写共享的变量来进行通信
进程间通信(IPC)方法
需要有同步原语操作,例如locks,信号量等
但是拓展比较难,因为拓展的代价是在硬件上

image.png


访问共享地址的方法:
UMA(Uniform memory access):用于访问SMP(Symmetric multi-processor)
NUMA(Non-Uniform memory access):扩展性相对较好,有本地内存可以带来更小的延迟和更高的带宽。缺点是需要花费更多在协调各个本地内存上。

image.png
image.png


2. Message passing

消息传递模型
进程间通信(IPC)方法,MPI,RPC

image.png
image.png


共享地址和消息传递可以相互实现

image.png


3. Data parallel

exmaples: ispc, cuda, etc.
之前是向量操作,现在是用一种 map(funciton, collections) 利用function或者算子对数据进行独立操作
foreach contruct is a map
在并行中,程序的逻辑可能会出现问题,会出现不确定问题。所以要可以stream programming model 确定一个固定顺序

image.png


流式处理优势:数据提前准备好,可以预取。第一个kernel的输出可以立刻应用于第二个kernel,利用了空间局部性,且数据暂存在cache中,可以节省带宽
流式处理缺点:需要库来提供更强大的operator,且依赖编译器能够给出合适的代码

image.png
image.png


gather/scatter通过给定的下标对数据进行读写

image.png
image.png


image.png


Summary

mixed programming models

image.png
image.png
image.png
image.png

posted @ 2023-04-24 14:56  zncleon  阅读(169)  评论(0)    收藏  举报