有时 MPI 用于在消息中发送低熵数据。因此,在发送消息之前尝试压缩消息会很有用。我知道 MPI 可以在非常快的网络(10 Gbit/s 或更高)上工作,但许多 MPI 程序与廉价网络(如 0.1G 或 1Gbit/s 以太网)和廉价(慢速、低二分)网络交换机一起使用。有一个非常快的Snappy (wikipedia)压缩算法,它有
Compression speed is 250 MB/s and decompression speed is 500 MB/s
所以在可压缩数据和慢速网络上,它会提供一些加速。
是否有任何可以压缩 MPI 消息的 MPI 库(在 MPI 层;而不是像 PPP 那样压缩 ip 数据包)。
MPI 消息也是结构化的,因此可以有一些特殊的方法,例如压缩 double 数组中的指数部分。
PS:还有LZ4 compression速度相当的方法
最佳答案
我不会发誓那里没有,但没有常用的。
它不常见的原因有两个:
MPI 通常用于发送大量难以(但并非不可能)压缩良好的浮点数据,并且通常在一段时间后具有相对较高的熵。
此外,MPI 用户通常与带宽一样关注延迟,并且在消息传递关键路径中添加压缩/解压缩步骤对这些用户没有吸引力。
最后,一些操作(如减少集合或分散收集)将很难通过压缩有效地实现。
但是,听起来您的用例可以从点对点通信中受益,因此您没有理由不能自己完成。如果您要发送大小为 N 的消息并且接收者期望它,那么:
接收器
解压程序
关于压缩例程我不能给你太多指导,但看起来人们以前确实尝试过这个,例如 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.91.7936 .
关于compression - MPI:是否有能够压缩消息的 MPI 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849983/