Skip to content

Commit

Permalink
CI: Cache for GitHub Actions (#2920)
Browse files Browse the repository at this point in the history
* CI: Cache for GitHub Actions

Use caches for `ccache` on GitHub actions.

* CI: Clean Up Windows
  • Loading branch information
ax3l authored Mar 3, 2022
1 parent e80f3ed commit bdc0dc4
Show file tree
Hide file tree
Showing 12 changed files with 133 additions and 10 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ jobs:
- name: install dependencies
run: |
.github/workflows/dependencies/nvcc11.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-cuda-nvcc-${{ hashFiles('.github/workflows/cuda.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-cuda-nvcc-${{ hashFiles('.github/workflows/cuda.yml') }}-
ccache-cuda-nvcc-
- name: install openPMD-api
run: |
export CEI_SUDO="sudo"
cmake-easyinstall --prefix=/usr/local \
git+https://github.com/openPMD/[email protected] \
Expand Down Expand Up @@ -96,6 +108,16 @@ jobs:
- uses: actions/checkout@v2
- name: Dependencies
run: .github/workflows/dependencies/nvhpc.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-cuda-nvhpc-${{ hashFiles('.github/workflows/cuda.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-cuda-nvhpc-${{ hashFiles('.github/workflows/cuda.yml') }}-
ccache-cuda-nvhpc-
- name: Build & Install
run: |
source /etc/profile.d/modules.sh
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dependencies/dpcpp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ df -h
# https://github.com/ECP-WarpX/WarpX/pull/1566#issuecomment-790934878
sudo apt-get install -y --no-install-recommends \
build-essential \
ccache \
cmake \
intel-oneapi-dpcpp-cpp-compiler intel-oneapi-mkl-devel \
g++ gfortran \
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dependencies/gcc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sudo apt-get -qqq update
sudo apt-get install -y \
build-essential \
ca-certificates \
ccache \
cmake \
gnupg \
ninja-build \
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dependencies/hip.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ sudo apt-get update
# other: rocm-dev rocm-utils
sudo apt-get install -y --no-install-recommends \
build-essential \
ccache \
gfortran \
libnuma-dev \
libopenmpi-dev \
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/dependencies/icc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ export DEBIAN_FRONTEND=noninteractive
sudo apt-get -qqq update
sudo apt-get install -y \
build-essential \
cmake \
ca-certificates \
ccache \
cmake \
gnupg \
pkg-config \
wget
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dependencies/nvcc11.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sudo apt-get -qqq update
sudo apt-get install -y \
build-essential \
ca-certificates \
ccache \
cmake \
gnupg \
libopenmpi-dev \
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dependencies/nvhpc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ sudo apt-get -qqq update
sudo apt-get install -y \
build-essential \
ca-certificates \
ccache \
cmake \
environment-modules \
gnupg \
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/hip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ jobs:
- name: install dependencies
shell: bash
run: .github/workflows/dependencies/hip.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-hip-3dsp-${{ hashFiles('.github/workflows/hip.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-hip-3dsp-${{ hashFiles('.github/workflows/hip.yml') }}-
ccache-hip-3dsp-
- name: build WarpX
shell: bash
run: |
Expand Down Expand Up @@ -62,6 +72,16 @@ jobs:
- name: install dependencies
shell: bash
run: .github/workflows/dependencies/hip.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-hip-2ddp-${{ hashFiles('.github/workflows/hip.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-hip-2ddp-${{ hashFiles('.github/workflows/hip.yml') }}-
ccache-hip-2ddp-
- name: build WarpX
shell: bash
run: |
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/intel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ jobs:
- name: install dependencies
run: |
.github/workflows/dependencies/icc.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-intel-icc-${{ hashFiles('.github/workflows/intel.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-intel-icc-${{ hashFiles('.github/workflows/intel.yml') }}-
ccache-intel-icc-
- name: build WarpX
run: |
set +eu
Expand Down Expand Up @@ -64,6 +74,16 @@ jobs:
shell: bash
run: |
.github/workflows/dependencies/dpcpp.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-intel-icpx-${{ hashFiles('.github/workflows/intel.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-intel-icpx-${{ hashFiles('.github/workflows/intel.yml') }}-
ccache-intel-icpx-
- name: build WarpX
shell: bash
run: |
Expand Down Expand Up @@ -110,6 +130,16 @@ jobs:
shell: bash
run: |
.github/workflows/dependencies/dpcpp.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-intel-dpcc-${{ hashFiles('.github/workflows/intel.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-intel-dpcc-${{ hashFiles('.github/workflows/intel.yml') }}-
ccache-intel-dpcc-
- name: build WarpX
shell: bash
run: |
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
set +e
rm -rf /usr/local/bin/2to3
brew update
brew install ccache
brew install fftw
brew install libomp
brew install ninja
Expand All @@ -34,6 +35,16 @@ jobs:
set -e
brew tap openpmd/openpmd
brew install openpmd-api
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-macos-appleclang-${{ hashFiles('.github/workflows/macos.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-macos-appleclang-${{ hashFiles('.github/workflows/macos.yml') }}-
ccache-macos-appleclang-
- name: build WarpX
run: |
cmake -S . -B build_dp \
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,16 @@ jobs:
- name: install dependencies
run: |
.github/workflows/dependencies/gcc.sh
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-openmp-cxxminimal-${{ hashFiles('.github/workflows/ubuntu.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-openmp-cxxminimal-${{ hashFiles('.github/workflows/ubuntu.yml') }}-
ccache-openmp-cxxminimal-
- name: build WarpX
run: |
cmake -S . -B build_3D \
Expand Down Expand Up @@ -47,6 +57,16 @@ jobs:
run: |
.github/workflows/dependencies/gcc.sh
sudo apt-get install -y libopenmpi-dev openmpi-bin
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-openmp-gccablastr-${{ hashFiles('.github/workflows/ubuntu.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-openmp-gccablastr-${{ hashFiles('.github/workflows/ubuntu.yml') }}-
ccache-openmp-gccablastr-
- name: build WarpX
run: |
cmake -S . -B build \
Expand Down
32 changes: 23 additions & 9 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,20 @@ jobs:
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v2
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-windows-winmsvc-${{ hashFiles('.github/workflows/windows.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-windows-winmsvc-${{ hashFiles('.github/workflows/windows.yml') }}-
ccache-windows-winmsvc-
- name: Build & Install
run: |
cmake -S . -B build `
-DCMAKE_BUILD_TYPE=Debug `
-DCMAKE_CXX_STANDARD=17 `
-DCMAKE_VERBOSE_MAKEFILE=ON `
-DWarpX_COMPUTE=NOACC `
-DWarpX_OPENPMD=ON `
Expand All @@ -29,17 +38,26 @@ jobs:
$env:PYWARPX_LIB_DIR="$(Get-Location | Foreach-Object { $_.Path })\build\lib\Debug\"
python3 -m pip install . -vv --no-build-isolation
python3 Examples\Modules\gaussian_beam\PICMI_inputs_gaussian_beam.py --diagformat=openpmd
# -DCMAKE_CXX_STANDARD=17 is set due to https://github.com/openPMD/openPMD-api/pull/1121
# and can be removed with openPMD-api 0.14.3+
python3 Examples\Modules\gaussian_beam\PICMI_inputs_gaussian_beam.py
# JSON writes are currently very slow (50min) with MSVC
# --diagformat=openpmd

build_win_clang:
name: Clang C++17 w/ OMP w/o MPI
runs-on: windows-2019
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v2
- name: CCache Cache
uses: actions/cache@v2
# - once stored under a key, they become immutable (even if local cache path content changes)
# - for a refresh the key has to change, e.g., hash of a tracked file in the key
with:
path: ~/.ccache
key: ccache-windows-winclang-${{ hashFiles('.github/workflows/windows.yml') }}-${{ hashFiles('cmake/dependencies/AMReX.cmake') }}
restore-keys: |
ccache-windows-winclang-${{ hashFiles('.github/workflows/windows.yml') }}-
ccache-windows-winclang-
- uses: seanmiddleditch/gha-setup-ninja@master
- name: Build & Install
shell: cmd
Expand All @@ -49,7 +67,6 @@ jobs:
-G "Ninja" ^
-DCMAKE_C_COMPILER=clang-cl ^
-DCMAKE_CXX_COMPILER=clang-cl ^
-DCMAKE_CXX_STANDARD=17 ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_VERBOSE_MAKEFILE=ON ^
-DWarpX_COMPUTE=OMP ^
Expand All @@ -64,6 +81,3 @@ jobs:
python3 -m pip install . -vv --no-build-isolation
python3 Examples\Modules\gaussian_beam\PICMI_inputs_gaussian_beam.py --diagformat=openpmd
# -DCMAKE_CXX_STANDARD=17 is set due to https://github.com/openPMD/openPMD-api/pull/1121
# and can be removed with openPMD-api 0.14.3+

0 comments on commit bdc0dc4

Please sign in to comment.