本仓库为英伟达赛道“再吃一颗苹果”赛队的解决方案。
docs中包括本次赛题的文档。patch中为需要对msccl-tools库进行的修改。slides中为我们队的决赛答辩slides,其中对我们的解决方案进行了阐述。src中为生成xml的源代码。xmls中为上榜的最终代码。
克隆当前仓库并进入:
git clone https://github.com/MineQihang/ACNC2025-public.git
cd ACNC2025-public下载msccl-tools源码:
git clone https://github.com/Azure/msccl-tools.git将patch拷贝到里面并应用:
cp patch/msccl-tools.patch msccl-tools/msccl-tools.patch
cd msccl-tools
patch -p1 < msccl-tools.patch patch主要是让msccl-tools具有合并相同send-recv-channel tuple thread block的功能。
安装msccl-tools:
pip install .在完成上述步骤后,msccl-tools及其补丁就安装好了,下面是复现的指令:
注:由于MSCCL-tools的问题,生成的tb内nop顺序可能发生变化,与
xmls文件夹中的提交版有所不同。
-
AllGather算子(小数据量,8M)
cd src/allgather python allgather_8m.py > allgather_8m.xml
-
AllGather算子(中大数据量,512M/8G)
cd src/allgather python allgather_512m.py > allgather_512m_8g.xml
-
AlltoAll算子
cd src/alltoall python alltoall.py > alltoall.xml
-
AlltoAllv算子
cd src/alltoallv python alltoallv.py > alltoallv.xml
请参见我们的slides。