2019年6月13日 下午2:07
- 这篇文章主要参考这个网站的教程,他没有涉及到上课讲到的advance topic内容,但是这些基本的用法对于新手来理解MPI是一个很好的教程
A Comprehensive MPI Tutorial Resource · MPI Tutorial

- 同一个程序,执行时指定不同的-n,也就是process的个数,会有很大的区别
- MPI Send and Receive · MPI Tutorial
- 每个人都有自己的数据区域,MPI的核心就是send_recv ,其他的操作可由这两个操作自己写出来
- MPI 乒乓程序
- 环程序
- MPI 广播以及集体(collective)通信 · MPI Tutorial
- 集合通信:最关键是要有一个同时的起点,这个用barrier来实现
- MPI Scatter, Gather, and Allgather · MPI Tutorial
- 对于所有的collective 操作,Processor 0 是一个特殊的存在
- 使用MPI_Scatter和MPI_Gather来计算平均数
- 代码中如果没有通过if rand来指定那个process来执行或者没有MPI_API的地方,那么就是所有processor都会执行,也就是说:::在写代码的时候需要两种思考角度::
- 站在单个processor的角度,考虑这些processors的通用步骤
- 站在全局的角度,考虑这几个processor的统筹安排(这时往往要考虑使用barrier,collective 操作就默认使用barrier)
- 对于代码中同一个位置的同一个MPI的内置函数api,不同的进程会有不同给的执行方法。
- 代码中如果没有通过if rand来指定那个process来执行或者没有MPI_API的地方,那么就是所有processor都会执行,也就是说:::在写代码的时候需要两种思考角度::
- MPI_Allgather 以及修改后的平均程序
- ::串行控制的是一个人,并行是同一套规则控制的是多个人::。当然,可以通过if来指定让谁做。好的地方是:对于一个人来说,其实是依然串行执行的,不会翻来赴去,坏的地方是:他们之间执行的先后次序每次执行是不一样的,每次执行都不一样。所以,重点是,最起码我们要保证在自己代码的功能,和自己需要的功能在与先后次序是无关的,不需要完全与次序无关。这才是最难的地方。
- MPI Reduce and Allreduce · MPI Tutorial


- 关于一些先进的Topic lesson3MPI_3_Advanced_Topics.pdf
- 这里总体思想就是和计算机网络的思想有点像:将硬件层和上层的软件层分离,作为程序与我们可以忽略硬件的排列和规格,进行
be "programmed" by the application developer.
- 这里总体思想就是和计算机网络的思想有点像:将硬件层和上层的软件层分离,作为程序与我们可以忽略硬件的排列和规格,进行