《Python并行编程 中文版》 学习笔记
https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest
并行编程概念
介绍
- 基于系统架构
- 基于程序
解决一个大问题的一般方法是:将其拆分成若干小的、独立的问题,然后分别解决它们。
软件应用要求越来越高的计算机能力。
提高计算能力有两种思路:
- 提高处理器时钟速度 - (跑的更快)- 需要解决散热问题
- 增加芯片的核心数 - (多个组件同时跑)
内存架构
- 单处理器
- 单数据 SISD single instruction single data
- 多数据 SIMD single instruction multiple data
- 多处理器
- 单数据 MISD
- 多数据 MIMD
这种分类方法叫 “费林分类”
SISD 传统的冯诺依曼体系 | SIMD n个独立的处理器(每个有自己的局部内存) n个数据流,每个处理器处理一个;同时处理每一步 数据并行 |
---|---|
MISD 有n个处理器(共享一个内存单元) 这种并行地实际上指令层面的并行 (现实中没有用武之地,做为抽象模型存在) |
MIMD n个处理器(有自己的控制单元和局部内存) n个指令流 n个数据流 每个处理器在独立的控制单元分配的指令流下工作 通过线程或者进程层面的并行来实现,意味着处理器一般是异步工作的。 |
内存管理
内存存取周期
连续启动两次读/写操作所需要间隔的最小时间。
- 共享内存
- UMA uniform memory access 均匀内存访问 (这些系统也称为对称式多处理器)
- 分布式内存
- NUMA non-uniform memory access 非均匀内存访问(分布式内存共存内存系统)
- 无远程内存访问 no remote memory access
- 仅cache可访问 cache only memory access coma