update readme #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
env: | |
ubuntu_image: "ubuntu:22.04" | |
jobs: | |
ubuntu-latest: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le] | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build ${{ matrix.arch }} | |
run: | | |
docker run --platform ${{ matrix.arch }} --rm \ | |
-v ${{ github.workspace }}:/workspace \ | |
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c ' | |
set -e | |
apt update | |
apt install -y build-essential libsdl2-dev | |
cmake . | |
make' | |
macOS-latest: | |
runs-on: macOS-latest | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Dependencies | |
run: | | |
brew update | |
brew install sdl2 | |
- name: Build | |
run: | | |
cmake . | |
make | |
ubuntu-latest-gcc: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [Debug, Release] | |
arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le] | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build ${{ matrix.arch }} | |
run: | | |
docker run --platform ${{ matrix.arch }} --rm \ | |
-v ${{ github.workspace }}:/workspace \ | |
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c ' | |
set -e | |
apt update | |
apt install -y build-essential cmake libsdl2-dev | |
cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} | |
make | |
ctest -L gh --output-on-failure' | |
ubuntu-latest-clang: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [Debug, Release] | |
#arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le] | |
# TODO: arm/v7 disabled due to clang bug | |
arch: [linux/amd64, linux/arm64, linux/ppc64le] | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build ${{ matrix.arch }} | |
run: | | |
docker run --platform ${{ matrix.arch }} --rm \ | |
-v ${{ github.workspace }}:/workspace \ | |
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c ' | |
set -e | |
apt update | |
apt install -y clang build-essential cmake | |
cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang | |
make' | |
ubuntu-latest-gcc-sanitized: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
sanitizer: [ADDRESS, THREAD, UNDEFINED] | |
arch: [linux/amd64] | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Build ${{ matrix.arch }} | |
run: | | |
docker run --platform ${{ matrix.arch }} --rm \ | |
-v ${{ github.workspace }}:/workspace \ | |
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c ' | |
set -e | |
apt update | |
apt install -y build-essential cmake | |
cmake . -DCMAKE_BUILD_TYPE=Debug -DSENSE_VOICE_SANITIZE_${{ matrix.sanitizer }}=ON | |
make' | |
ubuntu-22-cmake-sycl: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
dggml_sycl: [ON] | |
dcmake_c_compiler: [icx] | |
dcmake_cxx_compiler: [icpx] | |
arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le] | |
continue-on-error: true | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: add oneAPI to apt | |
shell: bash | |
run: | | |
cd /tmp | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" | |
- name: install oneAPI dpcpp compiler | |
shell: bash | |
run: | | |
sudo apt update | |
sudo apt install intel-oneapi-compiler-dpcpp-cpp | |
- name: install oneAPI MKL library | |
shell: bash | |
run: | | |
sudo apt install intel-oneapi-mkl-devel | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
id: cmake_build | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
mkdir build | |
cd build | |
cmake -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx .. | |
cmake --build . --config Release -j $(nproc) | |
ubuntu-22-cmake-sycl-fp16: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
dggml_sycl: [ON] | |
dcmake_c_compiler: [icx] | |
dcmake_cxx_compiler: [icpx] | |
arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le] | |
continue-on-error: true | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: add oneAPI to apt | |
shell: bash | |
run: | | |
cd /tmp | |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | |
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" | |
- name: install oneAPI dpcpp compiler | |
shell: bash | |
run: | | |
sudo apt update | |
sudo apt install intel-oneapi-compiler-dpcpp-cpp | |
- name: install oneAPI MKL library | |
shell: bash | |
run: | | |
sudo apt install intel-oneapi-mkl-devel | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
id: cmake_build | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
mkdir build | |
cd build | |
cmake -DGGML_SYCL_F16=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx .. | |
cmake --build . --config Release -j $(nproc) | |
windows-msys2: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { sys: UCRT64, env: ucrt-x86_64, build: Release } | |
- { sys: CLANG64, env: clang-x86_64, build: Release } | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Setup ${{ matrix.sys }} | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
msystem: ${{matrix.sys}} | |
install: >- | |
base-devel | |
mingw-w64-${{matrix.env}}-toolchain | |
mingw-w64-${{matrix.env}}-cmake | |
mingw-w64-${{matrix.env}}-SDL2 | |
mingw-w64-${{matrix.env}}-openblas | |
- name: Build using make | |
shell: msys2 {0} | |
run: | | |
make -j $(nproc) | |
- name: Clean after building using make | |
shell: msys2 {0} | |
run: | | |
make clean | |
- name: Build using make w/ OpenBLAS | |
shell: msys2 {0} | |
run: | | |
make GGML_OPENBLAS=1 -j $(nproc) | |
- name: Build using CMake | |
shell: msys2 {0} | |
run: | | |
cmake -B build | |
cmake --build build --config ${{ matrix.build }} -j $(nproc) | |
- name: Clean after building using CMake | |
shell: msys2 {0} | |
run: | | |
rm -rf build | |
- name: Build using CMake w/ OpenBLAS | |
shell: msys2 {0} | |
run: | | |
cmake -B build -DGGML_OPENBLAS=ON | |
cmake --build build --config ${{ matrix.build }} -j $(nproc) | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
build: [Release] | |
arch: [Win32, x64] | |
include: | |
- arch: Win32 | |
s2arc: x86 | |
jnaPath: win32-x86 | |
- arch: x64 | |
s2arc: x64 | |
jnaPath: win32-x86-64 | |
- sdl2: ON | |
s2ver: 2.28.5 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Configure | |
run: > | |
cmake -S . -B ./build -A ${{ matrix.arch }} | |
-DCMAKE_BUILD_TYPE=${{ matrix.build }} | |
- name: Build | |
run: | | |
cd ./build | |
msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }} | |
- name: Upload dll | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.jnaPath }}_sense_voice.dll | |
path: build/bin/${{ matrix.build }}/sense_voice.dll | |
- name: Upload binaries | |
if: matrix.sdl2 == 'ON' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sense-voice-bin-${{ matrix.arch }} | |
path: build/bin/${{ matrix.build }} | |
windows-blas: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
build: [Release] | |
arch: [Win32, x64] | |
blas: [ON] | |
sdl2: [ON] | |
include: | |
- arch: Win32 | |
obzip: https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.25/OpenBLAS-0.3.25-x86.zip | |
s2arc: x86 | |
- arch: x64 | |
obzip: https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.25/OpenBLAS-0.3.25-x64.zip | |
s2arc: x64 | |
- sdl2: ON | |
s2ver: 2.28.5 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Fetch OpenBLAS | |
if: matrix.blas == 'ON' | |
run: | | |
C:/msys64/usr/bin/wget.exe -qO blas.zip ${{ matrix.obzip }} | |
7z x blas.zip -oblas -y | |
copy blas/include/cblas.h . | |
copy blas/include/openblas_config.h . | |
echo "OPENBLAS_PATH=$env:GITHUB_WORKSPACE/blas" >> $env:GITHUB_ENV | |
- name: Configure | |
run: > | |
cmake -S . -B ./build -A ${{ matrix.arch }} | |
-DCMAKE_BUILD_TYPE=${{ matrix.build }} | |
-DGGML_OPENBLAS=${{ matrix.blas }} | |
-DCMAKE_LIBRARY_PATH="$env:OPENBLAS_PATH/lib" | |
- name: Build | |
run: | | |
cd ./build | |
msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }} | |
- name: Copy libopenblas.dll | |
if: matrix.blas == 'ON' | |
run: copy "$env:OPENBLAS_PATH/bin/libopenblas.dll" build/bin/${{ matrix.build }} | |
- name: Upload binaries | |
if: matrix.blas == 'ON' && matrix.sdl2 == 'ON' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sense-voice-blas-bin-${{ matrix.arch }} | |
path: build/bin/${{ matrix.build }} | |
# windows-cublas: | |
# runs-on: windows-2019 | |
# | |
# strategy: | |
# matrix: | |
# build: [Release] | |
# arch: [x64] | |
# cublas: [ON] | |
# sdl2: [ON] | |
# cuda-toolkit: [12.2.0, 11.8.0] | |
# include: | |
# - arch: x64 | |
# s2arc: x64 | |
# | |
# steps: | |
# - name: Clone | |
# uses: actions/checkout@v4 | |
# | |
# - name: Add msbuild to PATH | |
# uses: microsoft/setup-msbuild@v2 | |
# | |
# - name: Install CUDA Toolkit | |
# id: cuda-toolkit | |
# uses: Jimver/[email protected] | |
# with: | |
# cuda: '${{ matrix.cuda-toolkit }}' | |
# | |
# | |
# - name: Configure | |
# run: > | |
# cmake -S . -B ./build -A ${{ matrix.arch }} | |
# -DCMAKE_BUILD_TYPE=${{ matrix.build }} | |
# -DGGML_CUDA=${{ matrix.cublas }} | |
# | |
# - name: Build ${{ matrix.cuda-toolkit }} | |
# run: | | |
# cd ./build | |
# cmake --build . --config ${{ matrix.build }} | |
# | |
# - name: Copy CUDA DLLs | |
# run: > | |
# Copy-Item -PassThru | |
# -Path "${{ steps.cuda-toolkit.outputs.CUDA_PATH }}/bin/*.dll" | |
# -Include cudart64_*,cublas64_*,cublasLt64_* | |
# -Destination build/bin/${{ matrix.build }} | |
# | |
# - name: Copy SDL2.dll | |
# if: matrix.sdl2 == 'ON' | |
# run: copy "$env:SDL2_DIR/../lib/${{ matrix.s2arc }}/SDL2.dll" build/bin/${{ matrix.build }} | |
# | |
# - name: Upload binaries | |
# if: matrix.sdl2 == 'ON' | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: sense-voice-cublas-${{ matrix.cuda-toolkit }}-bin-${{ matrix.arch }} | |
# path: build/bin/${{ matrix.build }} | |