Skip to content

feat: add NCCL communication space backend #10

feat: add NCCL communication space backend

feat: add NCCL communication space backend #10

Workflow file for this run

name: Compile-only
# Only run most recent workflow in branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- README.md
- "docs/**"
types: [opened, reopened, synchronize]
workflow_dispatch:
jobs:
Kokkos_master-Open_MPI_508-CUDA_1290-Release:
runs-on: ubuntu-latest
container:
image: nvidia/cuda:12.9.0-devel-ubuntu24.04
env:
KOKKOS_SRC: ${{ github.workspace }}/build/_deps/kokkos-src
KOKKOS_BUILD: ${{ github.workspace }}/build/_deps/kokkos-build
KOKKOS_INSTALL: ${{ github.workspace }}/build/_deps/kokkos-install
KOKKOSCOMM_SRC: ${{ github.workspace }}
KOKKOSCOMM_BUILD_MPI: ${{ github.workspace }}/build/mpi
KOKKOSCOMM_BUILD_NCCL: ${{ github.workspace }}/build/nccl
timeout-minutes: 30
steps:
- name: Create workspace
run: mkdir -p ${{ github.workspace }}
- name: Checkout code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Move code to workspace
shell: bash
run: |
shopt -s dotglob && mv "$GITHUB_WORKSPACE"/* ${{ github.workspace }}
ls -la ${{ github.workspace }}
ls -la "$KOKKOSCOMM_SRC"
- name: Install packages
run: apt-get update && apt-get install -y wget git
- name: Install CMake
run: |
wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-x86_64.tar.gz
tar -C /usr/local --strip-components=1 -xf cmake-3.23.5-linux-x86_64.tar.gz
- name: Open MPI - Fetch
run: |
wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.8.tar.bz2
tar -xf openmpi-5.0.8.tar.bz2
- name: Open MPI - Configure
run: >
cd openmpi-5.0.8 && ./configure --prefix=/usr/local --with-cuda=/usr/local/cuda --with-cuda-libdir=/usr/local/cuda/lib64/stubs
- name: Open MPI - Build
run: >
make -C openmpi-5.0.8 all -j $(nproc)
- name: Open MPI - Install
run: |
make -C openmpi-5.0.8 install
ldconfig
- name: Open MPI - Check CUDA support
run: |
which mpirun && mpirun --version
which mpicxx && mpicxx --version
ompi_info | grep "MPI extensions"
ompi_info --parsable --all | grep mpi_built_with_cuda_support:value:true
- name: Kokkos - Fetch
run: git clone https://github.com/kokkos/kokkos.git --branch master --depth 1 "$KOKKOS_SRC"
- name: Kokkos - Configure
run: >
cmake
-S "$KOKKOS_SRC"
-B "$KOKKOS_BUILD"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER="$KOKKOS_SRC/bin/nvcc_wrapper"
-DKokkos_ENABLE_SERIAL=ON
-DKokkos_ENABLE_CUDA=ON
-DKokkos_ARCH_HOPPER90=ON
- name: Kokkos - Build
run: cmake --build "$KOKKOS_BUILD" --parallel $(nproc)
- name: Kokkos - Install
run: cmake --install "$KOKKOS_BUILD" --prefix "$KOKKOS_INSTALL"
- name: KokkosComm - Configure MPI backend
run: >
cmake
-S "$KOKKOSCOMM_SRC"
-B "$KOKKOSCOMM_BUILD_MPI"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER="$KOKKOS_SRC/bin/nvcc_wrapper"
-DKokkos_ROOT="$KOKKOS_INSTALL"
-DKokkosComm_ENABLE_MPI=ON
-DKokkosComm_ENABLE_TESTS=ON
-DKokkosComm_ENABLE_PERFTESTS=ON
- name: KokkosComm - Build MPI backend
run: cmake --build "$KOKKOSCOMM_BUILD_MPI" --parallel $(nproc) --verbose
- name: KokkosComm - Configure NCCL backend
run: >
cmake
-S "$KOKKOSCOMM_SRC"
-B "$KOKKOSCOMM_BUILD_NCCL"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER="$KOKKOS_SRC/bin/nvcc_wrapper"
-DKokkos_ROOT="$KOKKOS_INSTALL"
-DKokkosComm_ENABLE_NCCL=ON
-DKokkosComm_ENABLE_TESTS=ON
- name: KokkosComm - Build NCCL backend
run: cmake --build "$KOKKOSCOMM_BUILD_NCCL" --parallel $(nproc) --verbose