1并行计算与Python起步 1
介绍 1
并行计算内存架构 2
内存组织 5
并行编程模型 10
如何设计并行程序 12
如何评估并行程序的性能 14
Python简介 16
并行世界中的Python 20
进程与线程介绍 21
开始在Python中使用进程 21
开始在Python中使用线程 23
2基于线程的并行 27
介绍 27
使用Python的线程模块 28
如何定义线程 28
如何确定当前的线程 30
如何在子类中使用线程 32
使用Lock与RLock实现线程同步 34
使用RLock实现线程同步 38
使用信号量实现线程同步 40
使用条件实现线程同步 44
使用事件实现线程同步 47
使用with语句 51
使用队列实现线程通信 53
评估多线程应用的性能 57
3基于进程的并行 63
介绍 64
如何生成进程 64
如何对进程命名 66
如何在后台运行进程 68
如何杀死进程 69
如何在子类中使用进程 70
如何在进程间交换对象 72
如何同步进程 78
如何管理进程间状态 81
如何使用进程池 82
使用mpi4py模块 84
点对点通信 87
避免死锁问题 91
使用广播实现聚合通信 94
使用scatter实现聚合通信 96
使用gather实现聚合通信 99
使用Alltoall实现聚合通信 101
汇聚操作 103
如何优化通信 105
4异步编程 111
介绍 111
使用Python的concurrent.futures模块 112
使用Asyncio实现事件循环管理 116
使用Asyncio处理协程 120
使用Asyncio管理任务 125
使用Asyncio和Futures 128
5分布式Python 133
介绍 133
使用Celery分发任务 134
如何使用Celery创建任务 136
使用SCOOP进行科学计算 139
使用SCOOP处理映射函数 143
使用Pyro4远程调用方法 147
使用Pyro4链接对象 150
使用Pyro4开发一个客户端-服务器应用 156
使用PyCSP实现顺序进程通信 162
在Disco中使用MapReduce 167
使用RPyC调用远程过程 172
6使用Python进行GPU编程 175
介绍 175
使用PyCUDA模块 177
如何构建一个PyCUDA应用 181
通过矩阵操作理解PyCUDA内存模型 186
使用GPUArray调用内核 192
使用PyCUDA对逐元素表达式求值 194
使用PyCUDA进行MapReduce操作 198
使用NumbaPro进行GPU编程 201
通过NumbaPro使用GPU加速的库 206
使用PyOpenCL模块 211
如何构建一个PyOpenCL应用 214
使用PyOpenCL对逐元素表达式求值 218
使用PyOpenCL测试GPU应用 221