This is the standalone libhcoll integration example.

This code enables two hcoll collectives (bcast and allreduce), it demonstrates
what should be done in order to integrate hcoll into MPI library,
in particular there should be implemented set of functions which will be used
by libhcoll.

This example includes two correctness tests. 
The first one checks libhcoll implementation of bcast correctness, 
the second one checks libhcoll implementation of allreduce.
Both of these tests are running on two different communicators: 
MPI_COMM_WORLD and other communicator which consists just of even ranks.



* Licensing



* What you will need to compile



This example uses MPI. It requires libhcoll libs and includes.



* How to install:



export MPI_HOME=<path to MPI>

export HCOLL_HOME=<path to libhcoll>

export LD_LIBRARY_PATH=/path/to/hcoll/install/lib:$LD_LIBRARY_PATH

make



* How to run:

If you are using the p2p bcol at the top level (i.e. not using CORE-Direct, but a generic p2p substrate), then use the following command line

$MPI_HOME/bin/mpirun -np 4 -x HCOLL_BCOL=basesmuma,basesmuma,ptpcoll -x HCOLL_SBGP=basesmsocket,basesmuma,p2p -x HCOLL_ML_USE_KNOMIAL_ALLREDUCE=1 -x HCOLL_ML_NEED_ALLREDUCE_SUPPORT=0 -x HCOLL_ML_CONFIG=$HCOLL_HOME/include/hcoll/ml/mca-coll-ml.config ./hcoll_sdk <num_iterations> <num_elements>

If you wish to use the CORE-Direct bcol a.k.a iboffload bcol, then use the following command line

$MPI_HOME/bin/mpirun -np 4 -x HCOLL_BCOL=basesmuma,basesmuma,iboffload,ptpcoll -x HCOLL_SBGP=basesmsocket,basesmuma,ibnet,p2p -x HCOLL_ML_USE_KNOMIAL_ALLREDUCE=1 -x HCOLL_ML_NEED_ALLREDUCE_SUPPORT=1 -x HCOLL_ML_CONFIG=$HCOLL_HOME/include/hcoll/ml/mca-coll-ml.config ./hcoll_sdk <num_iterations> <num_elements>


* Understanding command line arguments


Optional parameters:

<num_iterations> - number of iterations collectives were launched
<num_elements> - number of elements in bcast's send buffer.



Good luck!
