本系列文章为 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
1. SPMD vs SIMD
SPMD是编程抽象
ISPC编译器生成SIMD指令,使用SIMD指令来计算而不是生成若干线程来计算
实例Instance数量为SIMD width或其倍数
2. Interleaved vs Blocked
根据Schedule
从缓存角度来看,Interleaved assignment相较Blocked assignment有更好的局部性,出现cache miss的次数更少
具体取决于Cache的大小
Three machine architectures
Three parallel programming models
1. Shared address space
共享地址,通过读写共享的变量来进行通信
进程间通信(IPC)方法
需要有同步原语操作,例如locks,信号量等
但是拓展比较难,因为拓展的代价是在硬件上
访问共享地址的方法:
UMA(Uniform memory access):用于访问SMP(Symmetric multi-processor)
NUMA(Non-Uniform memory access):扩展性相对较好,有本地内存可以带来更小的延迟和更高的带宽。缺点是需要花费更多在协调各个本地内存上。
2. Message passing
消息传递模型
进程间通信(IPC)方法,MPI,RPC
共享地址和消息传递可以相互实现
3. Data parallel
exmaples:** ispc, cuda, etc.
一种map(funciton, collections)**
foreach contruct is a map
在并行中,程序的逻辑可能会出现问题,会出现不确定问题。所以要可以stream programming model 确定一个固定顺序** **
gather/scatter
Summary
mixed programming models
- Abstractions Programming Lecture3 Parallel Lectureabstractions programming lecture3 parallel abstractions programming parallel lecture programming lecture4 parallel lecture programming parallel lecture basics lecture3 lecture3 lecture abstractions programming笔记242 abstractions programming笔记84 abstractions programming笔记106 abstractions programming笔记127