koboldcpp/scripts
Daniel Bevenius 3bcfeb700f
cmake : add PCH and unity build to improve build times (#28091)
* scripts : add initial profiling script (wip)

* src : add precompile headers (PCH) for models.h

* common : add common.h as PCH

* ggml : add PCH for ggml-impl.h

* mtmd : use PCH for models.h

* scripts : add script to build with Server/Tools/Tests

* server : add PCH for common.h

* docs: add profiling progress notes (wip)

* ggml : add exclude for GCC + SVE on ARM

Refs: https://github.com/ggml-org/llama.cpp/actions/runs/33393906061/job/99493756214?pr=28091

* ggml : attempt to fix use of std::hardware_destructive_inference_size

Refs: https://github.com/ggml-org/llama.cpp/actions/runs/33396221677/job/99501265689?pr=28091

* squash! ggml : attempt to fix use of std::hardware_destructive_inference_size

Add a version check for GCC 12 to conditionally apply the `-Winterference-size`
pragma.

* editorconfig : exclude profiling reports dir

This directory will not be included in the merge later and this commit
can be ignore at that point. Just fixing to keep CI happy.

* ggml : skip PCH for gcc on non-x86 architectures

* tests : add PCH for peg-parser/tests.h

There are 7 peg-parser tests that can share one PCH instead of then each
parsing the full tests.h.

* common : add PCH for chat.h

* docs : update linux build profiling full results

Just updating after a number of PCH additions. These are not exact
figures and will vary a bit from run to run, but they give a general idea
of the performance impact of PCH.

* cmake : introduce unity build for models

This commit introduces a unity build for the models to improve
compilation time.

The improvements were roughly the following:
```console
+------------------------+-----+------------+------------+------------+
| Build                  | TUs | Frontend   | Backend    | Total      |
+------------------------+-----+------------+------------+------------+
| Full,    master        | 396 |   811.0 s  |   692.2 s  | 1,503.2 s  |
| Full,    with PCH      | 405 |   380.0 s  |   664.7 s  | 1,044.7 s  |
| Full,    with PCH + UB | 264 |   357.7 s  |   635.7 s  |   993.4 s  |
+------------------------+-----+------------+------------+------------+

TU   = Translation Unit.
Full = includes Server, Tools, and Tests.
PCH  = precompiled headers.
UB   = unity build for models.
```

* docs : update linux profiling table with unitiy build results

* docs : update mac profiling results to include unity build [no ci]

* docs: remove profiling reports

* scripts : merge build profile scripts into one script

I was lazy before and just copied the first script to enable Tests,
Server, and Tools. This now merges them into a single script.

* Revert "editorconfig : exclude profiling reports dir" [no ci]

This reverts commit 2922a12118a0730d2f7632bcba265b44a0856c59.

* src : rename ggml_view_2d_slice to gemma3n_view_2d_slice

This is to be consistent with the rename in gemma4.cpp which was
required to avoid a name clash.

* cmake : add build profile script for windows [no ci]

This commit adds a port of the scripts/build-profile.sh script to
windows powershell.

This was developed on Windows on ARM but should work on X64 as well but
needs to be tested there as well.
2026-09-11 13:01:29 +02:00
..
apple scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
hip ci: hip-quality-check: update vgpr spill ignore list (#26859) 2026-08-11 11:47:57 +02:00
jinja ci : bump ty to 0.0.78 (#28548) 2026-09-07 21:10:06 +02:00
snapdragon ci : bump ty to 0.0.78 (#28548) 2026-09-07 21:10:06 +02:00
bench-models.sh common: migrate the deprecated --mmap/--no-mmap to --load-mode (#26934) 2026-08-15 16:35:53 +08:00
build-info.sh
build-profile.ps1 cmake : add PCH and unity build to improve build times (#28091) 2026-09-11 13:01:29 +02:00
build-profile.sh cmake : add PCH and unity build to improve build times (#28091) 2026-09-11 13:01:29 +02:00
ccache-clear.sh ci : apply ccache-clear with older/min/dry-run to all ccache jobs (#27602) 2026-08-24 10:49:20 +03:00
check-requirements.sh scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
compare-commits.sh scripts: add sqlite3 check for compare-commits.sh (#15633) 2025-08-28 19:23:22 +08:00
compare-llama-bench.py args: refactor mlock/mmap/directio into load-mode (#20834) 2026-07-23 20:32:56 +08:00
compare-logprobs.py scripts: update corpus of compare-logprobs (#19326) 2026-02-25 12:57:34 +01:00
create_ops_docs.py Docs: add instructions for adding backends (#14889) 2025-07-27 09:36:43 +08:00
debug-test.sh refactor : remove libcurl, use OpenSSL when available (#18828) 2026-01-14 18:02:47 +01:00
gen-authors.sh scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
gen-unicode-data.py ci : bump ty to 0.0.26 (#21156) 2026-03-30 09:29:15 +02:00
get-flags.mk
get-hellaswag.sh scripts : update get-hellaswag.sh and get-winogrande.sh (#20542) 2026-03-14 11:21:50 +01:00
get-pg.sh scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
get-wikitext-2.sh scripts : improve get-wikitext-2.sh (#19952) 2026-03-02 15:40:49 +01:00
get-winogrande.sh scripts : update get-hellaswag.sh and get-winogrande.sh (#20542) 2026-03-14 11:21:50 +01:00
get_chat_template.py
git-bisect-run.sh llama: end-to-end tests (#19802) 2026-03-08 12:30:21 +01:00
git-bisect.sh llama: end-to-end tests (#19802) 2026-03-08 12:30:21 +01:00
hf.sh scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
install-oneapi.bat
make-release-checks.sh scripts : use sed instead of grep for version parsing [no ci] (#28700) 2026-09-10 15:44:40 +02:00
make-release-desc.sh ci : add nightly-tag.txt to make-release (#27485) 2026-08-21 13:20:44 +03:00
make-release-summary.txt llama.cpp : bump version to 0.3.0 (#27696) 2026-08-25 12:42:21 +03:00
pr2wt.sh pr2wt : use ssh/https remote in worktree depending on base (#27800) 2026-08-27 16:27:17 +03:00
release.sh scripts : add release.sh for release preparation (#27497) 2026-08-21 14:51:26 +03:00
serve-static.js refactor : remove libcurl, use OpenSSL when available (#18828) 2026-01-14 18:02:47 +01:00
server-bench.py server-bench : add speed-bench for speculative decoding benchmarking (#23869) 2026-05-29 23:09:47 +02:00
server-test-function-call.py common/autoparser: fixes for newline handling / forced tool calls (#22654) 2026-05-04 13:18:11 +02:00
server-test-model.py Autoparser - complete refactoring of parser architecture (#18675) 2026-03-06 21:01:00 +01:00
server-test-parallel-tc.py chat: fix parallel_tool_calls default setting based on model capabilities, add tests for parallel tool calls and structured outputs (#22217) 2026-04-22 18:10:56 +02:00
server-test-structured.py parser: fix structured output bug (#22302) 2026-04-24 23:19:55 +02:00
sync-ggml-am.sh scripts : update sync scripts 2025-08-18 22:06:44 +03:00
sync-ggml.last sync : ggml (#28379) 2026-09-04 14:39:19 +03:00
sync-ggml.sh scripts : update sync scripts 2025-08-18 22:06:44 +03:00
sync_vendor.py vendor : update cpp-httplib to 0.54.0 (#27919) 2026-08-30 09:01:51 +03:00
tool_bench.py ci : bump ty to 0.0.78 (#28548) 2026-09-07 21:10:06 +02:00
tool_bench.sh scripts : make the shell scripts cross-platform (#14341) 2025-06-30 10:17:18 +02:00
ui-assets.cmake ui : embed assets directly with CMake (#28445) 2026-09-06 07:49:39 +02:00
verify-checksum-models.py
wc2wt.sh scripts : allow wc2wt with an existing branch (#23189) 2026-05-18 08:57:28 +03:00