HCOLL
HCOLLはNVIDIA HPC-X Software Toolkitに内包されている、MPIの集団通信のためのコレクション。
ソースは公開されていない。
OpenMPIとの関係
OpenMPIからHCOLLで実装されている集団通信を呼び出すことができる。 OpenMPIとの関係性は図のようになっており、UCCと同列。HCOLLからNVIDIA SHARPを呼び出すこともできる。
(図はhttps://www.pccluster.org/ja/event/data/240628_pccc_wsSuzukakedai_28-11_bosilca_v2.pdfから、引用)
HCOLLはデフォルトでは無効になっている。MPI実行時に
--mca coll_hcoll_enable 1オプションをつければ有効になる。必要であれば --mca coll_hcoll_priority 120のように優先順位を指定してやる。
HCOLLから呼び出せる集団通信
HCOLLから全ての集団通信が呼び出せるわけでははい。 デバッガでompi > ompi > mca > coll > hcoll > coll_hcoll_module.cの hcoll_collectivesを見ると、使用可能かHCOLLの集団通信を確認できる。
coll_allgather = 0x7feb2a418dc0 <hmca_coll_ml_allgather> coll_allgatherv = 0x7feb2a425680 <hmca_coll_ml_allgatherv> coll_allreduce = 0x7feb2a3c2f90 <hmca_coll_ml_allreduce> coll_alltoall = 0x7feb2a407cb0 <hmca_coll_ml_alltoall> coll_alltoallv = 0x7feb2a40f540 <hmca_coll_ml_alltoallv> coll_alltoallw = 0x0 coll_barrier = 0x7feb2a3de570 <hmca_coll_ml_barrier_intra> coll_bcast = 0x7feb2a3e6870 <hmca_coll_ml_parallel_bcast> coll_exscan = 0x0 coll_gather = 0x0 coll_gatherv = 0x0 coll_reduce = 0x7feb2a3c2fa0 <hmca_coll_ml_reduce> coll_reduce_scatter = 0x0 coll_reduce_scatter_block = 0x0 coll_scan = 0x0 coll_scatter = 0x0 coll_scatterv = 0x7feb2a43e930 <hmca_coll_ml_scatterv> coll_ibarrier = 0x0 coll_ibcast = 0x0 coll_iallgather = 0x0 coll_iallgatherv = 0x0 coll_iallreduce = 0x0 coll_ireduce = 0x0
hcoll_info -a の出力を見ると
MCA coll: parameter "HCOLL_ML_DISABLE_IALLGATHER" (default value: "1", type: int)
IALLGATHER disabling
と、あり、デフォルトでIALLGATHERは無効になっている。
しかしOpenMPI実行時に環境変数で次のように指定してみても、上記のhcoll_collectivesのcoll_iallgatherは0x0のまま。うーむ。。
mpirun -x HCOLL_ML_DISABLE_IALLGATHER=0 ...