diff --git a/.github/automation/build_acl.sh b/.github/automation/build_acl.sh index 466543a3c9d..956db99f5cf 100755 --- a/.github/automation/build_acl.sh +++ b/.github/automation/build_acl.sh @@ -42,7 +42,8 @@ if [[ "$ACL_ACTION" == "clone" ]]; then set +x elif [[ "$ACL_ACTION" == "configure" ]]; then set -x - cmake -S$ACL_ROOT_DIR -B$ACL_ROOT_DIR/build \ + cmake -G $CMAKE_GENERATOR \ + -S$ACL_ROOT_DIR -B$ACL_ROOT_DIR/build \ -DARM_COMPUTE_OPENMP=$ACL_OPENMP \ -DARM_COMPUTE_CPPTHREADS=0 \ -DARM_COMPUTE_WERROR=0 \ diff --git a/.github/workflows/ci-aarch64-nightly.yml b/.github/workflows/ci-aarch64-nightly.yml new file mode 100644 index 00000000000..70cc08d137a --- /dev/null +++ b/.github/workflows/ci-aarch64-nightly.yml @@ -0,0 +1,142 @@ +# ******************************************************************************* +# Copyright 2024 Arm Limited and affiliates. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ******************************************************************************* + +name: "CI AArch64 (Nightly)" + +#* To avoid duplicate jobs running when both push and PR is satisfied, we use this: +#* https://github.com/orgs/community/discussions/26940#discussioncomment-5686753 +on: + pull_request: + types: [opened, synchronize, reopened] + schedule: + #* minute (0-59) hour (0-23) day (1-31) month (1-12) day of the week (0 - 6) + #* cron jobs run on the default (main) branch. + #* set to run at 5am UCT + - cron: "0 5 * * *" + +#* Stop stale workflows, though we should never hit this unless it hangs for a whole day. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +# Declare default permissions as read only. +permissions: read-all + +jobs: + build-and-test: + strategy: + matrix: + config: [ + { name: c6g, label: ah-ubuntu_22_04-c6g_8x-100, threading: OMP, toolset: gcc, build: Release, testset: NIGHTLY }, + { name: c6g, label: ah-ubuntu_22_04-c6g_8x-100, threading: OMP, toolset: clang, build: Release, testset: NIGHTLY }, + { name: c7g, label: ah-ubuntu_22_04-c7g_8x-100, threading: OMP, toolset: gcc, build: Release, testset: NIGHTLY }, + { name: c7g, label: ah-ubuntu_22_04-c7g_8x-100, threading: OMP, toolset: clang, build: Release, testset: NIGHTLY } + ] + + name: ${{ matrix.config.name }}, ${{ matrix.config.toolset }}, ${{ matrix.config.threading }}, ${{ matrix.config.build }} + runs-on: ${{ matrix.config.label }} + steps: + + - name: Checkout oneDNN + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + path: oneDNN + + - name: Get latest CMake and Ninja + uses: lukka/get-cmake@8567b9d9b63052b8430ef30042e13c3ba5288f16 # v3.31.3 + with: + cmakeVersion: 3.31.0 + ninjaVersion: 1.12.0 + + - if: ${{ matrix.config.threading == 'OMP' }} + name: Install openmp + run: | + sudo apt install -y libomp-dev + + - if: ${{ matrix.config.toolset == 'gcc' }} + name: Install gcc + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt update -y + sudo apt install -y g++-13 + + - if: ${{ matrix.config.toolset == 'clang' }} + name: Install clang + uses: KyleMayes/install-llvm-action@e0a8dc9cb8a22e8a7696e8a91a4e9581bec13181 + with: + version: "17" + + - name: Clone ACL + run: ${{ github.workspace }}/oneDNN/.github/automation/build_acl.sh + env: + ACL_ACTION: clone + ACL_ROOT_DIR: ${{ github.workspace }}/ComputeLibrary + ACL_VERSION: v24.11.1 + + - name: Configure ACL + run: ${{ github.workspace }}/oneDNN/.github/automation/build_acl.sh + env: + ACL_ACTION: configure + ACL_ROOT_DIR: ${{ github.workspace }}/ComputeLibrary + ACL_THREADING: ${{ matrix.config.threading }} + BUILD_TOOLSET: ${{ matrix.config.toolset }} + CMAKE_BUILD_TYPE: ${{ matrix.config.build }} + CMAKE_GENERATOR: Ninja + GCC_VERSION: 13 + + - name: Build ACL + run: ${{ github.workspace }}/oneDNN/.github/automation/build_acl.sh + env: + ACL_ACTION: build + + - name: Configure oneDNN + run: ${{ github.workspace }}/oneDNN/.github/automation/build_aarch64.sh + working-directory: ${{ github.workspace }}/oneDNN + env: + ACL_ROOT_DIR: ${{ github.workspace }}/ComputeLibrary + BUILD_TOOLSET: ${{ matrix.config.toolset }} + CMAKE_BUILD_TYPE: ${{ matrix.config.build }} + CMAKE_GENERATOR: Ninja + GCC_VERSION: 13 + ONEDNN_ACTION: configure + ONEDNN_TEST_SET: ${{ matrix.config.testset }} + ONEDNN_THREADING: ${{ matrix.config.threading }} + + - name: Build oneDNN + run: ${{ github.workspace }}/oneDNN/.github/automation/build_aarch64.sh + working-directory: ${{ github.workspace }}/oneDNN + env: + ONEDNN_ACTION: build + + - name: Run oneDNN tests + run: ${{ github.workspace }}/oneDNN/.github/automation/test_aarch64.sh + working-directory: ${{ github.workspace }}/oneDNN/build + env: + BUILD_TOOLSET: ${{ matrix.config.toolset }} + CMAKE_BUILD_TYPE: ${{ matrix.config.build }} + DYLD_LIBRARY_PATH: ${{ github.workspace }}/ComputeLibrary/build + ONEDNN_THREADING: ${{ matrix.config.threading }} + + #* This job adds a check named "CI AArch64 (Nightly)" that represents overall + #* workflow status and can be used in branch rulesets + status: + needs: build-and-test + runs-on: ubuntu-latest + name: "CI AArch64 (Nightly)" + steps: + - name: Print success + run: echo Success diff --git a/.github/workflows/ci-aarch64.yml b/.github/workflows/ci-aarch64.yml index 4d7f11f0ca2..9f0d033376c 100644 --- a/.github/workflows/ci-aarch64.yml +++ b/.github/workflows/ci-aarch64.yml @@ -129,6 +129,7 @@ jobs: ACL_THREADING: ${{ matrix.config.threading }} BUILD_TOOLSET: ${{ matrix.config.toolset }} CMAKE_BUILD_TYPE: ${{ matrix.config.build }} + CMAKE_GENERATOR: Ninja GCC_VERSION: 13 - name: Build ACL