サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

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 ...