103 lines
3.0 KiB
YAML
103 lines
3.0 KiB
YAML
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
|
|
'
|