From 3aa166f50ac1032b8986d92f0840dd6ce3b9abe7 Mon Sep 17 00:00:00 2001 From: Theodore Chang Date: Wed, 11 Oct 2023 21:20:15 +0200 Subject: [PATCH] More workflow --- .github/workflows/dev-ubuntu.yml | 118 +++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/dev-ubuntu.yml diff --git a/.github/workflows/dev-ubuntu.yml b/.github/workflows/dev-ubuntu.yml new file mode 100644 index 000000000..98c2febd7 --- /dev/null +++ b/.github/workflows/dev-ubuntu.yml @@ -0,0 +1,118 @@ +name: Develop +on: + push: + branches: [ dev ] + pull_request: + branches: [ dev ] +jobs: + ubuntu-dev: + runs-on: ubuntu-22.04 + timeout-minutes: 60 + strategy: + matrix: + build: [ RelWithDebInfo, Debug ] + compiler: [ { c: gcc, cpp: g++, fortran: gfortran }, { c: icx, cpp: icpx, fortran: ifx } ] + avx: [ ON, OFF ] + vtk: [ ON, OFF ] + mkl: [ ON ] + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + - name: VTK + run: | + if [ "${{ matrix.vtk }}" == "ON" ]; then + wget -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz + tar xf VTK-9.2.6-linux.tar.gz + fi + - name: MKL + run: | + if [ "${{ matrix.mkl }}" == "ON" ] || [ "${{ matrix.compiler.c }}" == "icx" ]; then + wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null + echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list + fi + if [ "${{ matrix.mkl }}" == "ON" ]; then + sudo apt-get update && sudo apt-get install intel-oneapi-mkl-devel + fi + if [ "${{ matrix.compiler.c }}" == "icx" ]; then + sudo apt-get update && sudo apt-get install intel-oneapi-compiler-dpcpp-cpp intel-oneapi-compiler-fortran + echo "IOMP=ON" >> "$GITHUB_ENV" + else + echo "IOMP=OFF" >> "$GITHUB_ENV" + fi + - name: Dependency + run: | + sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev dpkg-dev xz-utils + echo "COVERAGE=OFF" >> "$GITHUB_ENV" + - name: Flag + if: | + matrix.build == 'Debug' && + matrix.compiler.c == 'gcc' && + matrix.avx == 'OFF' && + matrix.vtk == 'OFF' + run: | + echo "COVERAGE=ON" >> "$GITHUB_ENV" + - name: Compile + run: | + if [ "${{ matrix.compiler.c }}" == "icx" ]; then + source /opt/intel/oneapi/setvars.sh + fi + go build Checker/updater.go + mkdir build && cd build + cmake -DCMAKE_C_COMPILER=${{ matrix.compiler.c }} -DCMAKE_CXX_COMPILER=${{ matrix.compiler.cpp }} -DCMAKE_Fortran_COMPILER=${{ matrix.compiler.fortran }} -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DTEST_COVERAGE=${{ env.COVERAGE }} -DUSE_AVX=${{ matrix.avx }} -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=${{ matrix.vtk }} -DVTK_DIR=/home/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DUSE_MKL=${{ matrix.mkl }} -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DLINK_DYNAMIC_MKL=OFF -DUSE_INTEL_OPENMP=${{ env.IOMP }} -DCMAKE_INSTALL_PREFIX=suanPan-linux .. + make install -j"$(nproc)" && make package + - name: Pack + run: | + cp updater build/suanPan-linux/bin + cd build + file_name="suanPan-linux" + if [ "${{ matrix.build }}" == "Debug" ]; then + file_name+="-debug" + else + file_name+="-release" + fi + if [ "${{ matrix.compiler.c }}" == "gcc" ]; then + file_name+="-gcc" + else + file_name+="-intel" + fi + if [ "${{ matrix.avx }}" == "ON" ]; then + file_name+="-avx" + else + file_name+="-no-avx" + fi + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + else + file_name+="-no-vtk" + fi + if [ "${{ matrix.mkl }}" == "ON" ]; then + file_name+="-mkl" + else + file_name+="-openblas" + fi + file_name+=".tar.gz" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + tar czf $file_name -C suanPan-linux . + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: build/${{ env.ARTIFACT }} + - name: Test + run: | + export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/build/suanPan-linux/lib + ./build/suanPan-linux/bin/suanPan -v + - name: Coverage + if: env.COVERAGE == 'ON' + run: | + export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/build/suanPan-linux/lib + cd build + bash ../Script/Coverage.sh . + for SRC in `find . | egrep '\.o'`; do gcov -n $SRC > /dev/null; done + - name: Report + if: env.COVERAGE == 'ON' + uses: codecov/codecov-action@v3 + with: + gcov: true