有时MPI用于在消息中发送低熵数据。因此,在发送消息之前尝试压缩消息会很有用。我知道MPI可以在非常快的网络(10 Gbit / s甚至更高)上工作,但是许多MPI程序与廉价网络(如0,1G或1Gbit / s以太网)和廉价(慢速,低二分)网络交换机一起使用。有一个非常快的Snappy (wikipedia)压缩算法,它具有
压缩速度为250 MB / s,解压速度为500 MB / s
所以在可压缩数据和慢速网络上,它会带来一些加速。
是否有任何可以压缩MPI消息的MPI库(在MPI层;而不是像PPP中那样压缩ip数据包)。
MPI消息也是结构化的,所以可以有一些特殊的方法,比如在double数组中压缩指数部分。
PS:还有LZ4 compression方法具有可比速度
答案 0 :(得分:7)
我不会发誓那里没有,但没有一个共同使用。
有几个原因导致它不常见:
MPI通常用于发送大量浮点数据,这些浮点数据难以(但不是不可能)压缩得很好,并且经常在一段时间后具有相对较高的熵。此外,MPI用户通常将延迟视为带宽,并且在消息传递关键路径中添加压缩/解压缩步骤对这些用户不具吸引力。
最后,一些操作(如简化集合或分散聚集)很难通过压缩有效实现。
但是,您的用例听起来像点对点通信可以从中受益,所以没有理由不能自己做。如果您要发送大小为N的消息,接收者会预期它:
我无法就压缩程序向你提供太多指导,但看起来人们之前已尝试过,例如http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.91.7936。
答案 1 :(得分:4)
我会很高兴被告知,但我不认为我们很多MPI用户都担心有一个压缩数据的传输层。
为什么不呢?
1)我们已经设计了尽可能少的通信程序,所以我们(想想我们)正在通过互连发送最小的数据。
2)我们较大的消息的大部分包括浮点数的数组,这些数组在任何程度上压缩都相对困难(因此在时间上相对昂贵)。
答案 2 :(得分:2)