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

发布时间 2023-04-24 15:02:13作者: zncleon

本系列文章为 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自学指南


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)**
foreach contruct is a map
在并行中,程序的逻辑可能会出现问题,会出现不确定问题。所以要可以stream programming model 确定一个固定顺序** **

image.png
image.png
image.png


gather/scatter

image.png
image.png


image.png


Summary

mixed programming models

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