From 9d52e38f9ff1840cc0a7f6f9f4d94eb68d3c9f3f Mon Sep 17 00:00:00 2001 From: Robert Schoene Date: Wed, 10 Jan 2024 12:30:19 +0100 Subject: [PATCH] re-enable tests --- .github/workflows/cmake.yml | 401 ++++++++++++++++++++++++++++++++++++ 1 file changed, 401 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 59499628..51c3eb79 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -3,12 +3,177 @@ name: Build on: [push, pull_request] jobs: + matrix: + os: [ubuntu-20.04] + compiler: [g++-7, g++-8, g++-9, g++-10, clang++-8, clang++-9, clang++-10] + CUDA: ['0', '8.0', '11.0', 'NVHPC-22.5'] + ONEAPI: ['0', '2023.2.0', '2024.0'] + + runs-on: ${{ matrix.os }} + + env: + CUDA_ROOT: '/usr/local/cuda' + + steps: + - name: Install g++-7 (if needed) + if: matrix.compiler == 'g++-7' + run: | + sudo apt install g++-7 + - name: Install g++-8 (if needed) + if: matrix.compiler == 'g++-8' + run: | + sudo apt install g++-8 + - name: Install clang++-8 (if needed) + if: matrix.compiler == 'clang++-8' + run: | + sudo apt install clang-8 + - name: Install clang++-9 (if needed) + if: matrix.compiler == 'clang++-9' + run: | + sudo apt install clang-9 + - name: Install clang++-10 (if needed) + if: matrix.compiler == 'clang++-10' + run: | + sudo apt install clang-10 + - uses: actions/checkout@v2 + with: + fetch-depth: '0' + - name: Install CUDA runtime (if needed) + if: matrix.CUDA != '0' && matrix.ONEAPI == 0 + run: | + case ${{ matrix.CUDA }} in + 8.0) + wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run + wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda_8.0.61.2_linux-run + sudo sh cuda_8.0.61_375.26_linux-run --extract=${CUDA_ROOT} + sudo sh ${CUDA_ROOT}/cuda-linux64-rel-8.0.61-21551265.run --tar mxvf -C ${CUDA_ROOT} + sudo sh cuda_8.0.61.2_linux-run --accept-eula --silent --installdir=${CUDA_ROOT} + ;; + 11.0) + wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run + sudo sh cuda_11.0.3_450.51.06_linux.run --toolkit --toolkitpath=${CUDA_ROOT} --override --silent + ;; + NVHPC-22.5) + wget https://developer.download.nvidia.com/hpc-sdk/22.5/nvhpc_2022_225_Linux_x86_64_cuda_11.7.tar.gz + tar xpzf nvhpc_2022_225_Linux_x86_64_cuda_11.7.tar.gz + sudo NVHPC_SILENT="true" NVHPC_INSTALL_DIR="$CUDA_ROOT" NVHPC_INSTALL_TYPE="single" ./nvhpc_2022_225_Linux_x86_64_cuda_11.7/install + esac + - name: Install OneAPI Base-Toolkit (if needed) + if: matrix.ONEAPI != '0' && matrix.CUDA == '0' + run: | + 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 + sudo apt update + sudo apt install intel-basekit-${{ matrix.ONEAPI }} + - name: Create build directory + run: | + mkdir build + - name: Run CMake configure (default) + if: matrix.CUDA == '0' && matrix.ONEAPI == '0' + env: + CXX: ${{ matrix.compiler }} + run: | + cd build + cmake .. + - name: Run CMake configure (CUDA) + if: matrix.CUDA != '0' && matrix.CUDA != 'NVHPC-22.5' && matrix.ONEAPI == '0' + env: + CXX: ${{ matrix.compiler }} + run: | + export CPATH=${CUDA_ROOT}/include:${CPATH} + export LD_LIBRARY_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs:${LD_LIBRARY_PATH} + export LIBRARY_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs:${LIBRARY_PATH} + export CUDA_LIB_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs + export PATH=${CUDA_ROOT}:${PATH} + export CUDA_HOME=${CUDA_ROOT} + export CUDA_PATH=${CUDA_ROOT} + export CUDAToolkit_ROOT=${CUDA_ROOT} + + cd build + cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_CUDA" -DCMAKE_EXE_LINKER_FLAGS="-L${CUDA_ROOT}/lib64/stubs/" .. + - name: Run CMake configure (CUDA with NVHPC) + if: matrix.CUDA == 'NVHPC-22.5' && matrix.ONEAPI == '0' + env: + CXX: ${{ matrix.compiler }} + run: | + NVARCH=`uname -s`_`uname -m`; export NVARCH + PATH=$CUDA_ROOT/$NVARCH/22.5/compilers/bin:$PATH; export PATH + LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/compilers/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH + LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH + LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64/stubs:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH + + cd build + cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_CUDA" -DCMAKE_EXE_LINKER_FLAGS=-L"$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64/stubs" -LA .. + - name: Run CMake configure (OneAPI 2023.2.0) + if: matrix.CUDA == '0' && matrix.ONEAPI =='2023.2.0' + run: | + . /opt/intel/oneapi/setvars.sh + cd build + cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_ONEAPI" .. + - name: Run CMake configure (OneAPI 2024.0) + if: matrix.CUDA == '0' && matrix.ONEAPI =='2024.0' + run: | + . /opt/intel/oneapi/${{ matrix.ONEAPI }}/oneapi-vars.sh + cd build + cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_ONEAPI" .. + - name: Build (default, CUDA) + if: matrix.ONEAPI =='0' + run: | + cd build + make -j2 + - name: Build (OneAPI 2023.2.0) + if: matrix.CUDA == '0' && matrix.ONEAPI =='2023.2.0' + run: | + . /opt/intel/oneapi/setvars.sh + cd build + make -j2 + - name: Build (OneAPI 2024.0) + if: matrix.CUDA == '0' && matrix.ONEAPI =='2024.0' + run: | + . /opt/intel/oneapi/${{ matrix.ONEAPI }}/oneapi-vars.sh + cd build + make -j2 + - name: Strip binary (default) + if: matrix.CUDA == '0' && matrix.ONEAPI == '0' + run: | + cd build + strip src/FIRESTARTER + - name: Strip binary (CUDA) + if: matrix.CUDA != '0' && matrix.ONEAPI == '0' + run: | + cd build + strip src/FIRESTARTER_CUDA + - name: Strip binary (OneAPI) + if: matrix.ONEAPI != '0' && matrix.CUDA == '0' + run: | + cd build + strip src/FIRESTARTER_ONEAPI + - name: Test FIRESTARTER (default) + if: matrix.CUDA == '0' && matrix.ONEAPI == '0' + run: ./build/src/FIRESTARTER -t 1 + - uses: actions/upload-artifact@v2 + if: matrix.compiler == 'clang++-10' && matrix.CUDA == '0' && matrix.ONEAPI == '0' + with: + name: FIRESTARTER-linux + path: build/src/FIRESTARTER + - uses: actions/upload-artifact@v2 + if: matrix.compiler == 'clang++-10' && matrix.CUDA != '0' && matrix.ONEAPI == '0' + with: + name: FIRESTARTER_CUDA_${{ matrix.CUDA }}-linux + path: build/src/FIRESTARTER_CUDA + - uses: actions/upload-artifact@v2 + if: matrix.compiler == 'clang++-10' && matrix.CUDA == '0' && matrix.ONEAPI != '0' + with: + name: FIRESTARTER_ONEAPI_${{ matrix.ONEAPI }}-linux + path: build/src/FIRESTARTER_ONEAPI build-windows: strategy: fail-fast: false matrix: os: [windows-2019] cfg: + - { CUDA: '0', ONEAPI: '0', MSVC: true } + - { CUDA: '0', ONEAPI: '0', MSVC: false } - { CUDA: '11.0', MSVC: true } runs-on: ${{ matrix.os }} @@ -38,6 +203,18 @@ jobs: shell: pwsh run: | mkdir build + - name: Run CMake configure + if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false + shell: pwsh + run: | + cd build + cmake -G "MinGW Makefiles" .. + - name: Run CMake configure + if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == true + shell: pwsh + run: | + cd build + cmake -G "NMake Makefiles" .. - name: Run CMake configure if: matrix.cfg.CUDA != '0' shell: pwsh @@ -51,4 +228,228 @@ jobs: run: | cd build cmake --build . -j2 + - name: Copy Hwloc DLL + shell: pwsh + if: matrix.cfg.MSVC == true + run: | + cd build + cp ../lib/Hwloc/sources/contrib/windows/x64/Release/libhwloc-15.dll src + - name: Strip binary + if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false + run: | + cd build + strip src\FIRESTARTER.exe + - name: Test FIRESTARTER + if: matrix.cfg.CUDA == '0' + shell: pwsh + run: .\build\src\FIRESTARTER.exe -t 1 + - uses: actions/upload-artifact@v2 + if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false + with: + name: FIRESTARTER-windows + path: build\src\FIRESTARTER.exe + - uses: actions/upload-artifact@v2 + if: matrix.cfg.CUDA != '0' + with: + name: FIRESTARTER_CUDA_${{ matrix.cfg.CUDA }}-windows + path: | + build\src\FIRESTARTER_CUDA.exe + build\src\libhwloc-15.dll + build-macos: + strategy: + fail-fast: false + matrix: + os: [macos-11, macos-12, macos-13] + #os: [macos-11.0, macos-10.15] + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: '0' + - name: Install Homebrew dependencies + run: | + brew upgrade cmake + - name: Create build directory + run: | + mkdir build + - name: Run CMake configure + run: | + cd build + cmake .. + - name: Build + run: | + cd build + make -j2 + - name: Strip binary + run: | + cd build + strip src/FIRESTARTER + - name: Test FIRESTARTER + run: | + cd build + ./src/FIRESTARTER -t 1 + - uses: actions/upload-artifact@v2 + if: matrix.os == 'macos-12' + with: + name: FIRESTARTER-macOS_12 + path: build/src/FIRESTARTER + - uses: actions/upload-artifact@v2 + if: matrix.os == 'macos-11' + with: + name: FIRESTARTER-macOS_11 + path: build/src/FIRESTARTER + create-download: + name: Create download for Website + runs-on: ubuntu-latest + needs: [build-linux, build-macos, build-windows] + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: '0' + path: 'sources' + - name: Checkout submodules + run: | + cd sources + git submodule update --init --recursive + - name: Create Build directory + run: | + mkdir build + # Linux + - name: Retrieve FIRESTARTER-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER FIRESTARTER-linux + rm -rf FIRESTARTER + chmod +x FIRESTARTER-linux + # Linux CUDA 8.0 + - name: Retrieve FIRESTARTER_CUDA_8.0-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_CUDA_8.0-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_CUDA FIRESTARTER_CUDA_8.0 + rm -rf FIRESTARTER + chmod +x FIRESTARTER_CUDA_8.0 + # Linux CUDA 11.0 + - name: Retrieve FIRESTARTER_CUDA_11.0-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_CUDA_11.0-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_CUDA FIRESTARTER_CUDA_11.0 + rm -rf FIRESTARTER + chmod +x FIRESTARTER_CUDA_11.0 + # Linux CUDA HPC + - name: Retrieve FIRESTARTER_CUDA_NVHPC-22.5-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_CUDA_NVHPC-22.5-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_CUDA FIRESTARTER_CUDA_NVHPC-22.5 + rm -rf FIRESTARTER + chmod +x FIRESTARTER_CUDA_NVHPC-22.5 + # Linux OneAPI + - name: Retrieve FIRESTARTER_ONEAPI_2024.0-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_ONEAPI_2024.0-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_ONEAPI FIRESTARTER_ONEAPI_2024.0 + rm -rf FIRESTARTER + chmod +x FIRESTARTER_ONEAPI_2024.0 + - name: Retrieve FIRESTARTER_ONEAPI_2023.2.0-linux + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_ONEAPI_2023.2.0-linux + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_ONEAPI FIRESTARTER_ONEAPI_2023.2.0 + rm -rf FIRESTARTER + chmod +x FIRESTARTER_ONEAPI_2023.2.0 + # OSX 11.0 + #- name: Retrieve FIRESTARTER-macOS_11.0 + # uses: actions/download-artifact@v2 + # with: + # name: FIRESTARTER-macOS_11.0 + # path: FIRESTARTER + #- name: Move binary to right directory + # run: | + # mv FIRESTARTER/FIRESTARTER ../FIRESTARTER-macOS_11.0 + # rm -rf FIRESTARTER + # chmod +x ../FIRESTARTER-macOS_11.0 + # OSX 10.15 + - name: Retrieve FIRESTARTER-macOS_11 + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER-macOS_11 + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER FIRESTARTER-macOS_11 + rm -rf FIRESTARTER + chmod +x FIRESTARTER-macOS_11 + - name: Retrieve FIRESTARTER-macOS_12 + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER-macOS_12 + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER FIRESTARTER-macOS_12 + rm -rf FIRESTARTER + chmod +x FIRESTARTER-macOS_12 + # Windows + - name: Retrieve FIRESTARTER-windows + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER-windows + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER.exe FIRESTARTER-windows.exe + mv FIRESTARTER/libhwloc-15.dll libhwloc-15.dll + rm -rf FIRESTARTER + # Windows CUDA 11.0 + - name: Retrieve FIRESTARTER_CUDA_11.0-windows + uses: actions/download-artifact@v2 + with: + name: FIRESTARTER_CUDA_11.0-windows + path: FIRESTARTER + - name: Move binary to right directory + run: | + mv FIRESTARTER/FIRESTARTER_CUDA.exe FIRESTARTER_CUDA_11.0-windows.exe + mv FIRESTARTER/libhwloc-15.dll libhwloc-15.dll + rm -rf FIRESTARTER + # Create tar.gz + - name: Copy CHANGELOG, README and LICENSE + run: | + grep -v '\$\$' < sources/CHANGELOG > CHANGELOG + cat sources/README.md | tail -n +3 > README.md + cp sources/LICENSE LICENSE + cp sources/3rd-party-licenses . -r + cp sources/examples . -r + - name: Create tar.gz + run: | + mv FIRESTARTER-linux FIRESTARTER + rm -rf sources/.git* + tar -cvzf FIRESTARTER.tar.gz CHANGELOG README.md LICENSE libhwloc-15.dll 3rd-party-licenses examples sources FIRESTARTER* + - uses: actions/upload-artifact@v2 + with: + name: FIRESTARTER.tar.gz + path: FIRESTARTER.tar.gz