exp1: MPI 异步通信
3/15/22About 1 min
任务一
| 编号 | 消息长度 | 计算量 | 总耗时 |
|---|---|---|---|
| 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 后不等待消息发送, 而是立刻进行计算, 计算完成后再等待消息发送完毕.