Skip to content

Commit

Permalink
Merge branch 'master' into naming_cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
pdziekan committed Jan 26, 2023
2 parents 1f0ba13 + 59c6407 commit f050d79
Show file tree
Hide file tree
Showing 57 changed files with 2,172 additions and 771 deletions.
101 changes: 101 additions & 0 deletions .github/backup/test_libclouphxx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# - name: Install Nvidia driver
# if: ${{!matrix.disable_cuda}}
# run: sudo apt install --no-install-recommends nvidia-driver-470
#
# - name: Install Singularity
# #when installed from this action, .SIF is always converted to sandbox (could be related to: https://githubmemory.com/repo/hpcng/singularity/issues/6065)
# uses: eWaterCycle/setup-singularity@v6
# with:
# singularity-version: 3.7.1
# #apt installation following https://sylabs.io/guides/3.0/user-guide/installation.html, but this is a too old version and uninstalls python-is-python3
## run: |
## wget -O- http://neuro.debian.net/lists/focal.de-fzj.libre | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
## sudo apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9
## sudo apt-get update
## sudo apt-get install -y singularity-container
#
# - name: Cache UWLCM Singularity image
# id: cache_singularity
# uses: actions/cache@v2
# with:
# path: '${{ github.workspace }}/singularity_images/uwlcm_ubuntu_20_04_cuda_11_4.sif'
# key: 'sng_ubuntu_20_04_cuda_11_4'
#
# - name: Download UWLCM Singularity image
# if: steps.cache_singularity.outputs.cache-hit != 'true'
# run: |
# mkdir '${{ github.workspace }}/singularity_images'
# singularity pull --disable_cache --dir '${{ github.workspace }}/singularity_images' library://pdziekan/default/uwlcm:ubuntu_20_04_cuda_11_4
# # disable Singularity cache, we cache manually
#
# - name: Set friendly Singularity image name
# uses: allenevans/[email protected]
# with:
# SI: '${{ github.workspace }}/singularity_images/uwlcm_ubuntu_20_04_cuda_11_4.sif'
#
# - name: Configure CMake
# # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
# run: singularity exec $SI cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DLIBCLOUDPHXX_FORCE_MULTI_CUDA=True -DLIBCLOUDPHXX_DISABLE_CUDA=${{matrix.disable_cuda}}
##
# - name: Build libcloudph++
# # Build your program with the given configuration
# run: VERBOSE=1 singularity exec $SI cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j${{matrix.threads}}


# - name: Run Singularity shell
# run: singularity shell '${{ github.workspace }}/singularity_images/uwlcm_ubuntu_20_04_cuda_11_1_1.0.sif'

# - name: Download UWLCM Singularity container
# run: wget https://github.com/igfuw/UWLCM/blob/0fc77ec68053936e36eea4b49f11b3dd2cb1a827/singularity/sng_ubuntu_20_04_cuda_11_1

# - name: Build UWLCM Singularity container
# run: singularity build sng_ubuntu_20_04_cuda_11_1.sif sng_ubuntu_20_04_cuda_11_1

# TODO: cache cuda-toolki

#- name: Install cuda-toolkit
# id: cuda-toolkit
# uses: Jimver/[email protected]
# with:
# linux-local-args: '["--toolkit"]'

# - name: Install boost
# uses: MarkusJx/[email protected]
# id: install-boost
# with:
# # REQUIRED: Specify the required boost version
# # A list of supported versions can be found here:
# # https://github.com/actions/boost-versions/blob/main/versions-manifest.json
# boost_version: 1.73.0
# # OPTIONAL: Specify a platform version
# #platform_version: 18.04
# # OPTIONAL: Specify a custom install location
# #boost_install_dir: /home/runner/some_directory

# - name: Install Thrust
# #run: sudo apt-get install libthrust-dev
# run: |
# git clone --depth=1 git://github.com/thrust/thrust.git --branch 1.9.10-1
# sudo ln -s `pwd`/thrust/thrust /usr/local/include/thrust

# - name: Cache Boost
# uses: actions/cache@v2
# with:
# path: '${{ runner.workspace }}/boost_*.tar.gz'
# key: 'boost-1.72.0'

# - name: Build Boost
# id: boost
# # This won't re-download the archive unnecessarily:
# uses: egor-tensin/build-boost@v1
# with:
# version: 1.72.0
# libraries: date_time # in fact we don't need any compiled libs, only header libs, but when nothing is passed all libs are built
# platform: x64
# configuration: RelWithDebInfo

#- name: Install hdf5 (Linux)
# run: sudo apt-get install libhdf5-dev
# #if: matrix.os == 'ubuntu-latest'

