@@ -28,13 +28,25 @@ jobs:
2828 include :
2929 - build : ' noavx'
3030 defines : ' -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF'
31+ os : ubuntu-24.04
32+ arch : x64
3133 - build : ' avx2'
3234 defines : ' '
35+ os : ubuntu-24.04
36+ arch : x64
3337 - build : ' avx'
3438 defines : ' -DGGML_AVX2=OFF'
39+ os : ubuntu-24.04
40+ arch : x64
3541 - build : ' avx512'
3642 defines : ' -DGGML_AVX512=ON'
37- runs-on : ubuntu-24.04
43+ os : ubuntu-24.04
44+ arch : x64
45+ - build : ' aarch64'
46+ defines : ' -DGGML_NATIVE=OFF -DGGML_CPU_AARCH64=ON -DGGML_CPU_ARM_ARCH=armv8-a'
47+ os : ubuntu-24.04-arm
48+ arch : arm64
49+ runs-on : ${{ matrix.os }}
3850 steps :
3951 - uses : actions/checkout@v4
4052 with :
@@ -52,28 +64,28 @@ jobs:
5264 - uses : actions/upload-artifact@v4
5365 with :
5466 path : ./build/bin/libllama.so
55- name : llama-bin-linux-${{ matrix.build }}-x64 .so
67+ name : llama-bin-linux-${{ matrix.build }}-${{ matrix.arch }} .so
5668 if-no-files-found : error
5769 - uses : actions/upload-artifact@v4
5870 with :
5971 path : ./build/bin/libggml.so
60- name : ggml-bin-linux-${{ matrix.build }}-x64 .so
72+ name : ggml-bin-linux-${{ matrix.build }}-${{ matrix.arch }} .so
6173 if-no-files-found : error
6274 - uses : actions/upload-artifact@v4
6375 with :
6476 path : ./build/bin/libggml-base.so
65- name : ggml-base-bin-linux-${{ matrix.build }}-x64 .so
77+ name : ggml-base-bin-linux-${{ matrix.build }}-${{ matrix.arch }} .so
6678 if-no-files-found : error
6779 - uses : actions/upload-artifact@v4
6880 with :
6981 path : ./build/bin/libggml-cpu.so
70- name : ggml-cpu-bin-linux-${{ matrix.build }}-x64 .so
82+ name : ggml-cpu-bin-linux-${{ matrix.build }}-${{ matrix.arch }} .so
7183 if-no-files-found : error
7284 - name : Upload Llava
7385 uses : actions/upload-artifact@v4
7486 with :
7587 path : ./build/bin/libllava_shared.so
76- name : llava-bin-linux-${{ matrix.build }}-x64 .so
88+ name : llava-bin-linux-${{ matrix.build }}-${{ matrix.arch }} .so
7789 if-no-files-found : error
7890
7991 compile-musl :
@@ -527,19 +539,17 @@ jobs:
527539 if-no-files-found : error
528540
529541 compile-android :
530- # Disable android build
531- if : false
532-
542+ name : Compile (Android)
533543 strategy :
534544 fail-fast : true
535545 matrix :
536546 include :
537547 - build : ' x86'
538- defines : ' -DANDROID_ABI=x86'
548+ defines : ' -DANDROID_ABI=x86 -DCMAKE_C_FLAGS=-march=i686 -DCMAKE_CXX_FLAGS=-march=i686 '
539549 - build : ' x86_64'
540- defines : ' -DANDROID_ABI=x86_64'
550+ defines : ' -DANDROID_ABI=x86_64 -DCMAKE_C_FLAGS=-march=x86-64 -DCMAKE_CXX_FLAGS=-march=x86-64 '
541551 - build : ' arm64-v8a'
542- defines : ' -DANDROID_ABI=arm64-v8a'
552+ defines : ' -DANDROID_ABI=arm64-v8a -DCMAKE_C_FLAGS=-march=armv8.7a -DCMAKE_C_FLAGS=-march=armv8.7a '
543553 runs-on : ubuntu-24.04
544554 steps :
545555 - uses : actions/checkout@v4
@@ -555,28 +565,39 @@ jobs:
555565 - name : Build
556566 id : cmake_build
557567 env :
558- CMAKE_FLAGS : ' -DCMAKE_TOOLCHAIN_FILE=${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-23'
568+ CMAKE_FLAGS : ' -DCMAKE_TOOLCHAIN_FILE=${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-23 -DGGML_OPENMP=OFF -DGGML_LLAMAFILE=OFF '
559569 run : |
560- mkdir build
561- cd build
562- cmake .. ${{ env.COMMON_DEFINE }} ${{ env.CMAKE_FLAGS }} ${{ matrix.defines }}
563- cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
564- cd ..
565- ls -R
570+ # export-lora not supported on 32 bit machines hence breaks x86 build
571+ sed -i '/add_subdirectory(export-lora)/d' examples/CMakeLists.txt # remove export-lora from examples
572+ cmake ${{ env.COMMON_DEFINE }} ${{ env.CMAKE_FLAGS }} ${{ matrix.defines }} -B build
573+ cmake --build build --config Release -j ${env:NUMBER_OF_PROCESSORS}
566574 - name : Upload Llama
567575 uses : actions/upload-artifact@v4
568576 with :
569- path : ./build/src /libllama.so
577+ path : ./build/bin /libllama.so
570578 name : llama-bin-android-${{ matrix.build }}.so
571- - uses : actions/upload-artifact@v4
579+ - name : Upload GGML
580+ uses : actions/upload-artifact@v4
572581 with :
573- path : ./build/ggml/src /libggml.so
582+ path : ./build/bin /libggml.so
574583 name : ggml-bin-android-${{ matrix.build }}.so
575584 if-no-files-found : error
585+ - name : Upload GGML Base
586+ uses : actions/upload-artifact@v4
587+ with :
588+ path : ./build/bin/libggml-base.so
589+ name : ggml-base-bin-android-${{ matrix.build }}.so
590+ if-no-files-found : error
591+ - name : Upload GGML CPU
592+ uses : actions/upload-artifact@v4
593+ with :
594+ path : ./build/bin/libggml-cpu.so
595+ name : ggml-cpu-bin-android-${{ matrix.build }}.so
596+ if-no-files-found : error
576597 - name : Upload Llava
577598 uses : actions/upload-artifact@v4
578599 with :
579- path : ./build/examples/llava /libllava_shared.so
600+ path : ./build/bin /libllava_shared.so
580601 name : llava-bin-android-${{ matrix.build }}.so
581602
582603 build-deps :
@@ -601,7 +622,7 @@ jobs:
601622 - name : Rearrange Files
602623 run : |
603624 # Make all directories at once
604- mkdir --parents deps/{noavx,avx,avx2,avx512,musl-noavx,musl-avx,musl-avx2,musl-avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan,android-arm64-v8a,android-x86,android-x86_64}
625+ mkdir --parents deps/{noavx,avx,avx2,avx512,linux-arm64, musl-noavx,musl-avx,musl-avx2,musl-avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan,android-arm64-v8a,android-x86,android-x86_64}
605626
606627 # Linux
607628 cp artifacts/ggml-bin-linux-noavx-x64.so/libggml.so deps/noavx/libggml.so
@@ -628,6 +649,13 @@ jobs:
628649 cp artifacts/llama-bin-linux-avx512-x64.so/libllama.so deps/avx512/libllama.so
629650 cp artifacts/llava-bin-linux-avx512-x64.so/libllava_shared.so deps/avx512/libllava_shared.so
630651
652+ # Arm64
653+ cp artifacts/ggml-bin-linux-aarch64-arm64.so/libggml.so deps/linux-arm64/libggml.so
654+ cp artifacts/ggml-base-bin-linux-aarch64-arm64.so/libggml-base.so deps/linux-arm64/libggml-base.so
655+ cp artifacts/ggml-cpu-bin-linux-aarch64-arm64.so/libggml-cpu.so deps/linux-arm64/libggml-cpu.so
656+ cp artifacts/llama-bin-linux-aarch64-arm64.so/libllama.so deps/linux-arm64/libllama.so
657+ cp artifacts/llava-bin-linux-aarch64-arm64.so/libllava_shared.so deps/linux-arm64/libllava_shared.so
658+
631659 # Musl
632660 cp artifacts/ggml-bin-musl-noavx-x64.so/libggml.so deps/musl-noavx/libggml.so
633661 cp artifacts/ggml-base-bin-musl-noavx-x64.so/libggml-base.so deps/musl-noavx/libggml-base.so
@@ -703,17 +731,23 @@ jobs:
703731 cp artifacts/llava-bin-osx-x64-rosetta2.dylib/libllava_shared.dylib deps/osx-x64-rosetta2/libllava_shared.dylib
704732
705733 # Android
706- #cp artifacts/ggml-bin-android-arm64-v8a.so/libggml.so deps/android-arm64-v8a/libggml.so
707- #cp artifacts/llama-bin-android-arm64-v8a.so/libllama.so deps/android-arm64-v8a/libllama.so
708- #cp artifacts/llava-bin-android-arm64-v8a.so/libllava_shared.so deps/android-arm64-v8a/libllava_shared.so
709-
710- #cp artifacts/ggml-bin-android-x86.so/libggml.so deps/android-x86/libggml.so
711- #cp artifacts/llama-bin-android-x86.so/libllama.so deps/android-x86/libllama.so
712- #cp artifacts/llava-bin-android-x86.so/libllava_shared.so deps/android-x86/libllava_shared.so
713-
714- #cp artifacts/ggml-bin-android-x86_64.so/libggml.so deps/android-x86_64/libggml.so
715- #cp artifacts/llama-bin-android-x86_64.so/libllama.so deps/android-x86_64/libllama.so
716- #cp artifacts/llava-bin-android-x86_64.so/libllava_shared.so deps/android-x86_64/libllava_shared.so
734+ cp artifacts/ggml-bin-android-arm64-v8a.so/libggml.so deps/android-arm64-v8a/libggml.so
735+ cp artifacts/ggml-base-bin-android-arm64-v8a.so/libggml-base.so deps/android-arm64-v8a/libggml-base.so
736+ cp artifacts/ggml-cpu-bin-android-arm64-v8a.so/libggml-cpu.so deps/android-arm64-v8a/libggml-cpu.so
737+ cp artifacts/llama-bin-android-arm64-v8a.so/libllama.so deps/android-arm64-v8a/libllama.so
738+ cp artifacts/llava-bin-android-arm64-v8a.so/libllava_shared.so deps/android-arm64-v8a/libllava_shared.so
739+
740+ cp artifacts/ggml-bin-android-x86.so/libggml.so deps/android-x86/libggml.so
741+ cp artifacts/ggml-base-bin-android-x86.so/libggml-base.so deps/android-x86/libggml-base.so
742+ cp artifacts/ggml-cpu-bin-android-x86.so/libggml-cpu.so deps/android-x86/libggml-cpu.so
743+ cp artifacts/llama-bin-android-x86.so/libllama.so deps/android-x86/libllama.so
744+ cp artifacts/llava-bin-android-x86.so/libllava_shared.so deps/android-x86/libllava_shared.so
745+
746+ cp artifacts/ggml-bin-android-x86_64.so/libggml.so deps/android-x86_64/libggml.so
747+ cp artifacts/ggml-base-bin-android-x86_64.so/libggml-base.so deps/android-x86_64/libggml-base.so
748+ cp artifacts/ggml-cpu-bin-android-x86_64.so/libggml-cpu.so deps/android-x86_64/libggml-cpu.so
749+ cp artifacts/llama-bin-android-x86_64.so/libllama.so deps/android-x86_64/libllama.so
750+ cp artifacts/llava-bin-android-x86_64.so/libllava_shared.so deps/android-x86_64/libllava_shared.so
717751
718752 # Windows CUDA
719753 cp artifacts/ggml-bin-win-cublas-cu11.7.1-x64.dll/ggml.dll deps/cu11.7.1/ggml.dll
0 commit comments