一、并行计算机和分布式计算
1. 共享内存
一个计算机;其所有进程共享一个内存。
利:简单,并行(比如OpenMP)
弊:进程数量及内存受限,无法扩展。
2. 分布内存
多台计算机经由网络相连。
每个节点的进程无法访问其他节点的内存。
利:易于扩展,加节点。
弊:需要将内存从一个节点转移到另一个节点;如果彼此输出的数据量大时,代价高;网络的代价超过复制内存的代价。
Note:
一个进程的不同线程可以访问同一个内存;
不同的进程永远不能访问同一个内存(即使是同一台主机上的不同进程);
因此我们也可以在同一台主机上的不同进程之间进行分布式计算。
典型的Cluster:
Ada
Turing
MPI: Message Passing Interface
定义进程之间交流规则,有多种语言可用:C, C++ (弃用的 MPI-3), Fortran,Java, Python. . .也可以。提供了一组用于通信和数据交换的功能。
使用MPI的代码的原理:
- 多个进程并行启动。
- 每个进程运行该程序。
- 该程序描述了每个过程的作用。
- 关注过程的同步以及它们之间的数据交换。
MPI消息由以下部分组成:
- 沟通器(本质上是一组过程)
- 发送者的标识符,
- 传输的数据类型,
- 它的长度,
- 数据本身,
- 接收者的标识符。
MPI应用领域:天气预报,加密技术,核爆炸建模,天体物理学,粒子动力学(交互作用计算),模式匹配(DNA比较,图像处理)。
可用资源:
开源实现
MPICH2 : http://www.mpich.org
OpenMPI : http://www.open-mpi.org
资料
http://www.open- mpi.org/doc/v1.10/ http://www.mpi- forum.org/docs/
机器
http://top500.org/ http://green500.org/
资源
http://www.idris.fr/data/cours/parallel/mpi/IDRISMPI.pdf