Feature: Add basic NCCL communication space backend #112
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux-CompileOnly | |
# 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-OpenMPI416-CUDA1250-Release: | |
runs-on: ubuntu-latest | |
container: | |
image: nvidia/cuda:12.5.0-devel-ubuntu22.04 | |
env: | |
KOKKOS_SRC: ${{ github.workspace }}/_deps/kokkos | |
KOKKOS_BUILD: ${{ github.workspace }}/_deps/kokkos-build | |
KOKKOS_INSTALL: ${{ github.workspace }}/_deps/kokkos-install | |
COMM_SRC: ${{ github.workspace }} | |
COMM_BUILD: ${{ github.workspace }}/build | |
timeout-minutes: 20 | |
steps: | |
- name: Create workspace | |
run: mkdir -p ${{ github.workspace }} | |
- name: Check out Repository Code | |
uses: actions/checkout@v4 | |
# inside the container, GITHUB_WORKSPACE is something like /__w/... which is not the same as ${{github.workspace}}. For consistency, we'll try to do everything in ${{github.workspace}}, so move the files over there. | |
- name: Move Repository Code to Expected Location | |
shell: bash # for shopt -s dotglob, which also moves hidden files | |
run: | | |
shopt -s dotglob && mv "$GITHUB_WORKSPACE"/* ${{ github.workspace }} | |
- 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 | |
# Build a CUDA-enabled OpenMPI. This is probably not necessary for a compile-only test. | |
- name: Download MPI | |
run: | | |
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.bz2 | |
tar -xf openmpi-4.1.6.tar.bz2 | |
- name: Configure MPI | |
run: cd openmpi-4.1.6 && ./configure --prefix=/usr/local --with-cuda=/usr/local/cuda | |
- name: Build MPI | |
run: make -C openmpi-4.1.6 -j$(nproc) all | |
- name: Install MPI | |
run: | | |
make -C openmpi-4.1.6 all install | |
ldconfig | |
- name: Print some MPI Info | |
run: | | |
which mpirun | |
mpirun --version | |
which mpicxx | |
mpicxx --version | |
- name: Check MPI CUDA Support | |
run: ompi_info --parsable --all | grep mpi_built_with_cuda_support:value:true | |
- name: Build Kokkos | |
run: | | |
git clone https://github.com/kokkos/kokkos.git --branch master --depth 1 "$KOKKOS_SRC" | |
cmake -S "$KOKKOS_SRC" -B "$KOKKOS_BUILD" -DCMAKE_CXX_COMPILER="$KOKKOS_SRC/bin/nvcc_wrapper" -DCMAKE_INSTALL_PREFIX="$KOKKOS_INSTALL" -DCMAKE_BUILD_TYPE=Release -DKokkos_ENABLE_SERIAL=ON -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_AMPERE80=ON | |
cmake --build "$KOKKOS_BUILD" --parallel $(nproc) -t install | |
- name: Build Kokkos Comm | |
run: | | |
cmake -S "$COMM_SRC" -B "$COMM_BUILD" -DCMAKE_CXX_COMPILER="$KOKKOS_SRC/bin/nvcc_wrapper" -DKokkos_ROOT="$KOKKOS_INSTALL" -DCMAKE_BUILD_TYPE=Release -DKokkosComm_ENABLE_TESTS=ON -DKokkosComm_ENABLE_PERFTESTS=ON | |
VERBOSE=1 cmake --build "$COMM_BUILD" |