name: CI (cann) on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ '.github/workflows/build-cann.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp' ] pull_request: types: [opened, synchronize, reopened] paths: [ '.github/workflows/build-cann.yml', 'ggml/src/ggml-cann/**' ] concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} cancel-in-progress: true env: GGML_NLOOP: 3 GGML_N_THREADS: 1 LLAMA_LOG_COLORS: 1 LLAMA_LOG_PREFIX: 1 LLAMA_LOG_TIMESTAMPS: 1 jobs: openEuler-latest-cann: defaults: run: shell: bash -el {0} strategy: matrix: arch: [x86, aarch64] chip_type: ['910b', '310p'] build: ['Release'] use_acl_graph: ['on', 'off'] exclude: # 310P does not support USE_ACL_GRAPH=on - chip_type: '310p' use_acl_graph: 'on' runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Free up disk space uses: ggml-org/free-disk-space@v1.3.1 with: tool-cache: true - name: Set container image id: cann-image run: | image="ascendai/cann:${{ matrix.chip_type == '910b' && '8.3.rc2-910b-openeuler24.03-py3.11' || '8.3.rc2-310p-openeuler24.03-py3.11' }}" echo "image=${image}" >> "${GITHUB_OUTPUT}" - name: Pull container image run: docker pull "${{ steps.cann-image.outputs.image }}" - name: Build env: BUILD_TYPE: ${{ matrix.build }} SOC_TYPE: ascend${{ matrix.chip_type }} USE_ACL_GRAPH: ${{ matrix.use_acl_graph }} run: | HOST_UID=$(id -u) HOST_GID=$(id -g) docker run --rm \ -v "${PWD}:/workspace" \ -w /workspace \ -e SOC_TYPE=${SOC_TYPE} \ -e BUILD_TYPE=${BUILD_TYPE} \ -e USE_ACL_GRAPH=${USE_ACL_GRAPH} \ "${{ steps.cann-image.outputs.image }}" \ bash -lc ' set -e yum install -y --setopt=install_weak_deps=False --setopt=tsflags=nodocs git gcc gcc-c++ make cmake openssl-devel yum clean all && rm -rf /var/cache/yum git config --global --add safe.directory "/workspace" export LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/$(uname -m)-linux/devlib/:${LD_LIBRARY_PATH} cmake -S . -B build \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -DGGML_CANN=on \ -DSOC_TYPE=${SOC_TYPE} \ -DUSE_ACL_GRAPH=${USE_ACL_GRAPH} cmake --build build -j $(nproc) chown -R '"${HOST_UID}"':'"${HOST_GID}"' /workspace/build '