Based on some discussion on this list, I integrated a zlib-based compression
ability into ORTE. Since the launch message sent to the orteds and the modex
between the application procs are the only places where messages of any size
are sent, I only implemented compression for those two exchanges.
I have found virtually no benefit to the compression. Essentially, the
overhead consumed in compression/decompressing the messages pretty much
balances out any transmission time differences. However, I could only test
this for 64 nodes, 8ppn, so perhaps there is some benefit at larger sizes.
Even though my test size wasn't very big, I did try forcing the worst-case
scenario. I included all available BTL's, and ran the OOB over Ethernet.
Although there was some difference, it wasn't appreciable - easily within
the variations I see on this rather unstable machine.
I invite you to try it yourself. You can get a copy of the code via:
hg clone http://www.open-mpi.org/hg/hgwebdir.cgi/rhc/gather
You will need to configure with LIBS=-lz.
Compression is normally turned "off". You can turn it on by setting:
-mca orte_compress 1
You can also adjust the level of compression:
-mca orte_compress_level [1-9]
If you don't specify the level and select compression, the level will
default to 1. From my tests, this seemed a good compromise. The other levels
provided some small amount of better compression, but took longer.
With compression "on", you will get output telling you the original size of
the message and its compressed size so you can see what was done.
Please let me know what you find out. I would like to reach a decision as to
whether or not compression is worthwhile.