292 changes: 292 additions & 0 deletions .github/workflows/test_libclouphxx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
name: Test libcloudph++

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build_CUDA:
runs-on: ubuntu-20.04
strategy:
matrix:
name: ["CUDA"]
build_type: ["Debug", "RelWithDebInfoPortable"]
include:
- name: "CUDA"
disable_cuda: false
# not enough RAM to compile Debug CUDA on 4 threads
threads: 1

steps:
- uses: actions/checkout@v2

- name: build libcloudph++
uses: igfuw/[email protected]
with:
disable_cuda: ${{matrix.disable_cuda}}
build_type: ${{matrix.build_type}}
threads: ${{matrix.threads}}
path: ${{ github.workspace }}

build:
runs-on: ubuntu-20.04
strategy:
matrix:
name: ["no_CUDA"]
build_type: ["Debug", "RelWithDebInfoPortable"]
mpi: ["none", "mvapich2"]
#mpi: ["none"]
include:
- name: "no_CUDA"
disable_cuda: true
threads: 4
- mpi: "none"
tag: "ubuntu_20_04_cuda_11_4"
cxx: "g++"
- mpi: "mvapich2"
tag: "ubuntu_20_04_cuda_11_4_mvapich2"
cxx: "mpic++"

steps:
- uses: actions/checkout@v2

- name: build libcloudph++
uses: igfuw/[email protected]
with:
disable_cuda: ${{matrix.disable_cuda}}
build_type: ${{matrix.build_type}}
threads: ${{matrix.threads}}
path: ${{ github.workspace }}
install_prefix: ${{ github.workspace }}/installed
tag: ${{ matrix.tag }}
cxx: ${{ matrix.cxx }}

# tar build dir before upload as artifact to retain permission and case-sensitive names
- name: Compress libcloudph++ build
run: tar -cvf build.tar build

- name: Upload libcloudph++ build
uses: actions/upload-artifact@v2
with:
name: libcloud_build_${{matrix.build_type}}_mpi_${{matrix.mpi}}_tar
path: build.tar

# test jobs
unit_test:
needs: build
runs-on: ubuntu-20.04

strategy:
matrix:
build_type: ["RelWithDebInfoPortable", "Debug"]
mpi: ["none", "mvapich2"]
include:
- mpi: "none"
tag: "ubuntu_20_04_cuda_11_4"
- mpi: "mvapich2"
tag: "ubuntu_20_04_cuda_11_4_mvapich2"

steps:
- uses: actions/checkout@v2

- name: Download libcloudph++ build
uses: actions/download-artifact@v2
with:
name: libcloud_build_${{matrix.build_type}}_mpi_${{matrix.mpi}}_tar

- name: Decompress libcloudph++ build
run: tar -xvf build.tar

- name: load UWLCM Singularity image
uses: igfuw/[email protected]
with:
path: ${{ github.workspace }}/singularity_images
tag: ${{ matrix.tag }}

- name: Run unit tests
working-directory: ${{github.workspace}}/build
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: OMP_NUM_THREADS=4 singularity exec $SI ctest -C ${{matrix.build_type}} || cat Testing/Temporary/LastTest.log / # "/" intentional! (just to make cat exit with an error code)


kinematic_2D_test:
needs: build
runs-on: ubuntu-20.04

strategy:
matrix:
build_type: ["RelWithDebInfoPortable"]
mpi: ["none"]

steps:
- uses: actions/checkout@v2

- name: Download libcloudph++ build
uses: actions/download-artifact@v2
with:
name: libcloud_build_${{matrix.build_type}}_mpi_${{matrix.mpi}}_tar

- name: Decompress libcloudph++ build
run: tar -xvf build.tar

# Debugging with a ssh session
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3

- name: Install libcloudph++
run: sudo cmake --install build

- name: checkout libmpdata++ repo
uses: actions/checkout@v2
with:
repository: igfuw/libmpdataxx
path: libmpdataxx

- name: Install libmpdata++
uses: igfuw/[email protected]
with:
build_type: ${{matrix.build_type}}
threads: 4
path: ${{ github.workspace }}/libmpdataxx/libmpdata++
install_prefix: ${{ github.workspace }}/installed

- name: Configure kinematic_2D CMake
working-directory: ${{github.workspace}}/models/kinematic_2D
run: singularity exec -B ${{ github.workspace }}/installed/ $SI cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -Dlibcloudph++_DIR=${{ github.workspace }}/installed/share/libcloudph++ -Dlibmpdata++_DIR=${{ github.workspace }}/installed/share/libmpdata++


- name: Build kinematic_2D
working-directory: ${{github.workspace}}/models/kinematic_2D
run: VERBOSE=1 singularity exec -B ${{ github.workspace }}/installed/ $SI cmake --build build --config ${{matrix.build_type}}

