Autopack
I found a really cool library while doing some mesh research: Autopack. In the message passing paradigm of parallelism, keeping tabs on latency is more important than the size of the data being sent. It’s better to send one huge chunk of data instead of many small messages. Unfortunately, without a lot of obfuscation and complexity, it’s inevitable that you send really small messages.
Autopack attempts to solve this automatically. I quote some features from the homepage:
- collective commands that proceed asynchronously
- automatic management of MPI send and receive requests
- management of message buffer memory
- determination of the number of anticipated incoming messages from a set of arbitrary sends
- deterministic message delivery from multiple sources to aid in program testing or debugging