MPI知识笔记

MPI-2: 支持单边通信;

MPI-3: 支持非阻塞的Collective通信, 可以更大程度的并行计算和通信;例如MPI_Iallreduce

 

SSE/AVX: SIMD

CUDA: SIMT  (T:Thread)

MPI: SPMD/MPMD (P:Program)

OpenMP: SMP

 

MPI_Rank和if-else决定每个进程做不同事儿;

可创建新的进程组(全局是MPI_COMM_WORLD)

点对点通信: MPI_Send/MPI_Recv

组播通信:MPI_Allreduce/MPI_Reduce/MPI_Bcast/MPI_Gather/MPI_Scatter (通信+同步+计算)

同步:MPI_Barrier

单边通信

用户自定义数据类型:可处理不连续的数据。在发送方将不连续数据打包到连续的区域,然后发送,接收方将打包后的连续数据解包到不连续的存储空间

 

重要:对于相同的数据量:尽量传递少量的大数据包,避免传递很多小的数据包(尽量少的MPI消息传递函数的调用,可以减小系统的开销)

性能Profiling工具:Vampir(可以一段一段的Application时间和MPI调用时间)

MPI_Probe,检测消息是否到达,但不接收消息

空进程:MPI_PROC_NULL

 

MPI_Send和MPI_Recv必须成对出现,否则可能死锁!

例子:2个进程彼此向对方发送数据;1. 都先接收再发送,肯定死锁; 2. 都先发送再接收,不安全,因为当双方发送buffer都满的时候会死锁;

解决方案:1. 一个先发送再接收,一个先接收再发送;2. MPI_Sendrecv; 3. MPI_Isend或MPI_Irecv用一个就够了(+MPI_Wait or MPI_Test)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值