NCCL tests failed to build

I followed https://build.nvidia.com/spark/nccl/stacked-sparks and received errors when building NCCL tests:

git clone https://github.com/NVIDIA/nccl-tests.git ~/nccl-tests/
cd ~/nccl-tests/
make MPI=1
Cloning into '/home/mydir/nccl-tests'...
remote: Enumerating objects: 540, done.
remote: Counting objects: 100% (383/383), done.
remote: Compressing objects: 100% (177/177), done.
remote: Total 540 (delta 329), reused 227 (delta 206), pack-reused 157 (from 2)
Receiving objects: 100% (540/540), 210.33 KiB | 3.24 MiB/s, done.
Resolving deltas: 100% (368/368), done.
make -C src build BUILDDIR=/home/mydir/nccl-tests/build
make[1]: Entering directory '/home/mydir/nccl-tests/src'
Compiling  timer.cc                            > /home/mydir/nccl-tests/build/timer.o
Compiling /home/mydir/nccl-tests/build/verifiable/verifiable.o
Compiling  all_reduce.cu                       > /home/mydir/nccl-tests/build/all_reduce.o
Compiling  common.cu                           > /home/mydir/nccl-tests/build/common.o
Compiling  util.cu                             > /home/mydir/nccl-tests/build/util.o
Linking  /home/mydir/nccl-tests/build/all_reduce.o > /home/mydir/nccl-tests/build/all_reduce_perf
Compiling  all_gather.cu                       > /home/mydir/nccl-tests/build/all_gather.o
Linking  /home/mydir/nccl-tests/build/all_gather.o > /home/mydir/nccl-tests/build/all_gather_perf
Compiling  broadcast.cu                        > /home/mydir/nccl-tests/build/broadcast.o
Linking  /home/mydir/nccl-tests/build/broadcast.o > /home/mydir/nccl-tests/build/broadcast_perf
Compiling  reduce_scatter.cu                   > /home/mydir/nccl-tests/build/reduce_scatter.o
Linking  /home/mydir/nccl-tests/build/reduce_scatter.o > /home/mydir/nccl-tests/build/reduce_scatter_perf
Compiling  reduce.cu                           > /home/mydir/nccl-tests/build/reduce.o
Linking  /home/mydir/nccl-tests/build/reduce.o > /home/mydir/nccl-tests/build/reduce_perf
Compiling  alltoall.cu                         > /home/mydir/nccl-tests/build/alltoall.o
alltoall.cu(65): error: class "ncclDevCommRequirements" has no member "barrierCount"
        reqs->barrierCount = deviceCtaCount;
              ^

alltoall.cu(66): error: class "ncclDevCommRequirements" has no member "ginSignalCount"
        reqs->ginSignalCount = deviceCtaCount;
              ^

alltoall.cu(187): error: identifier "ncclGin" is undefined
    ncclGin gin { devComm, ginContext };
    ^

alltoall.cu(190): error: identifier "ncclBarrierSession" is undefined
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
    ^

alltoall.cu(190): error: type name is not allowed
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                       ^

alltoall.cu(190): error: identifier "bar" is undefined
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                                    ^

alltoall.cu(190): error: expected a ";"
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                                        ^

alltoall.cu(191): error: name followed by "::" must be a class or namespace name
    bar.sync(ncclCoopCta(), cuda::memory_order_relaxed, ncclGinFenceLevel::Relaxed);
                                                        ^

alltoall.cu(202): error: identifier "ncclGin_SignalInc" is undefined
          size, ncclGin_SignalInc{signalIndex});
                ^

alltoall.cu(202): error: expected a ")"
          size, ncclGin_SignalInc{signalIndex});
                                 ^

alltoall.cu(208): error: name followed by "::" must be a class or namespace name
    bar.sync(ncclCoopCta(), cuda::memory_order_release, ncclGinFenceLevel::Relaxed);
                                                        ^

alltoall.cu(215): error: identifier "ncclGin" is undefined
    ncclGin gin { devComm, ginContext };
    ^

alltoall.cu(218): error: identifier "ncclBarrierSession" is undefined
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
    ^

alltoall.cu(218): error: type name is not allowed
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                       ^

alltoall.cu(218): error: identifier "bar" is undefined
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                                    ^

alltoall.cu(218): error: expected a ";"
    ncclBarrierSession<ncclCoopCta> bar { ncclCoopCta(), ncclTeamTagWorld(), gin, blockIdx.x };
                                        ^

alltoall.cu(219): error: name followed by "::" must be a class or namespace name
    bar.sync(ncclCoopCta(), cuda::memory_order_relaxed, ncclGinFenceLevel::Relaxed);
                                                        ^

alltoall.cu(235): error: identifier "ncclGin_SignalInc" is undefined
          size, ncclGin_SignalInc{signalIndex});
                ^

alltoall.cu(235): error: expected a ")"
          size, ncclGin_SignalInc{signalIndex});
                                 ^

alltoall.cu(241): error: identifier "ncclGin_SignalInc" is undefined
          size, ncclGin_SignalInc{signalIndex});
                ^

alltoall.cu(241): error: expected a ")"
          size, ncclGin_SignalInc{signalIndex});
                                 ^

alltoall.cu(258): error: name followed by "::" must be a class or namespace name
    bar.sync(ncclCoopCta(), cuda::memory_order_release, ncclGinFenceLevel::Relaxed);
                                                        ^

22 errors detected in the compilation of "alltoall.cu".
make[1]: *** [Makefile:59: /home/mydir/nccl-tests/build/alltoall.o] Error 2
make[1]: Leaving directory '/home/mydir/nccl-tests/src'
make: *** [Makefile:20: src.build] Error 2

What could be causing the issue?

I ran into this as well. Use the latest nccl instead of the pinned version. If you do something like this it should get you there:

cd ~/nvcc/

make clean

git checkout master && git pull

make -j src.build NVCC_GENCODE=“-gencode=arch=compute_121,code=sm_121”

Then you can rebuild nccl-tests…