Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
on:
pull_request:
name: Build
jobs:
build_docker:
strategy:
fail-fast: false
matrix:
target: [gcc11_debug, gcc11, gcc14, clang19, nvcc12, nvcc12_debug, rocm6_4_3, rocm_latest, sycl]
runs-on: ubuntu-latest
steps:
- run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
target: ${{ matrix.target }}
build_mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: threeal/cmake-action@v1.3.0
with:
cmake-version: '3.29.x' # Back off version of cmake with known issue
build-dir: build
options:
CMAKE_CXX_STANDARD=20

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not BLT_CXX_STD which sets CMAKE_CXX_STANDARD, CMAKE_CUDA_STANDARD and CMAKE_HIP_STANDARD (the latter two only when building with CUDA or HIP).

ENABLE_OPENMP=Off
CMAKE_BUILD_TYPE=Release
run-build: true
build-args: '--parallel 16'
- uses: threeal/ctest-action@v1.1.0
build_windows:
strategy:
matrix:
shared:
- args:
BUILD_SHARED_LIBS=On
CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=On
- args: BUILD_SHARED_LIBS=Off

runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
## ====================================
## Config and build action
- uses: threeal/cmake-action@v1.3.0
with:
cmake-version: '3.29.x' # Back off version of cmake with known issue
build-dir: build
options:
ENABLE_WARNINGS_AS_ERRORS=Off
BLT_CXX_STD="c++20"
CMAKE_CXX_STANDARD=20
CMAKE_BUILD_TYPE=Release
${{ matrix.shared.args }}
run-build: true
build-args: '--config Release --parallel 16'
## ====================================
## Print the contents of the test directory in the build space (debugging)
## - run: |
## dir -r D:\a\RAJA\RAJA\build\test
## ====================================
## Run tests action
- uses: threeal/ctest-action@v1.1.0
with:
build-config: Release
170 changes: 119 additions & 51 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,66 +7,134 @@
# SPDX-License-Identifier: (BSD-3-Clause)
###############################################################################

ARG BASE_IMG=gcc
ARG COMPILER=g++
ARG VER=latest
ARG PRE_CMD="true"
ARG BUILD_TYPE=RelWithDebInfo
ARG CTEST_EXTRA="-E '(.*offload|blt.*smoke)'"
ARG CTEST_OPTIONS="${CTEST_EXTRA} -T test -V "
ARG CMAKE_EXTRA=""
ARG CMAKE_OPTIONS="-G Ninja -B build ${CMAKE_EXTRA} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_WARNINGS=On"
ARG PARALLEL=4
ARG BUILD_EXTRA=""
ARG CMAKE_BUILD_OPTS="--build build --verbose --parallel ${PARALLEL} ${BUILD_EXTRA}"
ARG CUDA_IMG_SUFFIX="-devel-ubuntu22.04"
FROM ghcr.io/llnl/radiuss:gcc-11-ubuntu-24.04 AS gcc11_debug
ENV GTEST_COLOR=1
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_WARNINGS=On \
-DENABLE_WARNINGS_AS_ERRORS=On \
-DENABLE_COVERAGE=On .. && \
cmake --build build --verbose --parallel 4 && \
cd build && ctest -T test --output-on-failure && cd .. && \
cmake --build build --target clean

### start compiler base images ###
# there is no official container in the hub, but there is an official script
# to install clang/llvm by version, installs a bit more than we need, but we
# do not have to maintain it, so I'm alright with that
FROM ghcr.io/llnl/radiuss:clang-${VER}-ubuntu-24.04 AS clang
ENV LD_LIBRARY_PATH=/opt/view/lib
FROM ghcr.io/llnl/radiuss:gcc-11-ubuntu-24.04 AS gcc11
ENV GTEST_COLOR=1
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On .. && \
cmake --build build --verbose --parallel 4 && \
cd build && ctest -T test --output-on-failure && cd .. && \
cmake --build build --target clean

FROM ghcr.io/llnl/radiuss:gcc-${VER}-ubuntu-24.04 AS gcc
FROM ghcr.io/llnl/radiuss:gcc-14-ubuntu-24.04 AS gcc14
ENV GTEST_COLOR=1
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On .. && \
cmake --build build --verbose --parallel 4 && \
cd build && ctest -T test --output-on-failure && cd .. && \
cmake --build build --target clean

FROM nvidia/cuda:${VER}${CUDA_IMG_SUFFIX} AS nvcc
FROM ghcr.io/llnl/radiuss:clang-19-ubuntu-24.04 AS clang19
ENV GTEST_COLOR=1
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN /bin/bash -lc 'export LD_LIBRARY_PATH=/opt/view/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} && \
cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On .. && \
cmake --build build --verbose --parallel 4 && \
cd build && ctest -T test --output-on-failure && cd .. && \
cmake --build build --target clean'

