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