These microbenchmarks were originally developed by Evangelos Georganas to analyze the communication patterns in a high-performance de novo genome assembly application, HipMer.
They are described in full in [1]. To download (HipMer and) these microbenhcmarks together, go to https://sourceforge.net/p/hipmer .
The microbenchmarks are further useful for understanding any distributed memory application with similar communication patterns, as well as cross-architecture network performance, and for that reason, were packaged in this standalone release.
See [2] and [3] for example studies and further information.
This distribution also contains an OpenSHMEM port of MerBench from an external contributor, Antonio Lain. See the OpenSHMEM/ directory for details, including separate build and installation instructions.Developers:
Evangelos Georganas (original author), Rob Egan (HipMer integration, cross-platform portability), Marquita Ellis (fixes, extensions, standalone release)
cd <path-you-specified>/merbench/; mkdir build/; cd build; cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_UPC_COMPILER=$(which upcc) \ -DCMAKE_INSTALL_PREFIX=../install/ \ ../ make all install
...Note, this will result in the following file structure (which you very well may want to change):
merbench/ src/ build/ install/ bin/
-i <some integer=""> specifies the number of iterations over which to run each communication pattern (per message size)
-b <some integer=""> specifies the bound (inclusive) on maximum message size (in bytes)
-p <some integer=""> (optional) sets the size (in bytes) of per-thread local memory. By default, it is 10Kb.</some></some></some>
An example command is the following, using the default -p value:
upcrun -shared-heap=1500M -q -n 1920 ${INSTALL_PATH}/benchmark${IT} -i 20000 -b 32768
Assuming ${INSTALL_PATH} specifies the location of your installation, this command runs one of the benchmarks (replacing ${IT} with "Constr", "Trav", or "Get") with 1920 upc threads, up to message size 32768 bytes, and 20,000 iterations per message size.
The latency, bandwidth, and total elapsed time summary per message size will be output to stdout. The per-thread statistics will be written to *.dat files.
For further explanation of the upcrun parameters, see http://upc.lbl.gov/docs/user/upcrun.html.