diff options
-rw-r--r-- | .github/workflows/cuda.yml | 42 | ||||
-rw-r--r-- | .github/workflows/hip.yml | 35 | ||||
-rw-r--r-- | .github/workflows/intel.yml | 129 | ||||
-rw-r--r-- | .github/workflows/macos.yml | 4 | ||||
-rw-r--r-- | .github/workflows/source.yml | 2 | ||||
-rw-r--r-- | .github/workflows/ubuntu.yml | 201 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 2 |
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] |