一片自留地 UCB CS61C L21-L23 并行

magicyang · 2021年01月27日 · 2935 次阅读

L21 数据并行

Flynn Taxonomy

SIMD

Intel 的 SIMD 指令


ARM 有对应的 NEON/AARCH64/SVE 2048。
RISC-V 的 V 扩展指令集

L22 程序并行及 OPENMP

Use multiple cores to run multiple tasks in parallel

进程的状态迁移:

线程并行:

线程资源:

多线程和多核的对比


实际的应用语言,无论是 C++/JAVA/PYTHON 创建的线程,都会有相应的线程管理库映射到操作系统内核线程。
具体是线程库还是内核线程去管理绑哪个核,我暂时还不清楚,还需要学习。

Amdahl's Law

数据竞争

同步

这里简单介绍了一下 lock。
和软件锁不同,CS61C 着重介绍的是原子操作。

OPENMP

用过简单的。
https://computing.llnl.gov/tutorials/openMP/
简单的基本够用了。

L23

OPENMP 注意事项:


关注数据依赖性和共享。

并行的 CACHE 一致性

基于多核的设计

实现方法:

缓存一致性协议:MOESI

MSI


MESI


MOESI


False Sharing


一般这种情况,我会自己加互斥锁。课程没有介绍解决办法。。。

共收到 0 条回复 时间 点赞
magicyang 关闭了讨论 01月28日 13:47
magicyang 重新开启了讨论 01月28日 14:12
magicyang 关闭了讨论 01月28日 17:50
magicyang 重新开启了讨论 01月28日 18:53
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册