exp1: MPI 异步通信
About 1 minAbout 364 words
任务一
编号 | 消息长度 | 计算量 | 总耗时 |
---|---|---|---|
1 | 16384 | 0 | 0.203542 ms |
2 | 32768 | 0 | 0.431834 ms |
3 | 65536 | 0 | 0.658495 ms |
4 | 131072 | 0 | 1.17202 ms |
5 | 262144 | 0 | 1.97818 ms |
6 | 524288 | 0 | 3.79249 ms |
7 | 1048576 | 0 | 7.23377 ms |
8 | 2097152 | 0 | 14.1605 ms |
9 | 4194304 | 0 | 28.2017 ms |
10 | 8388608 | 0 | 56.3029 ms |
11 | 16777216 | 0 | 113.967 ms |
12 | 33554432 | 0 | 224.596 ms |
- 每次消息长度是倍增的,总耗时的变化趋势是如何的?
总耗时近似与消息长度呈近似的正比关系.
- 为什么会有这样的趋势?
带宽存在上限. 因此消息长度越长, 发送所需的时间越长, 且通信速度稳定的情况下近似成正比.
任务二
编号 | 消息长度 | 计算量 | mpi_sync 总耗时 | mpi_async 总耗时 |
---|---|---|---|---|
1 | 100000000 | 10 | 774.084 ms | 664.895 ms |
2 | 100000000 | 20 | 866.185 ms | 662.789 ms |
3 | 100000000 | 40 | 1073.73 ms | 695.044 ms |
4 | 100000000 | 80 | 1518.8 ms | 800.207 ms |
5 | 100000000 | 160 | 2277.11 ms | 1600.32 ms |
- 通信时间和计算时间满足什么关系时,非阻塞通信程序能完美掩盖通信时间?
当通信时间小于计算时间时, 非阻塞通信程序能完美掩盖通信时间.
- 简述两份代码的不同之处。
mpi_sync
在等待消息发送完成后才进行计算, 而 mpi_async
在调用 MPI_Isend
后不等待消息发送, 而是立刻进行计算, 计算完成后再等待消息发送完毕.