FROM nvcr.io/nvidia/nvhpc:23.3-devel-cuda12.0-ubuntu24.04 AS nvhpc
FROM nvidia/cuda:12.0.0-devel-ubuntu22.04 AS nvcc12
ENV GTEST_COLOR=1
COPY scripts/get-deps.sh /tmp/get-deps.sh
RUN bash /tmp/get-deps.sh
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On \
-DENABLE_CUDA=On \
-DCMAKE_CUDA_ARCHITECTURES=70 .. && \
cmake --build build --verbose --parallel 4 && \
cmake --build build --target clean

FROM rocm/dev-ubuntu-24.04:${VER} AS rocm
FROM nvidia/cuda:12.2.2-devel-ubuntu22.04 AS nvcc12_debug
ENV GTEST_COLOR=1
COPY scripts/get-deps.sh /tmp/get-deps.sh
RUN bash /tmp/get-deps.sh
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_WARNINGS=On \
-DENABLE_CUDA=On \
-DCMAKE_CUDA_ARCHITECTURES=70 .. && \
cmake --build build --verbose --parallel 4 && \
cmake --build build --target clean

# The intel-runtime container no longer works, use the fat one
FROM intel/oneapi:${VER} AS oneapi
RUN bash -c 'echo . /opt/intel/oneapi/setvars.sh >> ~/setup_env.sh'
### end compiler base images ###
FROM ghcr.io/llnl/radiuss:hip-6.4.3-ubuntu-24.04 AS rocm6_4_3
ENV GTEST_COLOR=1
ENV HCC_AMDGPU_TARGET=gfx900
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN /bin/bash -lc 'export LD_LIBRARY_PATH=/opt/rocm-6.4.3/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} && \
cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=/opt/rocm-6.4.3/bin/amdclang++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On \
-DROCM_PATH=/opt/rocm-6.4.3 \
-DENABLE_HIP=On \
-DENABLE_OPENMP=Off \
-DENABLE_CUDA=Off .. && \
cmake --build build --verbose --parallel 4 && \
cmake --build build --target clean'

FROM ${BASE_IMG} AS base
ARG VER
ARG BASE_IMG
FROM rocm/dev-ubuntu-24.04:latest AS rocm_latest
ENV GTEST_COLOR=1
# Only install CMake/Ninja for images that don't reliably include them.
# (gcc/clang radiuss images already provide a full toolchain.)
COPY scripts/get-deps.sh /tmp/get-deps.sh
RUN /bin/bash -lc 'if [[ "${BASE_IMG}" == "nvcc" || "${BASE_IMG}" == "rocm" || "${BASE_IMG}" == "oneapi" ]]; then bash /tmp/get-deps.sh; fi'
RUN bash /tmp/get-deps.sh
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN /bin/bash -lc 'export LD_LIBRARY_PATH=/opt/rocm/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} && \
cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On \
-DROCM_PATH=/opt/rocm \
-DENABLE_HIP=On \
-DENABLE_OPENMP=Off \
-DENABLE_CUDA=Off .. && \
cmake --build build --verbose --parallel 4 && \
cmake --build build --target clean'

FROM base AS test
ARG PRE_CMD
ARG CTEST_OPTIONS
ARG CMAKE_OPTIONS
ARG CMAKE_BUILD_OPTS
ARG COMPILER
ENV COMPILER=${COMPILER:-g++}
RUN /bin/bash -lc '[[ -f ~/setup_env.sh ]] && source ~/setup_env.sh ; \
CXX="${COMPILER:-g++}" ; \
if [[ "${CMAKE_OPTIONS}" == *"sanitize=address"* ]]; then \
sudo apt-get install libclang-rt-${VER}-dev -fy; \
fi ; \
${PRE_CMD} && cmake ${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER="${CXX}" ..'
RUN /bin/bash -c "[[ -f ~/setup_env.sh ]] && source ~/setup_env.sh ; ${PRE_CMD} && cmake ${CMAKE_BUILD_OPTS}"
RUN /bin/bash -c "[[ -f ~/setup_env.sh ]] && source ~/setup_env.sh ; ${PRE_CMD} && cd build && ctest ${CTEST_OPTIONS}"

# this is here to stop azure from downloading oneapi for every test
FROM alpine AS download_fast
FROM ghcr.io/llnl/radiuss:ubuntu-24.04-intel-2024.2 AS sycl
ENV GTEST_COLOR=1
COPY . /home/camp/workspace
WORKDIR /home/camp/workspace/build
RUN /bin/bash -lc 'source /opt/intel/oneapi/setvars.sh 2>&1 && \
export PATH=/opt/intel/oneapi/compiler/2024.2/bin/:$PATH && \
export LD_LIBRARY_PATH=/opt/intel/oneapi/2024.2/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} && \
cmake -G Ninja -B build \
-DCMAKE_CXX_COMPILER=icpx \
-DCMAKE_CXX_FLAGS="-fsycl -fsycl-unnamed-lambda" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_WARNINGS=On \
-DENABLE_SYCL=On .. && \
cmake --build build --verbose --parallel 4 && \
cmake --build build --target clean'
Loading
Loading