- name: Run kinematic_2D tests
working-directory: ${{github.workspace}}/models/kinematic_2D/build
run: |
singularity exec -B ${{ github.workspace }}/installed/ $SI ctest -VV -R travis # compare icicle results against reference data (done for full simulation for bulk schemes and a couple of steps for lagrangian)
cat Testing/Temporary/LastTest.log
# Debugging with a ssh session on failure
# - name: Setup tmate session
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3


parcel_test:
needs: build
# do after kinematic_2D_test, because otherwise we occasionally get "illegal instruction" errors, probably because libcloudphxx is installed simultaneously on the same runner at the same location by two different jobs (?)
# needs: kinematic_2D_test
runs-on: ubuntu-20.04

strategy:
matrix:
build_type: ["RelWithDebInfoPortable", "Debug"]
mpi: ["none"]
include:
- build_type: "RelWithDebInfoPortable"
long_tests: true
debug_tests: false
- build_type: "Debug"
long_tests: false
debug_tests: true


steps:
- uses: actions/checkout@v2

- name: Download libcloudph++ build
uses: actions/download-artifact@v2
with:
name: libcloud_build_${{matrix.build_type}}_mpi_${{matrix.mpi}}_tar

- name: Decompress libcloudph++ build
run: tar -xvf build.tar

- name: load UWLCM Singularity image
uses: igfuw/[email protected]
with:
path: ${{ github.workspace }}/singularity_images

- name: Install libcloudph++
run: sudo cmake --install build

- name: checkout parcel repo
uses: actions/checkout@v2
with:
repository: igfuw/parcel
path: parcel

- run: mkdir parcel/plots/outputs

- name: run parcel unit_test
working-directory: ${{github.workspace}}/parcel
if: ${{matrix.long_tests}}
run: PYTHONPATH=${{ github.workspace }}/installed/usr/lib/python3/dist-packages singularity exec -B${{ github.workspace }}/installed $SI python3 -m pytest -s -v unit_test
#run: PYTHONPATH=${{ github.workspace }}/installed/usr/lib/python3/dist-packages singularity exec -B${{ github.workspace }}/installed,/usr/lib/python3/dist-packages/Gnuplot $SI python3 -m pytest -v unit_test

- name: run parcel long_test
working-directory: ${{github.workspace}}/parcel
if: ${{matrix.long_tests}}
run: PYTHONPATH=${{ github.workspace }}/installed/usr/lib/python3/dist-packages singularity exec -B${{ github.workspace }}/installed $SI python3 -m pytest -s -v long_test

- name: run parcel unit_test_debug
working-directory: ${{github.workspace}}/parcel
if: ${{matrix.debug_tests}}
run: PYTHONPATH=${{ github.workspace }}/installed/usr/lib/python3/dist-packages singularity exec -B${{ github.workspace }}/installed $SI python3 -m pytest -s -v unit_test_debug

build_and_test_KiD-A:
runs-on: ubuntu-20.04
strategy:
matrix:
name: ["no_CUDA"]
build_type: ["RelWithDebInfoPortable"]
mpi: ["none"]
include:
- name: "no_CUDA"
disable_cuda: true
threads: 4

steps:
- name: Checkout libcloudphxx PR
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: merge with the KiD-A branch
run: |
git config --global user.email "[email protected]"
git config --global user.name "Piotr Dziekan"
git fetch origin
git merge origin/kida-1d
- run: grep diag_accr include/libcloudph++/lgrngn/particles.hpp

- name: build libcloudph++
uses: igfuw/[email protected]
with:
disable_cuda: ${{matrix.disable_cuda}}
build_type: ${{matrix.build_type}}
threads: ${{matrix.threads}}
path: ${{ github.workspace }}
install_prefix: ${{ github.workspace }}/installed

- name: Install libcloudph++
run: sudo cmake --install build

- name: checkout KiD-libcloud repo
uses: actions/checkout@v2
with:
repository: igfuw/kid-libcloud
path: kid-libcloud

- name: run KiD LWP test
working-directory: ${{github.workspace}}/kid-libcloud
run: PYTHONPATH=${{ github.workspace }}/installed/usr/lib/python3/dist-packages singularity exec -B${{ github.workspace }}/installed $SI bash ./.travis_scripts/lwp_test.sh

call_test_uwlcm_hlpr:
uses: igfuw/UWLCM/.github/workflows/test_uwlcm_hlpr.yml@master
with:
UWLCM_sha: "master"
libcloudphxx_sha: ${{ github.sha }} # merge PR SHA
libmpdataxx_sha: "master"
Loading

0 comments on commit f050d79

Please sign in to comment.