diff --git a/.devops/cann.Dockerfile b/.devops/cann.Dockerfile index 9d9fabf887..cd8f87b2ea 100644 --- a/.devops/cann.Dockerfile +++ b/.devops/cann.Dockerfile @@ -3,7 +3,8 @@ # ============================================================================== # Define the CANN base image for easier version updates later -ARG CANN_BASE_IMAGE=quay.io/ascend/cann:8.1.rc1-910b-openeuler22.03-py3.10 +ARG CHIP_TYPE=910b +ARG CANN_BASE_IMAGE=quay.io/ascend/cann:8.3.rc1.alpha001-${CHIP_TYPE}-openeuler22.03-py3.11 # ============================================================================== # BUILD STAGE @@ -11,9 +12,6 @@ ARG CANN_BASE_IMAGE=quay.io/ascend/cann:8.1.rc1-910b-openeuler22.03-py3.10 # ============================================================================== FROM ${CANN_BASE_IMAGE} AS build -# Define the Ascend chip model for compilation. Default is Ascend910B3 -ARG ASCEND_SOC_TYPE=Ascend910B3 - # -- Install build dependencies -- RUN yum install -y gcc g++ cmake make git libcurl-devel python3 python3-pip && \ yum clean all && \ @@ -36,13 +34,14 @@ ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/runtime/lib64/stub:$LD_LIBRARY_PATH # For brevity, only core variables are listed here. You can paste the original ENV list here. # -- Build llama.cpp -- -# Use the passed ASCEND_SOC_TYPE argument and add general build options +# Use the passed CHIP_TYPE argument and add general build options +ARG CHIP_TYPE RUN source /usr/local/Ascend/ascend-toolkit/set_env.sh --force \ && \ cmake -B build \ -DGGML_CANN=ON \ -DCMAKE_BUILD_TYPE=Release \ - -DSOC_TYPE=${ASCEND_SOC_TYPE} \ + -DSOC_TYPE=ascend${CHIP_TYPE} \ . && \ cmake --build build --config Release -j$(nproc) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e3697ffaaa..21cfe62a71 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1391,9 +1391,9 @@ jobs: matrix: arch: [x86, aarch64] cann: - - '8.1.RC1.alpha001-910b-openeuler22.03-py3.10' - device: - - 'ascend910b3' + - '8.3.rc1.alpha001-910b-openeuler22.03-py3.11' + chip_type: + - '910b' build: - 'Release' runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} @@ -1414,7 +1414,7 @@ jobs: cmake -S . -B build \ -DCMAKE_BUILD_TYPE=${{ matrix.build }} \ -DGGML_CANN=on \ - -DSOC_TYPE=${{ matrix.device }} + -DSOC_TYPE=ascend${{ matrix.chip_type }} cmake --build build -j $(nproc) # TODO: simplify the following workflows using a matrix diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e72caa423b..9d65127a83 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -693,6 +693,52 @@ jobs: path: llama-${{ steps.tag.outputs.name }}-xcframework.zip name: llama-${{ steps.tag.outputs.name }}-xcframework + openEuler-cann: + strategy: + matrix: + arch: [x86, aarch64] + chip_type: ['910b', '310p'] + build: + - 'Release' + runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} + container: ascendai/cann:${{ matrix.chip_type == '910b' && '8.3.rc1.alpha001-910b-openeuler22.03-py3.11' || '8.3.rc1.alpha001-310p-openeuler22.03-py3.11' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Dependencies + run: | + yum update -y + yum install -y git gcc gcc-c++ make cmake libcurl-devel + git config --global --add safe.directory "$GITHUB_WORKSPACE" + + - name: Build + run: | + 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=${{ matrix.build }} \ + -DGGML_CANN=on \ + -DSOC_TYPE=ascend${{ matrix.chip_type }} + cmake --build build -j $(nproc) + + - name: Determine tag name + id: tag + uses: ./.github/actions/get-tag-name + + - name: Pack artifacts + run: | + cp LICENSE ./build/bin/ + zip -r llama-${{ steps.tag.outputs.name }}-bin-${{ matrix.chip_type }}-openEuler-${{ matrix.arch }}.zip ./build/bin/* + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: llama-${{ steps.tag.outputs.name }}-bin-${{ matrix.chip_type }}-openEuler-${{ matrix.arch }}.zip + name: llama-${{ steps.tag.outputs.name }}-bin-${{ matrix.chip_type }}-openEuler-${{ matrix.arch }} + release: if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} @@ -714,6 +760,7 @@ jobs: - macOS-arm64 - macOS-x64 - ios-xcode-build + - openEuler-cann steps: - name: Clone