diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..41e69454f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** + +A clear and concise description of what the bug is: + +**To Reproduce** + +Steps to reproduce the behavior: + +**Expected behavior** + +A clear and concise description of what you expected to happen: + +**Compilers & Libraries (please complete the following information):** + - Compiler & version: [e.g. GCC 4.9.3]: + - CUDA version (if applicable): + +**Additional context** + +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..cd2ac307c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** + +A clear and concise description of what the problem is. + +**Describe the solution you'd like** + +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** + +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** + +Add any other context or information about the feature request here. + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4fb53adaa..05d12ac3c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ -# Summary (Write a short headline summary of PR) +# Summary - This PR is a (refactoring, bugfix, feature, something else) - It does the following (modify list as needed): diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..8aabaf94c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,74 @@ +on: push +name: Build +jobs: + build_docker: + strategy: + matrix: + target: [gcc12, gcc13, clang13, clang15, rocm5.6, rocm5.6_desul, intel2024, intel2024_debug, intel2024_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: + build-dir: build + options: + CMAKE_CXX_STANDARD=14 + 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: + build-dir: build + options: + ENABLE_WARNINGS_AS_ERRORS=Off + BLT_CXX_STD="" + CMAKE_CXX_STANDARD=17 + CMAKE_BUILD_TYPE=Release + ${{ matrix.shared.args }} + run-build: true + build-args: '--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: Debug diff --git a/Dockerfile b/Dockerfile index b15e3c102..9b7af75a1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,118 +5,146 @@ # SPDX-License-Identifier: (BSD-3-Clause) ############################################################################### -FROM ghcr.io/rse-ops/gcc-ubuntu-20.04:gcc-7.3.0 AS gcc7.3.0 +## +## Note that we build with 'make -j 16' on GitHub Actions and +## with 'make -j 6' on Azure. This is reflected in the 'make' commands below. +## This seems to work best for throughput. +## + +FROM ghcr.io/llnl/radiuss:gcc-11-ubuntu-22.04 AS gcc11 ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN cmake -DCMAKE_CXX_COMPILER=g++ -DRAJA_ENABLE_WARNINGS=On -DENABLE_OPENMP=On .. && \ +RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On .. && \ make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/gcc-ubuntu-20.04:gcc-8.1.0 AS gcc8.1.0 +FROM ghcr.io/llnl/radiuss:gcc-12-ubuntu-22.04 AS gcc12 ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN cmake -DCMAKE_CXX_COMPILER=g++ -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On .. && \ - make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build +RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/gcc-ubuntu-20.04:gcc-9.4.0 AS gcc9.4.0 +FROM ghcr.io/llnl/radiuss:gcc-12-ubuntu-22.04 AS gcc12_debug ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN cmake -DCMAKE_CXX_COMPILER=g++ -DRAJA_ENABLE_WARNINGS=On -DENABLE_OPENMP=On .. && \ +RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Debug -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On .. && \ make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/gcc-ubuntu-20.04:gcc-11.2.0 AS gcc11.2.0 +FROM ghcr.io/llnl/radiuss:gcc-12-ubuntu-22.04 AS gcc12_desul ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_COMPILER=g++ -DRAJA_ENABLE_WARNINGS=On -DENABLE_OPENMP=On .. && \ +RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On -DRAJA_ENABLE_DESUL_ATOMICS=On .. && \ make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/clang-ubuntu-20.04:llvm-11.0.0 AS clang11.0.0 +FROM ghcr.io/llnl/radiuss:gcc-13-ubuntu-22.04 AS gcc13 ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN . /opt/spack/share/spack/setup-env.sh && \ - export LD_LIBRARY_PATH=/opt/view/lib:$LD_LIBRARY_PATH && \ - cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On .. && \ - make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build +RUN cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRAJA_ENABLE_WARNINGS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=On -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/clang-ubuntu-20.04:llvm-11.0.0 AS clang11.0.0-debug +FROM ghcr.io/llnl/radiuss:clang-13-ubuntu-22.04 AS clang13 ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN . /opt/spack/share/spack/setup-env.sh && \ - export LD_LIBRARY_PATH=/opt/view/lib:$LD_LIBRARY_PATH && \ - cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DENABLE_OPENMP=On .. && \ - make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build +RUN cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure -FROM ghcr.io/rse-ops/clang-ubuntu-22.04:llvm-13.0.0 AS clang13.0.0 +FROM ghcr.io/llnl/radiuss:clang-14-ubuntu-22.04 AS clang14_debug ENV GTEST_COLOR=1 COPY . /home/raja/workspace WORKDIR /home/raja/workspace/build -RUN . /opt/spack/share/spack/setup-env.sh && \ - export LD_LIBRARY_PATH=/opt/view/lib:$LD_LIBRARY_PATH && \ - cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On .. && \ +RUN cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DENABLE_OPENMP=On .. && \ make -j 6 &&\ - ctest -T test --output-on-failure && \ - cd .. && rm -rf build - -##FROM ghcr.io/rse-ops/cuda:cuda-10.1.243-ubuntu-18.04 AS nvcc10.1.243 -##ENV GTEST_COLOR=1 -##COPY . /home/raja/workspace -##WORKDIR /home/raja/workspace/build -##RUN . /opt/spack/share/spack/setup-env.sh && spack load cuda && \ -## cmake -DCMAKE_CXX_COMPILER=g++ -DENABLE_CUDA=On -DCMAKE_CUDA_STANDARD=14 -DCMAKE_CUDA_ARCHITECTURES=70 -DENABLE_OPENMP=On .. && \ -## make -j 4 && \ -## cd .. && rm -rf build - -##FROM ghcr.io/rse-ops/cuda-ubuntu-20.04:cuda-11.1.1 AS nvcc11.1.1 -##ENV GTEST_COLOR=1 -##COPY . /home/raja/workspace -##WORKDIR /home/raja/workspace/build -##RUN . /opt/spack/share/spack/setup-env.sh && spack load cuda && \ -## cmake -DCMAKE_CXX_COMPILER=g++ -DENABLE_CUDA=On -DCMAKE_CUDA_STANDARD=14 -DCMAKE_CUDA_ARCHITECTURES=70 -DENABLE_OPENMP=On .. && \ -## make -j 4 && \ -## cd .. && rm -rf build - -##FROM ghcr.io/rse-ops/cuda-ubuntu-20.04:cuda-11.1.1 AS nvcc11.1.1-debug -##ENV GTEST_COLOR=1 -##COPY . /home/raja/workspace -##WORKDIR /home/raja/workspace/build -##RUN . /opt/spack/share/spack/setup-env.sh && spack load cuda && \ -## cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=g++ -DENABLE_CUDA=On -DCMAKE_CUDA_STANDARD=14 -DCMAKE_CUDA_ARCHITECTURES=70 -DENABLE_OPENMP=On .. && \ -## make -j 4 && \ -## cd .. && rm -rf build - -##FROM ghcr.io/rse-ops/hip-ubuntu-20.04:hip-5.1.3 AS hip5.1.3 -##ENV GTEST_COLOR=1 -##ENV HCC_AMDGPU_TARGET=gfx900 -##COPY . /home/raja/workspace -##WORKDIR /home/raja/workspace/build -##RUN . /opt/spack/share/spack/setup-env.sh && spack load hip llvm-amdgpu && \ -## cmake -DCMAKE_CXX_COMPILER=clang++ -DHIP_PATH=/opt -DENABLE_HIP=On -DENABLE_CUDA=Off -DENABLE_OPENMP=Off -DRAJA_ENABLE_WARNINGS_AS_ERRORS=Off -DBLT_EXPORT_THIRDPARTY=On .. && \ -## make -j 6 && \ -## cd .. && rm -rf build - -FROM ghcr.io/rse-ops/intel-ubuntu-23.04:intel-2023.2.1 AS sycl -ENV GTEST_COLOR=1 -COPY . /home/raja/workspace -WORKDIR /home/raja/workspace/build -RUN /bin/bash -c "source /opt/view/setvars.sh && \ - cmake -DCMAKE_CXX_COMPILER=dpcpp -DENABLE_SYCL=On -DENABLE_OPENMP=Off -DENABLE_ALL_WARNINGS=Off -DBLT_CXX_STD=c++17 -DENABLE_TESTS=On .. && \ + ctest -T test --output-on-failure + +FROM ghcr.io/llnl/radiuss:clang-15-ubuntu-22.04 AS clang15 +ENV GTEST_COLOR=1 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure + +FROM ghcr.io/llnl/radiuss:clang-15-ubuntu-22.04 AS clang15_desul +ENV GTEST_COLOR=1 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On -DRAJA_ENABLE_DESUL_ATOMICS=On .. && \ make -j 6 &&\ - ./bin/raja-perf.exe --checkrun --exclude-variants Base_SYCL RAJA_SYCL -sp" && \ - cd .. && rm -rf build + ctest -T test --output-on-failure + +FROM ghcr.io/llnl/radiuss:ubuntu-20.04-intel-2024.0 AS intel2024 +ENV GTEST_COLOR=1 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN /bin/bash -c "source /opt/intel/oneapi/setvars.sh 2>&1 > /dev/null && \ + cmake -DCMAKE_CXX_COMPILER=icpx -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure" + +FROM ghcr.io/llnl/radiuss:ubuntu-20.04-intel-2024.0 AS intel2024_debug +ENV GTEST_COLOR=1 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN /bin/bash -c "source /opt/intel/oneapi/setvars.sh 2>&1 > /dev/null && \ + cmake -DCMAKE_CXX_COMPILER=icpx -DCMAKE_BUILD_TYPE=Debug -DENABLE_OPENMP=On .. && \ + make -j 16 &&\ + ctest -T test --output-on-failure" + +## +## Need to find a viable cuda image to test... +## + +# TODO: We should switch to ROCm 6 -- where to get an image?? +FROM ghcr.io/llnl/radiuss:ubuntu-20.04-hip-5.6.1 AS rocm5.6 +ENV GTEST_COLOR=1 +ENV HCC_AMDGPU_TARGET=gfx900 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=/opt/rocm-5.6.1/bin/amdclang++ -DENABLE_HIP=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=Off .. && \ + make -j 6 + +# TODO: We should switch to ROCm 6 -- where to get an image?? +FROM ghcr.io/llnl/radiuss:ubuntu-20.04-hip-5.6.1 AS rocm5.6_desul +ENV GTEST_COLOR=1 +ENV HCC_AMDGPU_TARGET=gfx900 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=/opt/rocm-5.6.1/bin/amdclang++ -DENABLE_HIP=On -DRAJA_ENABLE_DESUL_ATOMICS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=Off .. && \ + make -j 6 + +## ROCm 6 image is broken +FROM ghcr.io/llnl/radiuss:hip-6.0.2-ubuntu-20.04 AS rocm6.0 +ENV GTEST_COLOR=1 +ENV HCC_AMDGPU_TARGET=gfx900 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=/opt/rocm-6.0.2/bin/amdclang++ -DENABLE_HIP=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=Off .. && \ + make -j 6 + +## ROCm 6 image is broken +FROM ghcr.io/llnl/radiuss:hip-6.0.2-ubuntu-20.04 AS rocm6.0_desul +ENV GTEST_COLOR=1 +ENV HCC_AMDGPU_TARGET=gfx900 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN cmake -DCMAKE_CXX_COMPILER=/opt/rocm-6.0.2/bin/amdclang++ -DENABLE_HIP=On -DRAJA_ENABLE_DESUL_ATOMICS=On -DRAJA_ENABLE_WARNINGS_AS_ERRORS=Off .. && \ + make -j 6 + +FROM ghcr.io/llnl/radiuss:intel-2024.0-ubuntu-20.04 AS intel2024_sycl +ENV GTEST_COLOR=1 +COPY . /home/raja/workspace +WORKDIR /home/raja/workspace/build +RUN /bin/bash -c "source /opt/intel/oneapi/setvars.sh 2>&1 > /dev/null && \ + cmake -DCMAKE_CXX_COMPILER=dpcpp -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=Off -DRAJA_ENABLE_SYCL=On -DBLT_CXX_STD=c++17 -DRAJA_ENABLE_DESUL_ATOMICS=On .. && \ + make -j 16" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 41f9c0cd7..0f9a16593 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -33,31 +33,17 @@ jobs: - job: Docker timeoutInMinutes: 360 strategy: - matrix: - gcc7.3.0: - docker_target: gcc7.3.0 - gcc8.1.0: - docker_target: gcc8.1.0 - gcc9.4.0: - docker_target: gcc9.4.0 - gcc11.2.0: - docker_target: gcc11.2.0 - clang11.0.0: - docker_target: clang11.0.0 -## clang11.0.0-debug: -## docker_target: clang11.0.0-debug - clang13.0.0: - docker_target: clang13.0.0 -## nvcc10.1.243: -## docker_target: nvcc10.1.243 -## nvcc11.1.1: -## docker_target: nvcc11.1.1 -## nvcc11.1.1-debug: -## docker_target: nvcc11.1.1-debug -## hip5.1.3: -## docker_target: hip5.1.3 - sycl: - docker_target: sycl + matrix: + gcc11: + docker_target: gcc11 + gcc12_debug: + docker_target: gcc12_debug + gcc12_desul: + docker_target: gcc12_desul + clang14_debug: + docker_target: clang14_debug + clang15_desul: + docker_target: clang15_desul pool: vmImage: 'ubuntu-latest' variables: