aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/cuda.yml42
-rw-r--r--.github/workflows/hip.yml35
-rw-r--r--.github/workflows/intel.yml129
-rw-r--r--.github/workflows/macos.yml4
-rw-r--r--.github/workflows/source.yml2
-rw-r--r--.github/workflows/ubuntu.yml201
-rw-r--r--.github/workflows/windows.yml2
7 files changed, 214 insertions, 201 deletions
diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml
new file mode 100644
index 000000000..b9ef16fa1
--- /dev/null
+++ b/.github/workflows/cuda.yml
@@ -0,0 +1,42 @@
+name: 🐧 CUDA
+
+on: [push, pull_request]
+
+jobs:
+# Ref.:
+# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/ubuntu18.04/10.1/base/Dockerfile
+# https://github.com/ComputationalRadiationPhysics/picongpu/blob/0.5.0/share/picongpu/dockerfiles/ubuntu-1604/Dockerfile
+# https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/
+ build_nvcc:
+ name: NVCC 11.0.2 SP
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: install dependencies
+ run: |
+ .github/workflows/dependencies/nvcc11.sh
+ export CEI_SUDO="sudo"
+ cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
+ - name: build WarpX
+ run: |
+ export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
+ export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
+ which nvcc || echo "nvcc not in PATH!"
+
+ cmake -S . -B build_sp \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DWarpX_COMPUTE=CUDA \
+ -DWarpX_LIB=ON \
+ -DAMReX_CUDA_ARCH=6.0 \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_openpmd_internal=OFF \
+ -DWarpX_PRECISION=SINGLE \
+ -DWarpX_PSATD=ON \
+ -DAMReX_CUDA_ERROR_CROSS_EXECUTION_SPACE_CALL=ON \
+ -DAMReX_CUDA_ERROR_CAPTURE_THIS=ON
+ cmake --build build_sp -j 2
+
+ python3 -m pip install --upgrade pip setuptools wheel
+ export WarpX_MPI=ON
+ PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
+ python3 -m pip install *.whl
diff --git a/.github/workflows/hip.yml b/.github/workflows/hip.yml
new file mode 100644
index 000000000..57a27e00d
--- /dev/null
+++ b/.github/workflows/hip.yml
@@ -0,0 +1,35 @@
+name: 🐧 HIP
+
+on: [push, pull_request]
+
+jobs:
+ build_hip:
+ name: HIP SP
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: install dependencies
+ shell: bash
+ run: .github/workflows/dependencies/hip.sh
+ - name: build WarpX
+ shell: bash
+ run: |
+ source /etc/profile.d/rocm.sh
+ hipcc --version
+ export CXX=$(which hipcc)
+ export CC=$(which clang)
+
+ cmake -S . -B build_sp \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DAMReX_AMD_ARCH=gfx900 \
+ -DWarpX_COMPUTE=HIP \
+ -DWarpX_LIB=ON \
+ -DWarpX_MPI=ON \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_PRECISION=SINGLE \
+ -DWarpX_PSATD=ON
+ cmake --build build_sp -j 2
+
+ export WarpX_MPI=OFF
+ PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
+ python3 -m pip install *.whl
diff --git a/.github/workflows/intel.yml b/.github/workflows/intel.yml
new file mode 100644
index 000000000..7fca2ce20
--- /dev/null
+++ b/.github/workflows/intel.yml
@@ -0,0 +1,129 @@
+name: 🐧 Intel
+
+on: [push, pull_request]
+
+jobs:
+# Ref.: https://github.com/rscohn2/oneapi-ci
+# intel-basekit intel-hpckit are too large in size
+ build_icc:
+ name: oneAPI ICC SP&DP
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: install dependencies
+ run: |
+ export DEBIAN_FRONTEND=noninteractive
+ sudo apt-get -qqq update
+ sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
+ sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
+ sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
+ echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
+ sudo apt-get update
+ sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
+ set +e
+ source /opt/intel/oneapi/setvars.sh
+ set -e
+ sudo curl -L -o /usr/local/bin/cmake-easyinstall https://git.io/JvLxY
+ sudo chmod a+x /usr/local/bin/cmake-easyinstall
+ export CEI_SUDO="sudo"
+ CXX=$(which icpc) CC=$(which icc) cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
+ - name: build WarpX
+ run: |
+ set +e
+ source /opt/intel/oneapi/setvars.sh
+ set -e
+ export CXX=$(which icpc)
+ export CC=$(which icc)
+
+ cmake -S . -B build_dp \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DWarpX_LIB=ON \
+ -DWarpX_MPI=OFF \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_openpmd_internal=OFF
+ cmake --build build_dp -j 2
+
+ cmake -S . -B build_sp \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DWarpX_LIB=ON \
+ -DWarpX_MPI=OFF \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_openpmd_internal=OFF \
+ -DWarpX_PRECISION=SINGLE
+ cmake --build build_sp -j 2
+
+ python3 -m pip install --upgrade pip setuptools wheel
+ PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip install -v .
+
+ build_icpx:
+ name: oneAPI ICX SP
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: install dependencies
+ shell: bash
+ run: |
+ .github/workflows/dependencies/dpcpp.sh
+ - name: build WarpX
+ shell: bash
+ run: |
+ set +e
+ source /opt/intel/oneapi/setvars.sh
+ set -e
+ export CXX=$(which icpx)
+ export CC=$(which icx)
+
+ cmake -S . -B build_sp \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DWarpX_LIB=ON \
+ -DWarpX_MPI=OFF \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_PRECISION=SINGLE
+ cmake --build build_sp -j 2
+
+ python3 -m pip install --upgrade pip
+ python3 -m pip install --upgrade setuptools wheel
+ PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel -v .
+ python3 -m pip install *.whl
+
+ - name: run pywarpx
+ run: |
+ set +e
+ source /opt/intel/oneapi/setvars.sh
+ set -e
+ export OMP_NUM_THREADS=2
+ Examples/Physics_applications/laser_acceleration/PICMI_inputs_laser_acceleration.py
+
+ build_dpcc:
+ name: oneAPI DPC++ SP
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: install dependencies
+ shell: bash
+ run: |
+ .github/workflows/dependencies/dpcpp.sh
+ - name: build WarpX
+ shell: bash
+ run: |
+ set +e
+ source /opt/intel/oneapi/setvars.sh
+ set -e
+ export CXX=$(which dpcpp)
+ export CC=$(which clang)
+
+ cmake -S . -B build_sp \
+ -DBUILD_SHARED_LIBS=ON \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DWarpX_COMPUTE=SYCL \
+ -DWarpX_LIB=ON \
+ -DWarpX_MPI=OFF \
+ -DWarpX_OPENPMD=ON \
+ -DWarpX_PRECISION=SINGLE
+ cmake --build build_sp -j 2
+
+ # Skip this as it will copy the binary artifacts and we are tight on disk space
+ # python3 -m pip install --upgrade pip
+ # python3 -m pip install --upgrade setuptools wheel
+ # PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
+ # python3 -m pip install *.whl
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index b496f4aa7..8f8af555d 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -1,10 +1,10 @@
-name: macOS build
+name: 🍏 macOS
on: [push, pull_request]
jobs:
build_gcc9:
- name: AppleClang [macOS]
+ name: AppleClang
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
diff --git a/.github/workflows/source.yml b/.github/workflows/source.yml
index b3e6a43eb..54c7884a5 100644
--- a/.github/workflows/source.yml
+++ b/.github/workflows/source.yml
@@ -4,7 +4,7 @@
#
# License: BSD-3-Clause-LBNL
-name: source
+name: 📜 Source
on: [push, pull_request]
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index 3dac5f226..c5c37380f 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -1,11 +1,12 @@
-name: Ubuntu build
+name: 🐧 OpenMP
on: [push, pull_request]
jobs:
build_cxxminimal:
- name: GCC Minimal w/o MPI [Linux]
+ name: GCC Minimal w/o MPI
runs-on: ubuntu-20.04
+ env: {CXXFLAGS: "-Werror"}
steps:
- uses: actions/checkout@v2
- name: install dependencies
@@ -26,7 +27,7 @@ jobs:
cmake --build build_RZ -j 2
build_pyfull:
- name: Clang pywarpx [Linux]
+ name: Clang pywarpx
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
@@ -48,197 +49,3 @@ jobs:
run: |
export OMP_NUM_THREADS=1
mpirun -n 2 Examples/Physics_applications/laser_acceleration/PICMI_inputs_laser_acceleration.py
-
-# Ref.:
-# https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/ubuntu18.04/10.1/base/Dockerfile
-# https://github.com/ComputationalRadiationPhysics/picongpu/blob/0.5.0/share/picongpu/dockerfiles/ubuntu-1604/Dockerfile
-# https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/
- build_nvcc:
- name: NVCC 11.0.2 SP [Linux]
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/checkout@v2
- - name: install dependencies
- run: |
- .github/workflows/dependencies/nvcc11.sh
- export CEI_SUDO="sudo"
- cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
- - name: build WarpX
- run: |
- export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
- export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
- which nvcc || echo "nvcc not in PATH!"
-
- cmake -S . -B build_sp \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DWarpX_COMPUTE=CUDA \
- -DWarpX_LIB=ON \
- -DAMReX_CUDA_ARCH=6.0 \
- -DWarpX_OPENPMD=ON \
- -DWarpX_openpmd_internal=OFF \
- -DWarpX_PRECISION=SINGLE \
- -DWarpX_PSATD=ON \
- -DAMReX_CUDA_ERROR_CROSS_EXECUTION_SPACE_CALL=ON \
- -DAMReX_CUDA_ERROR_CAPTURE_THIS=ON
- cmake --build build_sp -j 2
-
- python3 -m pip install --upgrade pip setuptools wheel
- export WarpX_MPI=ON
- PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
- python3 -m pip install *.whl
-
-# Ref.: https://github.com/rscohn2/oneapi-ci
-# intel-basekit intel-hpckit are too large in size
- build_icc:
- name: oneAPI ICC SP&DP [Linux]
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v2
- - name: install dependencies
- run: |
- export DEBIAN_FRONTEND=noninteractive
- sudo apt-get -qqq update
- sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
- sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
- sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
- echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
- sudo apt-get update
- sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
- set +e
- source /opt/intel/oneapi/setvars.sh
- set -e
- sudo curl -L -o /usr/local/bin/cmake-easyinstall https://git.io/JvLxY
- sudo chmod a+x /usr/local/bin/cmake-easyinstall
- export CEI_SUDO="sudo"
- CXX=$(which icpc) CC=$(which icc) cmake-easyinstall --prefix=/usr/local git+https://github.com/openPMD/openPMD-api.git@0.13.2 -DopenPMD_USE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI_TOOLS=OFF
- - name: build WarpX
- run: |
- set +e
- source /opt/intel/oneapi/setvars.sh
- set -e
- export CXX=$(which icpc)
- export CC=$(which icc)
-
- cmake -S . -B build_dp \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DWarpX_LIB=ON \
- -DWarpX_MPI=OFF \
- -DWarpX_OPENPMD=ON \
- -DWarpX_openpmd_internal=OFF
- cmake --build build_dp -j 2
-
- cmake -S . -B build_sp \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DWarpX_LIB=ON \
- -DWarpX_MPI=OFF \
- -DWarpX_OPENPMD=ON \
- -DWarpX_openpmd_internal=OFF \
- -DWarpX_PRECISION=SINGLE
- cmake --build build_sp -j 2
-
- python3 -m pip install --upgrade pip setuptools wheel
- PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip install -v .
-
- build_icpx:
- name: oneAPI ICX SP [Linux]
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v2
- - name: install dependencies
- shell: bash
- run: |
- .github/workflows/dependencies/dpcpp.sh
- - name: build WarpX
- shell: bash
- run: |
- set +e
- source /opt/intel/oneapi/setvars.sh
- set -e
- export CXX=$(which icpx)
- export CC=$(which icx)
-
- cmake -S . -B build_sp \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DWarpX_LIB=ON \
- -DWarpX_MPI=OFF \
- -DWarpX_OPENPMD=ON \
- -DWarpX_PRECISION=SINGLE
- cmake --build build_sp -j 2
-
- python3 -m pip install --upgrade pip
- python3 -m pip install --upgrade setuptools wheel
- PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel -v .
- python3 -m pip install *.whl
-
- - name: run pywarpx
- run: |
- set +e
- source /opt/intel/oneapi/setvars.sh
- set -e
- export OMP_NUM_THREADS=2
- Examples/Physics_applications/laser_acceleration/PICMI_inputs_laser_acceleration.py
-
- build_dpcc:
- name: oneAPI DPC++ SP [Linux]
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v2
- - name: install dependencies
- shell: bash
- run: |
- .github/workflows/dependencies/dpcpp.sh
- - name: build WarpX
- shell: bash
- run: |
- set +e
- source /opt/intel/oneapi/setvars.sh
- set -e
- export CXX=$(which dpcpp)
- export CC=$(which clang)
-
- cmake -S . -B build_sp \
- -DBUILD_SHARED_LIBS=ON \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DWarpX_COMPUTE=SYCL \
- -DWarpX_LIB=ON \
- -DWarpX_MPI=OFF \
- -DWarpX_OPENPMD=ON \
- -DWarpX_PRECISION=SINGLE
- cmake --build build_sp -j 2
-
- # Skip this as it will copy the binary artifacts and we are tight on disk space
- # python3 -m pip install --upgrade pip
- # python3 -m pip install --upgrade setuptools wheel
- # PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
- # python3 -m pip install *.whl
-
- build_hip:
- name: HIP SP [Linux]
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v2
- - name: install dependencies
- shell: bash
- run: .github/workflows/dependencies/hip.sh
- - name: build WarpX
- shell: bash
- run: |
- source /etc/profile.d/rocm.sh
- hipcc --version
- export CXX=$(which hipcc)
- export CC=$(which clang)
-
- cmake -S . -B build_sp \
- -DCMAKE_VERBOSE_MAKEFILE=ON \
- -DAMReX_AMD_ARCH=gfx900 \
- -DWarpX_COMPUTE=HIP \
- -DWarpX_LIB=ON \
- -DWarpX_MPI=ON \
- -DWarpX_OPENPMD=ON \
- -DWarpX_PRECISION=SINGLE \
- -DWarpX_PSATD=ON
- cmake --build build_sp -j 2
-
- export WarpX_MPI=OFF
- PYWARPX_LIB_DIR=$PWD/build_sp/lib python3 -m pip wheel .
- python3 -m pip install *.whl
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index ce7a7ffb0..2a8b0cbd4 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -1,4 +1,4 @@
-name: windows
+name: 🪟 Windows
on: [push, pull_request]