diff --git a/.github/actions/select_setup/action.yml b/.github/actions/select_setup/action.yml new file mode 100644 index 0000000000..4b8f6c0579 --- /dev/null +++ b/.github/actions/select_setup/action.yml @@ -0,0 +1,113 @@ +name: Setup compiler and OS combo +description: installs dependencies and correct compiler/OS versions to build and test simeng + +############################################################################## +# Calls the correct setup action based on parameters passed into this action. +############################################################################## + +inputs: + OS: + required: true + COMPILER: + required: true + MODE: + required: true + +runs: + using: 'composite' + steps: + ########################################## + # GCC jobs + ########################################## + + # ubuntu + - if: ${{ contains( inputs.COMPILER, 'gcc') && contains( inputs.OS, 'ubuntu') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_gcc_ubuntu + with: + OS: ${{ inputs.OS }} + gcc-version: ${{ inputs.COMPILER }} + MODE: ${{ inputs.mode }} + + # rocky linux + - if: ${{ contains( inputs.COMPILER, 'gcc') && contains( inputs.OS, 'rocky') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_gcc_rocky + with: + OS: ${{ inputs.OS }} + gcc-version: ${{ inputs.COMPILER }} + MODE: ${{ inputs.mode }} + + # red hat + - if: ${{ contains( inputs.COMPILER, 'gcc') && contains( inputs.OS, 'redhat') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_gcc_redhat + with: + OS: ${{ inputs.OS }} + gcc-version: ${{ inputs.COMPILER }} + MODE: ${{ inputs.mode }} + + # debian + - if: ${{ contains( inputs.COMPILER, 'gcc') && contains( inputs.OS, 'debian') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_gcc_debian + with: + OS: ${{ inputs.OS }} + gcc-version: ${{ inputs.COMPILER }} + MODE: ${{ inputs.mode }} + + # macos + - if: ${{ contains( inputs.COMPILER, 'gcc') && contains( inputs.OS, 'macos') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_gcc_macos + with: + OS: ${{ inputs.OS }} + gcc-version: ${{ inputs.COMPILER }} + MODE: ${{ inputs.mode }} + + ########################################## + # APPLE CLANG + ########################################## + + - if: ${{ contains( inputs.COMPILER, 'clang') && contains( inputs.OS, 'macos') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_clang_macos + with: + OS: ${{ inputs.OS }} + MODE: ${{ inputs.mode }} + + ########################################## + # ARM CLANG + ########################################## + + # ubuntu + - if: ${{ contains( inputs.COMPILER, 'armclang') && contains( inputs.OS, 'ubuntu') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_armclang_ubuntu + with: + OS: ${{ inputs.OS }} + MODE: ${{ inputs.mode }} + + # debian + - if: ${{ contains( inputs.COMPILER, 'armclang') && contains( inputs.OS, 'debian') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_armclang_debian + with: + OS: ${{ inputs.OS }} + MODE: ${{ inputs.mode }} + + # redhat + - if: ${{ contains( inputs.COMPILER, 'armclang') && contains( inputs.OS, 'redhat') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_armclang_redhat + with: + OS: ${{ inputs.OS }} + MODE: ${{ inputs.mode }} + + # rocky + - if: ${{ contains( inputs.COMPILER, 'armclang') && contains( inputs.OS, 'rocky') }} + name: Install ${{ inputs.COMPILER }} + Build SimEng + uses: ./.github/actions/setup_armclang_rocky + with: + OS: ${{ inputs.OS }} + MODE: ${{ inputs.mode }} \ No newline at end of file diff --git a/.github/actions/setup_armclang_debian/action.yml b/.github/actions/setup_armclang_debian/action.yml new file mode 100644 index 0000000000..fc54a98284 --- /dev/null +++ b/.github/actions/setup_armclang_debian/action.yml @@ -0,0 +1,95 @@ +name: setup armclang +description: installs dependencies and correct armclang version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + MODE: + description: simeng-mode e.g. Release or Debug + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + export DEBIAN_FRONTEND=noninteractive + + # Update package lists + apt-get update + + # Install essential packages + apt-get install -y \ + python3-launchpadlib \ + software-properties-common \ + build-essential \ + sudo \ + wget \ + zlib1g-dev \ + python3 \ + build-essential \ + libssl-dev \ + ninja-build \ + tree \ + git + + # add pyparsing for benchmarking + apt-get install -y python3-pip + pip3 install pyparsing + + apt-get update + apt-get upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via apt + shell: bash + run: | + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ + apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' && \ + apt update && apt install cmake -y + apt upgrade -y + + ####################################### + # Install ArmClang + ####################################### + - name: Install armclang + shell: bash + run: | + apt-get update + apt-get upgrade -y + apt-get install environment-modules + source /etc/profile.d/modules.sh + + wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + tar -xf arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + + ./arm-compiler-for-linux_24.04_Ubuntu-20.04/arm-compiler-for-linux_24.04_Ubuntu-20.04.sh --install-to ./armclang_compiler + export MODULEPATH=$MODULEPATH:$(pwd)/armclang_compiler/modulefiles + + module avail + module load acfl/24.04 + armclang -v + + echo "C_COMPILER=$(which armclang)" >> $GITHUB_ENV + echo "CPP_COMPILER=$(which armclang++)" >> $GITHUB_ENV + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install + + diff --git a/.github/actions/setup_armclang_redhat/action.yml b/.github/actions/setup_armclang_redhat/action.yml new file mode 100644 index 0000000000..592e375d01 --- /dev/null +++ b/.github/actions/setup_armclang_redhat/action.yml @@ -0,0 +1,91 @@ +name: setup armclang +description: installs dependencies and correct armclang version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + MODE: + description: simeng-mode e.g. Release or Debug + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + dnf -y update && \ + dnf -y install \ + gcc gcc-c++ make \ + wget \ + python3 \ + git \ + diffutils \ + openssl-devel \ + bzip2 \ + automake \ + autoconf \ + cmake \ + file \ + zlib-devel + + if [[ ${{ inputs.OS }} == 'redhat/ubi8:latest' ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + elif [[ ${{ inputs.OS }} == 'redhat/ubi9:latest' ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi + + # add pyparsing for benchmarking + dnf install -y python3-pip + pip3 install pyparsing + + dnf update -y + dnf upgrade -y + dnf clean all + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via DNF + shell: bash + run: | + dnf install -y cmake + + ###################################### + # Install ArmClang + ###################################### + - name: Install armclang + shell: bash + run: | + + dnf install -y environment-modules + source /etc/profile.d/modules.sh + + wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + tar -xf arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + + ./arm-compiler-for-linux_24.04_Ubuntu-20.04/arm-compiler-for-linux_24.04_Ubuntu-20.04.sh --install-to ./armclang_compiler + export MODULEPATH=$MODULEPATH:$(pwd)/armclang_compiler/modulefiles + + module avail + module load acfl/24.04 + armclang -v + + echo "C_COMPILER=$(which armclang)" >> $GITHUB_ENV + echo "CPP_COMPILER=$(which armclang++)" >> $GITHUB_ENV + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install diff --git a/.github/actions/setup_armclang_rocky/action.yml b/.github/actions/setup_armclang_rocky/action.yml new file mode 100644 index 0000000000..93f337f02a --- /dev/null +++ b/.github/actions/setup_armclang_rocky/action.yml @@ -0,0 +1,86 @@ +name: setup armclang +description: installs dependencies and correct armclang version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + MODE: + description: simeng-mode e.g. Release or Debug + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + dnf -y update && \ + dnf install -y epel-release \ + gcc gcc-c++ make \ + git \ + wget \ + openssl-devel \ + automake \ + autoconf \ + bzip2 \ + file \ + sudo \ + tree \ + zlib-devel + + # add pyparsing for benchmarking + dnf install -y python3-pip + pip3 install pyparsing + + dnf group install -y "Development Tools" + dnf update -y + dnf upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via DNF + shell: bash + run: | + dnf install -y cmake + + ###################################### + # Install ArmClang + ###################################### + - name: Install armclang + shell: bash + run: | + + dnf install -y environment-modules + source /etc/profile.d/modules.sh + + wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + tar -xf arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + + ./arm-compiler-for-linux_24.04_Ubuntu-20.04/arm-compiler-for-linux_24.04_Ubuntu-20.04.sh --install-to ./armclang_compiler + export MODULEPATH=$MODULEPATH:$(pwd)/armclang_compiler/modulefiles + + module avail + module load acfl/24.04 + armclang -v + + echo "C_COMPILER=$(which armclang)" >> $GITHUB_ENV + echo "CPP_COMPILER=$(which armclang++)" >> $GITHUB_ENV + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.GCC_DIR }} \ + -DCMAKE_CXX_COMPILER=${{ env.CPP_DIR }} + + cmake --build build -j $(nproc) + + cmake --build build --target install + diff --git a/.github/actions/setup_armclang_ubuntu/action.yml b/.github/actions/setup_armclang_ubuntu/action.yml new file mode 100644 index 0000000000..dada710f68 --- /dev/null +++ b/.github/actions/setup_armclang_ubuntu/action.yml @@ -0,0 +1,105 @@ +name: setup armclang +description: installs dependencies and correct armclang version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + MODE: + description: simeng-mode e.g. Release or Debug + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies + ####################################### + - name: Install dependencies + run: | + export DEBIAN_FRONTEND=noninteractive + + # Update package lists + apt-get update + + # Install essential packages + apt-get install -y \ + software-properties-common \ + sudo \ + wget \ + zlib1g-dev \ + python3 \ + build-essential \ + libssl-dev \ + ninja-build \ + tree \ + git + + # add pyparsing for benchmarking + apt-get install -y python3-pip + pip3 install pyparsing + + # Add additional repositories + add-apt-repository universe + add-apt-repository ppa:ubuntu-toolchain-r/test + + # Update package lists again after adding repositories + apt-get update + + # Upgrade all installed packages + apt-get upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install cmake via apt + shell: bash + run: | + if [[ ${{ inputs.OS == 'ubuntu:18.04' }} ]]; then + NAME=bionic + else + NAME=focal + fi + + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ + apt-add-repository "deb https://apt.kitware.com/ubuntu/ $NAME main" && \ + apt update && apt install cmake -y + apt upgrade -y + + ####################################### + # Install ArmClang + ####################################### + - name: Install armclang + shell: bash + run: | + apt-get update + apt-get upgrade -y + apt-get install environment-modules + source /etc/profile.d/modules.sh + + wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + tar -xf arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar + + ./arm-compiler-for-linux_24.04_Ubuntu-20.04/arm-compiler-for-linux_24.04_Ubuntu-20.04.sh --install-to ./armclang_compiler + export MODULEPATH=$MODULEPATH:$(pwd)/armclang_compiler/modulefiles + + module avail + module load acfl/24.04 + armclang -v + echo "C_COMPILER=$(which armclang)" >> $GITHUB_ENV + echo "CPP_COMPILER=$(which armclang++)" >> $GITHUB_ENV + + ####################################### + # Build SimEng + ####################################### + + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install + + \ No newline at end of file diff --git a/.github/actions/setup_clang_macos/action.yml b/.github/actions/setup_clang_macos/action.yml new file mode 100644 index 0000000000..067c6c3565 --- /dev/null +++ b/.github/actions/setup_clang_macos/action.yml @@ -0,0 +1,44 @@ +name: setup clang for apple +description: build and test simeng using clang compiler on apple + +inputs: + OS: + description: docker image name + required: true + MODE: + description: simeng-mode e.g. Release or Debug + required: true +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required + ####################################### + - name: Install dependencies + shell: bash + run: | + pip3 install pyparsing + brew install make + + ####################################### + # Clang is already installed with xcode + ####################################### + + - name: set clang and clang++ env variables + shell: bash + run: | + echo "C_COMPILER=$(which clang)" >> $GITHUB_ENV + echo "CPP_COMPILER=$(which clang++)" >> $GITHUB_ENV + + # ####################################### + # # Build SimEng + # ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} \ + -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(sysctl -n hw.ncpu) + + cmake --build build --target install diff --git a/.github/actions/setup_gcc_debian/action.yml b/.github/actions/setup_gcc_debian/action.yml new file mode 100644 index 0000000000..90e4798d95 --- /dev/null +++ b/.github/actions/setup_gcc_debian/action.yml @@ -0,0 +1,128 @@ +name: setup gcc +description: installs dependencies and correct gcc version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + gcc-version: + description: gcc version + required: true + MODE: + description: Release or Debug mode + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + export DEBIAN_FRONTEND=noninteractive + + # Update package lists + apt-get update + + # Install essential packages + apt-get install -y \ + python3-launchpadlib \ + software-properties-common \ + build-essential \ + sudo \ + wget \ + zlib1g-dev \ + python3 \ + build-essential \ + libssl-dev \ + ninja-build \ + tree \ + git + + # add pyparsing for benchmarking + apt-get install -y python3-pip + pip3 install pyparsing + + apt-get update + apt-get upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via apt + shell: bash + run: | + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ + apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' && \ + apt update && apt install cmake -y + apt upgrade -y + + ####################################### + # Restore gcc from cache. + ####################################### + - name: restore gcc + uses: actions/cache/restore@v4 + id: gcc-restore-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # If restoring gcc set env vars for info step in OS_BUILD_TEST.yml. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit == 'true' }} + name: set env vars if restoring from cache + shell: bash + run: | + echo "C_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/g++" >> $GITHUB_ENV + + ####################################### + # Install gcc from source. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: install gcc + shell: bash + run: | + GCC_VER="${{ inputs.gcc-version }}.5.0" + + wget https://ftp.gnu.org/gnu/gcc/$GCC_VER/$GCC_VER.tar.gz > /dev/null 2>&1 + tar zxf $GCC_VER.tar.gz + cd $GCC_VER + ./contrib/download_prerequisites + cd .. + mkdir gcc-build + cd gcc-build + ../$GCC_VER/configure --enable-languages=c,c++ --disable-multilib --prefix=/usr/local/$GCC_VER + make -j$(nproc) + make install + + echo "C_COMPILER=/usr/local/$GCC_VER/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/$GCC_VER/bin/g++" >> $GITHUB_ENV + + ####################################### + # Save gcc to cache if earlier miss occurred. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: save gcc + uses: actions/cache/save@v4 + id: gcc-save-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install + + diff --git a/.github/actions/setup_gcc_macos/action.yml b/.github/actions/setup_gcc_macos/action.yml new file mode 100644 index 0000000000..9992548c26 --- /dev/null +++ b/.github/actions/setup_gcc_macos/action.yml @@ -0,0 +1,50 @@ +name: setup gcc +description: installs dependencies and correct gcc version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + gcc-version: + description: gcc version + required: true + MODE: + description: Release or Debug mode + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + + - name: install dependencies + shell: bash + run: | + pip3 install pyparsing + brew install make + + ####################################### + # Install gcc from source if not in cache. + ####################################### + - name: install gcc + shell: bash + run: | + brew install gcc@$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2) + + echo "C_COMPILER=/usr/local/bin/${{ inputs.gcc-version }}" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/bin/g++-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2)" >> $GITHUB_ENV + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_C_COMPILER=${{ env.C_COMPILER }} \ + -DCMAKE_CXX_C_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(sysctl -n hw.ncpu) + + cmake --build build --target install diff --git a/.github/actions/setup_gcc_redhat/action.yml b/.github/actions/setup_gcc_redhat/action.yml new file mode 100644 index 0000000000..a0d332d1f9 --- /dev/null +++ b/.github/actions/setup_gcc_redhat/action.yml @@ -0,0 +1,126 @@ +name: setup gcc +description: installs dependencies and correct gcc version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + gcc-version: + description: gcc version + required: true + MODE: + description: Release or Debug mode + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + dnf -y update && \ + dnf -y install \ + gcc gcc-c++ make \ + wget \ + python3 \ + git \ + diffutils \ + openssl-devel \ + bzip2 \ + automake \ + autoconf \ + cmake \ + file \ + zlib-devel + + if [[ ${{ inputs.OS }} == 'redhat/ubi8:latest' ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + elif [[ ${{ inputs.OS }} == 'redhat/ubi9:latest' ]]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm + fi + + # add pyparsing for benchmarking + dnf install -y python3-pip + pip3 install pyparsing + + dnf update -y + dnf upgrade -y + dnf clean all + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via DNF + shell: bash + run: | + dnf install -y cmake + + ####################################### + # Restore gcc 7 or 8 from cache. + ####################################### + - name: restore gcc + uses: actions/cache/restore@v4 + id: gcc-restore-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # If restoring gcc set env vars for info step in OS_BUILD_TEST.yml. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit == 'true' }} + name: set env vars if restoring from cache + shell: bash + run: | + echo "C_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/g++" >> $GITHUB_ENV + + ####################################### + # As redhat 8 doesn't support installation of gcc via package manager unless you have a subscription, + # hence, we install all gcc versions from source. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: install gcc + shell: bash + run: | + GCC_VER="${{ inputs.gcc-version }}.5.0" + + wget https://ftp.gnu.org/gnu/gcc/$GCC_VER/$GCC_VER.tar.gz > /dev/null 2>&1 + tar xf $GCC_VER.tar.gz + cd $GCC_VER + ./contrib/download_prerequisites + cd .. + mkdir gcc-build + cd gcc-build + ../$GCC_VER/configure --enable-languages=c,c++ --disable-multilib --prefix=/usr/local/$GCC_VER + make -j$(nproc) + make install + + echo "C_COMPILER=/usr/local/$GCC_VER/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/$GCC_VER/bin/g++" >> $GITHUB_ENV + + ####################################### + # Save gcc to cache if earlier miss occurred. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: save gcc + uses: actions/cache/save@v4 + id: gcc-save-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install diff --git a/.github/actions/setup_gcc_rocky/action.yml b/.github/actions/setup_gcc_rocky/action.yml new file mode 100644 index 0000000000..6798910248 --- /dev/null +++ b/.github/actions/setup_gcc_rocky/action.yml @@ -0,0 +1,127 @@ +name: setup gcc +description: installs dependencies and correct gcc version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + gcc-version: + description: gcc version + required: true + MODE: + description: Release or Debug mode + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies required (cmake, etc). + ####################################### + - name: Install dependencies + shell: bash + run: | + dnf -y update && \ + dnf install -y epel-release \ + gcc gcc-c++ make \ + git \ + wget \ + openssl-devel \ + automake \ + autoconf \ + bzip2 \ + file \ + sudo \ + tree \ + zlib-devel + + # add pyparsing for benchmarking + dnf install -y python3-pip + pip3 install pyparsing + + dnf group install -y "Development Tools" + dnf update -y + dnf upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install Cmake via DNF + shell: bash + run: | + dnf install -y cmake + + ####################################### + # Restore gcc 7 or 8 from cache. + ####################################### + - if: ${{ contains(fromJson('["gcc-7", "gcc-8"]'), inputs.gcc-version) }} + name: restore gcc + uses: actions/cache/restore@v4 + id: gcc-restore-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # If restoring gcc set env vars for info step in OS_BUILD_TEST.yml. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit == 'true' }} + name: set env vars if restoring from cache + shell: bash + run: | + echo "C_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/${{ inputs.gcc-version }}.5.0/bin/g++" >> $GITHUB_ENV + + ####################################### + # As rocky 8 doesn't support installing older versions of gcc via package manager, + # gcc 7 and 8 are installed from source and gcc 9 and 10 are installed via dnf. + ####################################### + - if: ${{ steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: install gcc + shell: bash + run: | + if [[ " gcc-9 gcc-10 " =~ (^|[[:space:]])${{inputs.gcc-version}}($|[[:space:]]) ]]; then + dnf install -y gcc-toolset-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2) + echo "C_COMPILER=/opt/rh/gcc-toolset-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2)/root/usr/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/opt/rh/gcc-toolset-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2)/root/usr/bin/g++" >> $GITHUB_ENV + else + GCC_VER="${{ inputs.gcc-version }}.5.0" + + wget https://ftp.gnu.org/gnu/gcc/$GCC_VER/$GCC_VER.tar.gz > /dev/null 2>&1 + tar zxf $GCC_VER.tar.gz + cd $GCC_VER + ./contrib/download_prerequisites + cd .. + mkdir gcc-build + cd gcc-build + ../$GCC_VER/configure --enable-languages=c,c++ --disable-multilib --prefix=/usr/local/$GCC_VER + make -j$(nproc) + make install + + echo "C_COMPILER=/usr/local/$GCC_VER/bin/gcc" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/local/$GCC_VER/bin/g++" >> $GITHUB_ENV + fi + + ####################################### + # Save gcc to cache if earlier miss occured. + ####################################### + - if: ${{ contains(fromJson('["gcc-7", "gcc-8"]'), inputs.gcc-version) && steps.gcc-restore-v4.outputs.cache-hit != 'true' }} + name: save gcc + uses: actions/cache/save@v4 + id: gcc-save-v4 + with: + path: /usr/local/${{ inputs.gcc-version }}.5.0 + key: ${{ inputs.gcc-version }}-${{ inputs.OS }} + + ####################################### + # Build SimEng + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} \ + -DCMAKE_CXX_COMPILER=${{ env.CPP_COMPILER }} + + cmake --build build -j $(nproc) + + cmake --build build --target install diff --git a/.github/actions/setup_gcc_ubuntu/action.yml b/.github/actions/setup_gcc_ubuntu/action.yml new file mode 100644 index 0000000000..f5325dc747 --- /dev/null +++ b/.github/actions/setup_gcc_ubuntu/action.yml @@ -0,0 +1,100 @@ +name: setup gcc +description: installs dependencies and correct gcc version to build and test simeng + +inputs: + OS: + description: docker image name + required: true + gcc-version: + description: gcc version + required: true + MODE: + description: Release or Debug mode + required: true + +runs: + using: 'composite' + steps: + ####################################### + # Install dependencies + ####################################### + - name: Install dependencies + shell: bash + run: | + export DEBIAN_FRONTEND=noninteractive + + # Update package lists + apt-get update + + # Install essential packages + apt-get install -y \ + software-properties-common \ + sudo \ + wget \ + zlib1g-dev \ + python3 \ + build-essential \ + libssl-dev \ + ninja-build \ + tree \ + git + + # add pyparsing for benchmarking + apt-get install -y python3-pip + pip3 install pyparsing + + # Add additional repositories + add-apt-repository universe + add-apt-repository ppa:ubuntu-toolchain-r/ppa + + # Update package lists again after adding repositories + apt-get update + + # Upgrade all installed packages + apt-get upgrade -y + + ####################################### + # Install Cmake + ####################################### + - name: Install cmake via apt + shell: bash + run: | + if [[ ${{ inputs.OS == 'ubuntu:18.04' }} ]]; then + NAME=bionic + else + NAME=focal + fi + + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ + apt-add-repository "deb https://apt.kitware.com/ubuntu/ $NAME main" && \ + apt update && apt install cmake -y + apt upgrade -y + + ####################################### + # Install GCC + ####################################### + - name: Install gcc + shell: bash + run: | + apt-get -y install ${{ inputs.gcc-version }} + apt-get -y install g++-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2) + apt update && apt upgrade -y + + ####################################### + # Build SimEng + # Then store the C compiler and CPP compiler as environmental variables to + # be used by LINUX_BUILD_TEST + ####################################### + - name: Build SimEng + shell: bash + run: | + cmake -B build -S . -DCMAKE_BUILD_TYPE=${{ inputs.MODE }} -DSIMENG_ENABLE_TESTS=ON -DSIMENG_OPTIMIZE=ON -DCMAKE_C_COMPILER=/usr/bin/${{ inputs.gcc-version }} -DCMAKE_CXX_COMPILER=/usr/bin/g++-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2) + + cmake --build build -j $(nproc) + + cmake --build build --target install + + echo "C_COMPILER=/usr/bin/${{ inputs.gcc-version }}" >> $GITHUB_ENV + echo "CPP_COMPILER=/usr/bin/g++-$( echo ${{ inputs.gcc-version }} | cut -d '-' -f 2)" >> $GITHUB_ENV + + \ No newline at end of file diff --git a/.github/actions/simeng_benchmarks/action.yml b/.github/actions/simeng_benchmarks/action.yml new file mode 100644 index 0000000000..d7814ca6f8 --- /dev/null +++ b/.github/actions/simeng_benchmarks/action.yml @@ -0,0 +1,43 @@ +name: simeng-benchmarks +description: runs simeng benchmarks + +inputs: + RUN_DIR: + description: directory from which the benchmark binary should be run + required: false + ARGS: + description: Any additional arguments needed to run this benchmark on SimEng + required: false + default: "" + BIN_PATH: + description: path to the binary for the benchmark + required: true + PASS_STRING: + description: string that is searched for in the benchmark's output to confirm whether or not it has passed + required: true + +runs: + using: 'composite' + steps: + - name: Run Benchmark + shell: bash + run: | + if [ ${{ inputs.RUN_DIR }} ] + then + cd ${{ inputs.RUN_DIR }} + fi + + simeng "$GITHUB_WORKSPACE/configs/a64fx.yaml" "${{ inputs.BIN_PATH }}" ${{ inputs.ARGS }} > $GITHUB_WORKSPACE/simeng.tmp + + if grep -q ${{ inputs.PASS_STRING }} "$GITHUB_WORKSPACE/simeng.tmp" + then + cat $GITHUB_WORKSPACE/simeng.tmp + echo "Passed" + else + cat $GITHUB_WORKSPACE/simeng.tmp + echo "Failed" + exit 1 + fi + + + diff --git a/.github/workflows/LINUX_BUILD_TEST.yml b/.github/workflows/LINUX_BUILD_TEST.yml new file mode 100644 index 0000000000..e871acff89 --- /dev/null +++ b/.github/workflows/LINUX_BUILD_TEST.yml @@ -0,0 +1,738 @@ +name: Linux + +on: + workflow_call: + inputs: + SIMENG-MODE: + required: true + type: string + RUNNER: + default: ubuntu-latest + required: true + type: string + +env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + LLVM-VERSION: 14 + BENCHMARK_BRANCH: 'make-file-build-system' # The branch inside the benchmark repo that has the script to run all benchmarks. + PAT: ${{ secrets.SIMENGUOB_PAT }} + + +jobs: + Build_and_Run: + runs-on: ${{ inputs.RUNNER }} + + strategy: + fail-fast: false + matrix: + + COMPILER: ['gcc-7', 'gcc-8', 'gcc-9', 'gcc-10'] # todo 'armclang'] # compiler names + OS: ['ubuntu:18.04','ubuntu:20.04', 'rockylinux:8', 'redhat/ubi8:latest', 'redhat/ubi9:latest', 'debian:10', 'debian:11'] # Docker images + + ####################################### + # Removes unecessary jobs as jobs are generated in the order seen in the matrix. + # "Exclude" is to keep job ordering nice i.e. keeping ubuntu jobs next to each other in the list. + ####################################### + exclude: + - OS: 'ubuntu:20.04' + COMPILER: 'gcc-7' + + - OS: 'ubuntu:18.04' + COMPILER: 'gcc-8' + - OS: 'ubuntu:18.04' + COMPILER: 'gcc-9' + - OS: 'ubuntu:18.04' + COMPILER: 'gcc-10' + + # need redhat 8 for gcc 7 and 8 | redhat 9 for gcc 9 and 10 + - OS: 'redhat/ubi8:latest' + COMPILER: gcc-9 + - OS: 'redhat/ubi8:latest' + COMPILER: gcc-10 + + - OS: 'redhat/ubi9:latest' + COMPILER: gcc-7 + - OS: 'redhat/ubi9:latest' + COMPILER: gcc-8 + + # need debian-10 (buster) for gcc 7 | + - OS: 'debian:10' + COMPILER: 'gcc-8' + - OS: 'debian:10' + COMPILER: 'gcc-9' + - OS: 'debian:10' + COMPILER: 'gcc-10' + + - OS: 'debian:11' + COMPILER: 'gcc-7' + + ####################################### + # Choose container and set name of workflow + ####################################### + + container: + image: ${{ matrix.OS }} + + name: "${{ matrix.OS }}, ${{ matrix.compiler }}" + + steps: + ####################################### + # Clones repo to workspace. (ubuntu 18 is missing correct glibc version + # for newer checkout action version i.e. use older checkout version) + # NOTE: may want to remove support for gcc-7 soon + ####################################### + - if: ${{ contains(fromJson('["ubuntu:18.04"]'), matrix.OS) }} + name: checkout v3 + uses: actions/checkout@v3 + + - if: ${{ !contains(fromJson('["ubuntu:18.04"]'), matrix.OS) }} + name: checkout v4 + uses: actions/checkout@v4 + + ####################################### + # Depending on OS and compiler, this step chooses the correct setup action to run. + # The action is located in .github/actions/select_setup + ####################################### + - name: setup compiler and OS env + build simeng + uses: ./.github/actions/select_setup + with: + OS: ${{ matrix.OS }} + COMPILER: ${{ matrix.COMPILER }} + MODE: ${{ inputs.SIMENG-MODE }} + + ####################################### + # Prints out info in isolated step for easy access. + ####################################### + - name: INFO + shell: bash + run: | + cat /etc/os-release + echo "_______________________________________" + uname -a + echo "_______________________________________" + cmake --version + echo "_______________________________________" + "${{ env.C_COMPILER }}" --version + which gcc + echo "_______________________________________" + "${{ env.CPP_COMPILER }}" --version + which g++ + echo "_______________________________________" + + ####################################### + # Run Integration Tests. + ####################################### + - name: Integration Tests + shell: bash + run: | + ./build/test/integration/integrationtests + + ####################################### + # Run Unit Tests. + ####################################### + - name: Unit Tests + shell: bash + run: | + ./build/test/unit/unittests + + ####################################### + # Run Regression AARCH64 Tests. + ####################################### + - name: Regression Test (aarch64) + if: always() + shell: bash + run: | + ./build/test/regression/aarch64/regression-aarch64 + + ####################################### + # Run Regression RISCV Tests. + ####################################### + - name: Regression Test (riscv) + if: always() + shell: bash + run: | + ./build/test/regression/riscv/regression-riscv + + ####################################### + # Run Benchmarks + # Separate steps for each benchmark to ensure itemised outputs + # in the actions interface + ####################################### + + - if: ${{ contains(fromJson('["ubuntu:18.04"]'), matrix.OS) && inputs.SIMENG-MODE == 'Release' }} + name: Checking out benchmark repository (v3) + uses: actions/checkout@v3 + with: + repository: UoB-HPC/simeng-benchmarks + token: ${{ env.PAT }} + ref: makefile-build-system + path: simeng-benchmarks + + - if: ${{ !contains(fromJson('["ubuntu:18.04"]'), matrix.OS) && inputs.SIMENG-MODE == 'Release' }} + name: Checking out benchmark repository (v4) + uses: actions/checkout@v4 + with: + repository: UoB-HPC/simeng-benchmarks + ref: makefile-build-system + token: ${{ env.PAT }} + path: simeng-benchmarks + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc8.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc9.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc10.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_armclang20_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc8.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc9.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc10.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_armclang20_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc8.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc9.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc10.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_armclang20_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc8.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc9.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc10.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_armclang20_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc8.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc9.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc10.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_armclang20_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_armclang20_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_armclang20_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc8.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc9.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc10.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_armclang20_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc8.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc9.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc10.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_armclang20_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_armclang20_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" \ No newline at end of file diff --git a/.github/workflows/MACOS_BUILD_TEST.yml b/.github/workflows/MACOS_BUILD_TEST.yml new file mode 100644 index 0000000000..18a2e86c96 --- /dev/null +++ b/.github/workflows/MACOS_BUILD_TEST.yml @@ -0,0 +1,676 @@ +name: MacOS + +on: + workflow_call: + inputs: + SIMENG-MODE: + required: true + type: string + +env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + BENCHMARK_BRANCH: 'make-file-build-system' # The branch inside the benchmark repo that has the script to run all benchmarks. + PAT: ${{ secrets.SIMENGUOB_PAT }} + +jobs: + Build_and_Run: + runs-on: macos-13 + + strategy: + fail-fast: false + matrix: + COMPILER: ['gcc-10', 'apple_clang_15'] # NOTE: only gcc 10 works with provided macos runners on github actions the other versions are difficult to get and don't work + + + name: "macos-13, ${{ matrix.compiler }}" + + steps: + ####################################### + # Clones repo to workspace. + ####################################### + - name: checkout v4 + uses: actions/checkout@v4 + + ####################################### + # Depending on OS and compiler, this step chooses the correct setup action to run. + ####################################### + - name: setup compiler and OS env + build simeng + uses: ./.github/actions/select_setup + with: + OS: macos + COMPILER: ${{ matrix.COMPILER }} + MODE: ${{ inputs.simeng-mode }} + + ####################################### + # Prints out info in isolated step for easy access. + ####################################### + - name: INFO + shell: bash + run: | + echo "_______________________________________" + cmake --version + echo "_______________________________________" + "${{ env.C_COMPILER }}" --version + which ${{ env.C_COMPILER }} + echo "_______________________________________" + "${{ env.CPP_COMPILER }}" --version + which ${{ env.CPP_COMPILER }} + echo "_______________________________________" + + ####################################### + # Run Integration Tests. + ####################################### + - name: Integration Tests + shell: bash + run: | + ./build/test/integration/integrationtests + + ####################################### + # Run Unit Tests. + ####################################### + - name: Unit Tests + shell: bash + run: | + ./build/test/unit/unittests + + ####################################### + # Run Regression AARCH64 Tests. + ####################################### + - name: regression test (aarch64) + if: always() + shell: bash + run: | + ./build/test/regression/aarch64/regression-aarch64 + + ####################################### + # Run Regression RISCV Tests. + ####################################### + - name: regression test (riscv) + if: always() + shell: bash + run: | + ./build/test/regression/riscv/regression-riscv + + ####################################### + # Run Benchmarks + # Separate steps for each benchmark to ensure itemised outputs + # in the actions interface + ####################################### + + - if: ${{ contains(fromJson('["ubuntu:18.04"]'), matrix.OS) && inputs.SIMENG-MODE == 'Release' }} + name: Checking out benchmark repository (v3) + uses: actions/checkout@v3 + with: + repository: UoB-HPC/simeng-benchmarks + token: ${{ env.PAT }} + ref: makefile-build-system + path: simeng-benchmarks + + - if: ${{ !contains(fromJson('["ubuntu:18.04"]'), matrix.OS) && inputs.SIMENG-MODE == 'Release' }} + name: Checking out benchmark repository (v4) + uses: actions/checkout@v4 + with: + repository: UoB-HPC/simeng-benchmarks + ref: makefile-build-system + token: ${{ env.PAT }} + path: simeng-benchmarks + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc8.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc9.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc10.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_armclang20_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc8.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc9.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc10.3.0_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_armclang20_armv8.4 + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc8.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc9.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc10.3.0_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_armclang20_armv8.4 + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc8.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc9.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc10.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_armclang20_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc8.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc9.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc10.3.0_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_armclang20_armv8.4 + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc8.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc8.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc9.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc9.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc10.3.0 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc10.3.0_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp armclang20 armv8.4 + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_armclang20_armv8.4 + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/serial/cloverleaf_armclang20_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: CloverLeaf openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/CloverLeaf + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/CloverLeaf/openmp/cloverleaf_armclang20_armv8.4+sve + PASS_STRING: "This test is considered PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc8.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc9.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_gcc10.3.0_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: miniBUDE openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + ARGS: "-n 64 -i 1 --deck $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/miniBUDE/bm1" + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/miniBUDE/openmp/minibude_armclang20_armv8.4+sve + PASS_STRING: "Largest difference was 0.000%." + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc8.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc9.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_gcc10.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream_armclang20_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: STREAM openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/STREAM/stream-omp_armclang20_armv8.4+sve + PASS_STRING: "Solution Validates" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 2D openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/2d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/2d/tealeaf-omp_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D serial armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc8.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc8.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc9.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc9.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp gcc10.3.0 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_gcc10.3.0_armv8.4+sve + PASS_STRING: "This run PASSED" + + - if: ${{ inputs.SIMENG-MODE == 'Release' }} + name: TeaLeaf 3D openmp armclang20 armv8.4+sve + uses: ./.github/actions/simeng_benchmarks + with: + RUN_DIR: $GITHUB_WORKSPACE/simeng-benchmarks/Data_Files/TeaLeaf/3d + BIN_PATH: $GITHUB_WORKSPACE/simeng-benchmarks/binaries/TeaLeaf/3d/tealeaf-omp_armclang20_armv8.4+sve + PASS_STRING: "This run PASSED" \ No newline at end of file diff --git a/.github/workflows/MAIN.yml b/.github/workflows/MAIN.yml new file mode 100644 index 0000000000..8099ed46ab --- /dev/null +++ b/.github/workflows/MAIN.yml @@ -0,0 +1,50 @@ +name: "Build" +# description: Build and test simeng on various OS with various compilers followed by benchmarking and a performance regression test followed by a clang format if all previous workflow succeed + +on: + workflow_dispatch: + + pull_request: + branches: + - dev + - main + +jobs: + + ################################### + # Debug Mode + ################################### + DEBUG_LINUX: + name: "Debug - build and test" + uses: ./.github/workflows/LINUX_BUILD_TEST.yml + with: + RUNNER: ubuntu-latest + SIMENG-MODE: Debug + secrets: inherit + + DEBUG_MACOS: + name: "Debug - build and test" + uses: ./.github/workflows/MACOS_BUILD_TEST.yml + with: + SIMENG-MODE: Debug + secrets: inherit + + ################################## + # Release Mode + ################################## + RELEASE_LINUX: + name: "Release - build, test and benchmarks" + uses: ./.github/workflows/LINUX_BUILD_TEST.yml + with: + RUNNER: ubuntu-latest + SIMENG-MODE: Release + secrets: inherit + + RELEASE_MACOS: + name: "Release - build, test and benchmarks" + uses: ./.github/workflows/MACOS_BUILD_TEST.yml + with: + SIMENG-MODE: Release + secrets: inherit + + diff --git a/.jenkins/build_arm22.sh b/.jenkins/build_arm22.sh deleted file mode 100644 index 0c5452aac5..0000000000 --- a/.jenkins/build_arm22.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Load compilers/libraries -echo "Compiler Armclang 22.0.2" -module use /software/arm64/modulefiles -module load tools/arm-compiler-sles -module load tools/cmake - -## Build, test, and run SimEng -build armclang armclang++ -test -run - -buildRelease armclang armclang++ -test -run diff --git a/.jenkins/build_gcc10.sh b/.jenkins/build_gcc10.sh deleted file mode 100644 index 2886bc4136..0000000000 --- a/.jenkins/build_gcc10.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Load compilers/libraries -echo "Compiler GCC 10" -module swap PrgEnv-cray PrgEnv-gnu -module swap gcc gcc/10.3.0 -module load tools/cmake - -## Build, test, and run SimEng -build gcc g++ -test -run - -buildRelease gcc g++ -test -run diff --git a/.jenkins/build_gcc7.sh b/.jenkins/build_gcc7.sh deleted file mode 100644 index fcbcf35b3a..0000000000 --- a/.jenkins/build_gcc7.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Load compilers/libraries -echo "Compiler GCC 7" -module swap PrgEnv-cray PrgEnv-gnu -module swap gcc gcc/7.3.0 -module load tools/cmake - -## Build, test, and run SimEng -build gcc g++ -test -run - -buildRelease gcc g++ -test -run diff --git a/.jenkins/build_gcc8.sh b/.jenkins/build_gcc8.sh deleted file mode 100644 index d12c4b6a25..0000000000 --- a/.jenkins/build_gcc8.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Load compilers/libraries -echo "Compiler GCC 8" -module swap PrgEnv-cray PrgEnv-gnu -module swap gcc gcc/8.3.0 -module load tools/cmake - -## Build, test, and run SimEng -build gcc g++ -test -run - -buildRelease gcc g++ -test -run diff --git a/.jenkins/build_gcc9.sh b/.jenkins/build_gcc9.sh deleted file mode 100644 index 0597204658..0000000000 --- a/.jenkins/build_gcc9.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Load compilers/libraries -echo "Compiler GCC 9" -module swap PrgEnv-cray PrgEnv-gnu -module swap gcc gcc/9.3.0 -module load tools/cmake - -## Build, test, and run SimEng -build gcc g++ -test -run - -buildRelease gcc g++ -test -run diff --git a/.jenkins/build_intel19.sh b/.jenkins/build_intel19.sh deleted file mode 100644 index 0b14c734f2..0000000000 --- a/.jenkins/build_intel19.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -source .jenkins/build_test_run.sh - -## Download/clean and checkout pull request -checkout - -## Setup environment -PATH=/cm/shared/apps/intel_parallel_studio_xe_2019_update4/compilers_and_libraries_2019.4.243/linux/bin/intel64/:$PATH -export CMAKE_C_COMPILER=icc -export CC=icc -export CMAKE_CXX_COMPILER=icpc -export CXX=icpc - -## Load compilers/libraries -echo "Compiler INTEL 19" -#module load intel-parallel-studio-xe/compilers/64/2019u4/19.0.4 intel-parallel-studio-xe/mpi/64/2019u4/4.243 -export PATH=/home/br-hwaugh/installations/cmake-3.18.5/bin/:$PATH - -## Build, test, and run SimEng -build -test -run diff --git a/.jenkins/build_test_run.sh b/.jenkins/build_test_run.sh deleted file mode 100644 index b76867a2fe..0000000000 --- a/.jenkins/build_test_run.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# This script is not intended be to run direct but rather to be sourced from other scripts - -## Set up file structure -export SIMENG_TOP="$PWD" -export SIMENG_BUILD="$PWD"/build -export SIMENG_INSTALL="$PWD"/install - -debug () { - echo "MODULES" - module li - echo "CURRENT DIRECTORY" - echo "$PWD" - echo "GIT BRANCH" - git branch - - echo "SIMENG TOP $SIMENG_TOP" - echo "SIMENG BUILD $SIMENG_BUILD" - echo "SIMENG INSTALL $SIMENG_INSTALL" -} - -# If source available clean and checkout, otherwise download -checkout () { - cd "$SIMENG_TOP" || exit - rm -rf build install - mkdir build install -} - -# Build common function -build () { - cd "$SIMENG_TOP" || exit - rm -rf build/* install/* - - cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="$SIMENG_INSTALL" -DSIMENG_ENABLE_TESTS=ON -DSIMENG_USE_EXTERNAL_LLVM=ON -DLLVM_DIR=/home/br-simeng/llvm14.0.5/install-gcc7/lib/cmake/llvm/ -DCMAKE_C_COMPILER=$1 -DCMAKE_CXX_COMPILER=$2 - cmake --build build -j - cmake --build build --target install -} - -# Build common function -buildRelease () { - cd "$SIMENG_TOP" || exit - rm -rf build/* install/* - - cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$SIMENG_INSTALL" -DSIMENG_ENABLE_TESTS=ON -DSIMENG_USE_EXTERNAL_LLVM=ON -DLLVM_DIR=/home/br-simeng/llvm14.0.5/install-gcc7/lib/cmake/llvm/ -DCMAKE_C_COMPILER=$1 -DCMAKE_CXX_COMPILER=$2 - cmake --build build -j - cmake --build build --target install -} - -# Run tests -test () { - cd "$SIMENG_BUILD" || exit - ./test/unit/unittests --gtest_output=xml:unittests.xml || true - ./test/regression/aarch64/regression-aarch64 --gtest_output=xml:regressiontests.xml || true - ./test/regression/riscv/regression-riscv --gtest_output=xml:regressiontests.xml || true -} - -# Run default program with and without specified configuration -# Space needed before 'retired' and 'cycles' to differentiate from other -# subfeilds. E.g., 'branches.retired' -run () { - cd "$SIMENG_INSTALL" || exit - - ./bin/simeng > run - echo "Simulation without configuration file argument:" - cat run - echo "" - compare_outputs "$(grep " retired:" run | rev | cut -d ' ' -f1 | rev)" "6721" "retired instructions" - compare_outputs "$(grep " cycles:" run | rev | cut -d ' ' -f1 | rev)" "6721" "simulated cycles" - echo "" - - ./bin/simeng "$SIMENG_TOP"/configs/tx2.yaml > run - echo "Simulation with configuration file argument:" - cat run - echo "" - compare_outputs "$(grep " retired:" run | rev | cut -d ' ' -f1 | rev)" "6724" "retired instructions" - compare_outputs "$(grep " cycles:" run | rev | cut -d ' ' -f1 | rev)" "7867" "simulated cycles" - echo "" -} - -# Helper function for checking outputs -compare_outputs() { - if [[ $1 != $2 ]] - then - echo "ERROR: ${STAGE_NAME} run failed due to an incorrect number of $3." - echo -e "\tExpect \"$2\"" - echo -e "\tGot \"$1\"" - exit 1 - fi -} diff --git a/.jenkins/format.sh b/.jenkins/format.sh deleted file mode 100644 index 46e979bc43..0000000000 --- a/.jenkins/format.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -module swap PrgEnv-cray PrgEnv-gnu -module use /lustre/projects/bristol/modules-a64fx/modulefiles/ -module load llvm/11.0 - -git-clang-format --diff origin/main --extensions cc,hh > FORMATTING - -# Check whether any source files were modified -if grep 'no modified files to format' FORMATTING -then - exit 0 -fi - -# Check whether any formatting changes are necessary -if grep 'clang-format did not modify any files' FORMATTING -then - exit 0 -fi - -echo "" -echo "Code formatting issues detected (see below)." -echo "" -cat FORMATTING -exit 1 \ No newline at end of file diff --git a/.jenkins/run.sh b/.jenkins/run.sh deleted file mode 100644 index bb70cbe31b..0000000000 --- a/.jenkins/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -pwd - -source .jenkins/build_test_run.sh - -run