「原创声明:保留所有权利,禁止转载」
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
一般这种情况,我会自己加互斥锁。课程没有介绍解决办法。。。
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。