diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d500d3098..3adf2a14af 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,7 +87,7 @@ jobs: -DGGML_METAL_EMBED_LIBRARY=OFF \ -DGGML_METAL_SHADER_DEBUG=ON \ -DGGML_RPC=ON - cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) + time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) leaks -atExit -- ./build/bin/test-thread-safety -hf ggml-org/gemma-3-270m-qat-GGUF -ngl 99 -p "$(printf 'hello %.0s' {1..128})" -n 16 -c 512 -ub 32 -np 2 -t 2 -lv 1 - name: Test @@ -124,7 +124,7 @@ jobs: -DGGML_METAL=OFF \ -DGGML_RPC=ON \ -DCMAKE_OSX_DEPLOYMENT_TARGET=13.3 - cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) + time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) - name: Test id: cmake_test @@ -165,8 +165,8 @@ jobs: id: cmake_build run: | export CMAKE_PREFIX_PATH=dawn - cmake -B build -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF - cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) + cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF + time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) - name: Test id: cmake_test @@ -231,7 +231,7 @@ jobs: cmake -B build \ -DLLAMA_FATAL_WARNINGS=ON \ -DGGML_RPC=ON - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) - name: Test id: cmake_test @@ -274,14 +274,16 @@ jobs: id: depends run: | sudo apt-get update - sudo apt-get install build-essential libssl-dev + sudo apt-get install build-essential libssl-dev ninja-build - name: Build id: cmake_build run: | cmake -B build \ + -G "Ninja" \ + -DCMAKE_BUILD_TYPE=Release \ -DGGML_RPC=ON - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) - name: Test id: cmake_test @@ -300,12 +302,13 @@ jobs: - name: Dependencies id: depends run: | - sudo apt-get install -y glslc libvulkan-dev libssl-dev + sudo apt-get install -y glslc libvulkan-dev libssl-dev ninja-build - name: Configure id: cmake_configure run: | cmake -B build \ + -G "Ninja" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DGGML_BACKEND_DL=ON \ -DGGML_CPU_ALL_VARIANTS=ON \ @@ -314,7 +317,7 @@ jobs: - name: Build id: cmake_build run: | - cmake --build build -j $(nproc) + time cmake --build build -j $(nproc) ubuntu-24-webgpu: runs-on: ubuntu-24.04 @@ -336,7 +339,8 @@ jobs: run: | sudo add-apt-repository -y ppa:kisak/kisak-mesa sudo apt-get update -y - sudo apt-get install -y build-essential mesa-vulkan-drivers libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev libssl-dev + sudo apt-get install -y build-essential mesa-vulkan-drivers \ + libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev libssl-dev - name: Get latest Vulkan SDK version id: vulkan_sdk_version @@ -378,7 +382,7 @@ jobs: export Dawn_DIR=dawn/lib64/cmake/Dawn cmake -B build \ -DGGML_WEBGPU=ON - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) - name: Test id: cmake_test @@ -415,11 +419,13 @@ jobs: run: | source emsdk/emsdk_env.sh emcmake cmake -B build-wasm \ + -G "Ninja" \ + -DCMAKE_BUILD_TYPE=Release \ -DGGML_WEBGPU=ON \ -DLLAMA_OPENSSL=OFF \ -DEMDAWNWEBGPU_DIR=emdawnwebgpu_pkg - cmake --build build-wasm --target test-backend-ops -j $(nproc) + time cmake --build build-wasm --config Release --target test-backend-ops -j $(nproc) ubuntu-22-hip: runs-on: ubuntu-22.04 @@ -479,7 +485,7 @@ jobs: run: | cmake -B build -S . \ -DGGML_MUSA=ON - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) ubuntu-22-sycl: runs-on: ubuntu-22.04 @@ -528,7 +534,7 @@ jobs: -DGGML_SYCL=ON \ -DCMAKE_C_COMPILER=icx \ -DCMAKE_CXX_COMPILER=icpx - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) ubuntu-22-sycl-fp16: runs-on: ubuntu-22.04 @@ -551,7 +557,7 @@ jobs: shell: bash run: | sudo apt update - sudo apt install intel-oneapi-compiler-dpcpp-cpp libssl-dev + sudo apt install intel-oneapi-compiler-dpcpp-cpp libssl-dev ninja-build - name: install oneAPI MKL library shell: bash @@ -574,11 +580,13 @@ jobs: run: | source /opt/intel/oneapi/setvars.sh cmake -B build \ + -G "Ninja" \ + -DCMAKE_BUILD_TYPE=Release \ -DGGML_SYCL=ON \ -DCMAKE_C_COMPILER=icx \ -DCMAKE_CXX_COMPILER=icpx \ -DGGML_SYCL_F16=ON - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) ubuntu-24-openvino: name: ubuntu-24-openvino-${{ matrix.openvino_device }} @@ -648,7 +656,7 @@ jobs: cmake -B build/ReleaseOV -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DGGML_OPENVINO=ON - cmake --build build/ReleaseOV --config Release -j $(nproc) + time cmake --build build/ReleaseOV --config Release -j $(nproc) - name: Test id: cmake_test @@ -1039,7 +1047,7 @@ jobs: -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \ -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 - cmake --build build --config Release -j $(nproc) + time cmake --build build --config Release -j $(nproc) - name: Test id: cmake_test diff --git a/ci/run.sh b/ci/run.sh index eaf6358c0d..2393b70ac4 100755 --- a/ci/run.sh +++ b/ci/run.sh @@ -57,6 +57,13 @@ SRC=`pwd` CMAKE_EXTRA="-DLLAMA_FATAL_WARNINGS=${LLAMA_FATAL_WARNINGS:-ON} -DLLAMA_OPENSSL=OFF -DGGML_SCHED_NO_REALLOC=ON" CTEST_EXTRA="" +# Default to use make unless specified for compatibility +CMAKE_GENERATOR="Unix Makefiles" + +if [ ! -z "${GG_BUILD_NINJA}" ]; then + CMAKE_GENERATOR="Ninja" +fi + if [ ! -z ${GG_BUILD_METAL} ]; then CMAKE_EXTRA="${CMAKE_EXTRA} -DGGML_METAL=ON" fi @@ -242,13 +249,13 @@ function gg_run_ctest_debug { set -e - # Check cmake, make and ctest are installed + # Check cmake and ctest are installed gg_check_build_requirements - (time cmake -DCMAKE_BUILD_TYPE=Debug ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log - (time make -j$(nproc) ) 2>&1 | tee -a $OUT/${ci}-make.log + (cmake -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Debug ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log + (time cmake --build . --config Debug -j$(nproc)) 2>&1 | tee -a $OUT/${ci}-make.log - (time ctest --output-on-failure -L main -E "test-opt|test-backend-ops" ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log + (time ctest -C Debug --output-on-failure -L main -E "test-opt|test-backend-ops" ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log set +e } @@ -273,16 +280,16 @@ function gg_run_ctest_release { set -e - # Check cmake, make and ctest are installed + # Check cmake and ctest are installed gg_check_build_requirements - (time cmake -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log - (time make -j$(nproc) ) 2>&1 | tee -a $OUT/${ci}-make.log + (cmake -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log + (time cmake --build . --config Release -j$(nproc)) 2>&1 | tee -a $OUT/${ci}-make.log if [ -z ${GG_BUILD_LOW_PERF} ]; then - (time ctest --output-on-failure -L 'main|python' ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log + (time ctest -C Release --output-on-failure -L 'main|python' ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log else - (time ctest --output-on-failure -L main -E test-opt ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log + (time ctest -C Release --output-on-failure -L main -E test-opt ${CTEST_EXTRA}) 2>&1 | tee -a $OUT/${ci}-ctest.log fi set +e @@ -340,7 +347,7 @@ function gg_run_ctest_with_model_debug { cd build-ci-debug set -e - (LLAMACPP_TEST_MODELFILE="$model" time ctest --output-on-failure -L model) 2>&1 | tee -a $OUT/${ci}-ctest.log + (LLAMACPP_TEST_MODELFILE="$model" time ctest -C Debug --output-on-failure -L model) 2>&1 | tee -a $OUT/${ci}-ctest.log set +e cd .. @@ -353,7 +360,7 @@ function gg_run_ctest_with_model_release { cd build-ci-release set -e - (LLAMACPP_TEST_MODELFILE="$model" time ctest --output-on-failure -L model) 2>&1 | tee -a $OUT/${ci}-ctest.log + (LLAMACPP_TEST_MODELFILE="$model" time ctest -C Release --output-on-failure -L model) 2>&1 | tee -a $OUT/${ci}-ctest.log # test memory leaks #if [[ ! -z ${GG_BUILD_METAL} ]]; then @@ -407,8 +414,8 @@ function gg_run_qwen3_0_6b { set -e - (time cmake -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log - (time make -j$(nproc) ) 2>&1 | tee -a $OUT/${ci}-make.log + (cmake -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log + (time cmake --build . --config Release -j$(nproc)) 2>&1 | tee -a $OUT/${ci}-make.log python3 ../convert_hf_to_gguf.py ${path_models} --outfile ${path_models}/ggml-model-f16.gguf --outtype f16 python3 ../convert_hf_to_gguf.py ${path_models} --outfile ${path_models}/ggml-model-bf16.gguf --outtype bf16 @@ -556,8 +563,8 @@ function gg_run_embd_bge_small { set -e - (time cmake -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log - (time make -j$(nproc) ) 2>&1 | tee -a $OUT/${ci}-make.log + (cmake -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log + (time cmake --build . --config Release -j$(nproc)) 2>&1 | tee -a $OUT/${ci}-make.log python3 ../convert_hf_to_gguf.py ${path_models} --outfile ${path_models}/ggml-model-f16.gguf @@ -601,8 +608,8 @@ function gg_run_rerank_tiny { set -e - (time cmake -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log - (time make -j$(nproc) ) 2>&1 | tee -a $OUT/${ci}-make.log + (cmake -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT/${ci}-cmake.log + (time cmake --build . --config Release -j$(nproc)) 2>&1 | tee -a $OUT/${ci}-make.log python3 ../convert_hf_to_gguf.py ${path_models} --outfile ${path_models}/ggml-model-f16.gguf @@ -652,10 +659,6 @@ function gg_check_build_requirements { gg_printf 'cmake not found, please install' fi - if ! command -v make &> /dev/null; then - gg_printf 'make not found, please install' - fi - if ! command -v ctest &> /dev/null; then gg_printf 'ctest not found, please install' fi