Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
cf78650
exclude GPU/NPU failing POOL_2D case
mostafafaheem Aug 22, 2026
f72d986
Fix pool case
mostafafaheem Aug 27, 2026
011271a
ggml-openvino: fix stateful decode for Gemma-4 per-layer-type head sizes
cavusmustafa Jul 17, 2026
70ceed6
ggml-openvino: fix MSVC narrowing error in permute
cavusmustafa Jul 24, 2026
4fb04df
ggml-openvino: classify sliding-window layers structurally on interle…
cavusmustafa Aug 11, 2026
0e9794e
ggml-openvino: add GGML_OPENVINO_REQUANT_KQUANT to select a 4-bit req…
cavusmustafa Aug 11, 2026
c14780c
ggml-openvino: add GGML_OPENVINO_SPILL_DIR to spill weight buffers to…
cavusmustafa Aug 14, 2026
cd327a3
Stateful Performance: Added pass::KVStateSeqAxis to change KV layout
cavusmustafa Aug 20, 2026
80aec82
ggml-openvino: fix stateful decode past the sliding-window size
cavusmustafa Aug 24, 2026
ca08e4f
ggml-openvino: refuse stateful decode that cannot resume from the KV …
cavusmustafa Aug 27, 2026
fecf802
ggml-openvino: use the per-layer KV head count for the stateful KV state
cavusmustafa Aug 27, 2026
6fbe283
ggml-openvino: apply the KV state relayout to any KV head count
cavusmustafa Aug 27, 2026
66d2d07
ggml-openvino : support ggml_rope_set_offset and simplify op support …
mostafafaheem Aug 28, 2026
73ddeb5
add more cpy cases
mostafafaheem Aug 28, 2026
ba4e39d
reject BF16 cpy on NPU
mostafafaheem Sep 1, 2026
f304295
Remove mul_mat_id fallback, gate large mul_mat_id only for mxfp4
wine99 Aug 20, 2026
6645a9e
ggml-openvino: fuse the MoE expert block into MOECompressed on GPU
cavusmustafa Aug 25, 2026
8c24268
ggml-openvino: skip GPU MUL_MAT_ID for unbound expert tensors
cavusmustafa Sep 3, 2026
314afa5
ggml-openvino: requantize grouped 8-bit MoE experts on GPU
cavusmustafa Sep 3, 2026
db83eee
Enable special strided CPY for conv state writeback
wine99 Sep 4, 2026
e871404
openvino: support cacheless encoder models on NPU
zhaixuejun1993 Sep 1, 2026
e13baf3
openvino: optimize norm and RoPE translation
zhaixuejun1993 Sep 1, 2026
a59f311
ggml-openvino : simplify op translators and enable IMROPE/NEOX RoPE f…
mostafafaheem Sep 9, 2026
91903c8
remove unnecessary include and clean up PAD
mostafafaheem Sep 9, 2026
eec425e
fix mulmat bug
mostafafaheem Sep 9, 2026
926ef68
use ov::as_type_ptr instead of std::dynamic_pointer_cast
mostafafaheem Sep 9, 2026
db8913c
ggml-openvino: fix mixed-dtype ADD/SWIGLU_CLAMP, gate unsupported ROP…
ravi9 Sep 15, 2026
88b44d0
openvino: share compiled models with per-context inference state; fix…
wine99 Sep 10, 2026
a81e3f6
ggml-openvino: gate MoE expert-sum ReduceSum shortcut past 8 experts
ravi9 Sep 15, 2026
3200838
ggml-openvino: gate degenerate m=1,n=1 MUL_MAT on GPU
ravi9 Sep 15, 2026
9958099
openvino: slice NPU prefill KV cache by active length
zhaixuejun1993 Sep 8, 2026
abdbe2d
openvino: use L0 host tensors for NPU buffers
zhaixuejun1993 Sep 8, 2026
fcc2c2f
openvino: fill NPU prefill masks directly
zhaixuejun1993 Sep 8, 2026
b02640f
openvino: make NPU requant layout configurable
zhaixuejun1993 Sep 8, 2026
d786af8
openvino: centralize NPU plugin config overrides
zhaixuejun1993 Sep 8, 2026
bcd41d3
openvino: add scatter-elements KV update option
zhaixuejun1993 Sep 8, 2026
6a7450d
openvino: gather token embeddings from compressed rows
zhaixuejun1993 Sep 8, 2026
7fbc985
openvino: stream u4 requantization chunks
zhaixuejun1993 Sep 8, 2026
22c503f
openvino: fail fast on static recompile after weight release
zhaixuejun1993 Sep 8, 2026
6302859
openvino: add experimental NPU Q4_0 keep option
zhaixuejun1993 Sep 8, 2026
76e2a0a
openvino: unfold NPUW only for decode graph
zhaixuejun1993 Sep 8, 2026
b7ebccc
openvino: tidy NPU tuning helper ordering
zhaixuejun1993 Sep 8, 2026
3a97887
openvino: normalize NPU compile env overrides
zhaixuejun1993 Sep 9, 2026
e194363
openvino: stream NPU weight requant by default to cut compile peak
zhaixuejun1993 Sep 9, 2026
24c7214
openvino: add self-contained NPU model cache
zhaixuejun1993 Sep 11, 2026
a0ceeb2
openvino: add lazy import for self-contained mmap cache
zhaixuejun1993 Sep 16, 2026
037263b
openvino: release GGUF mmap resident pages before blob import
zhaixuejun1993 Sep 17, 2026
8acbd48
openvino: add GGML_OPENVINO_NPU_SHARED_BANK to share prefill/decode w…
zhaixuejun1993 Sep 21, 2026
4ae320b
openvino: drop SELF_CONTAINED_LAZY_IMPORT and RELEASE_MMAP_PAGES
zhaixuejun1993 Sep 21, 2026
7631a09
openvino: demand-page large NPU compute buffer in strict warm-mmap mode
zhaixuejun1993 Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions ci/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,11 @@ function gg_run_test_backend_ops {
args_extra=""
fi

# TODO: OpenVINO GPU plugin crashes (CL_OUT_OF_RESOURCES) with 2 concurrent workers on GPU.
if [ ! -z "${GG_BUILD_OPENVINO}" ] && [ "${GGML_OPENVINO_DEVICE:-}" = "GPU" ]; then
args_extra=""
fi

# TODO: reduce the test-backend-ops timeout to 1800s
if [ ! -z ${GG_BUILD_HIGH_PERF} ]; then
(time timeout 3600 ./bin/test-backend-ops ${args_extra} -b CPU) 2>&1 | tee -a $OUT/${ci}-test-backend-ops.log
Expand Down
18 changes: 17 additions & 1 deletion docs/backend/OPENVINO.md
Original file line number Diff line number Diff line change
Expand Up @@ -715,14 +715,30 @@ Boolean flags follow a uniform convention: set to a **positive integer** (e.g. `
| `GGML_OPENVINO_CACHE_DIR` | String | `not set` | Directory for OpenVINO model caching (recommended: `/tmp/ov_cache`). Enables model caching when set. **Not supported on NPU devices.** |
| `GGML_OPENVINO_COMPILED_MODEL_CACHE_DIR` | String | `not set` | Directory for the frontend compiled-model cache. When set, OpenVINO compiled models are exported as blobs and imported on later runs to skip weight requantization, graph conversion, and compilation for matching single-graph models. |
| `GGML_OPENVINO_PREFILL_CHUNK_SIZE`| Integer | `256` | Token chunk size for **NPU** prefill (NPU-only; ignored on CPU/GPU). Must be a positive integer; otherwise the default is used. |
| `GGML_OPENVINO_NPU_COMPILE_CONFIG` | String | `not set` | NPU-only compiler mode parameters forwarded to OpenVINO as `NPU_COMPILATION_MODE_PARAMS`, for example `optimization-level=3`. |
| `GGML_OPENVINO_NPU_CONFIG` | String | `not set` | Recommended NPU plugin/compiler override entry point. Comma-separated `KEY=VALUE` pairs are applied after named NPU options, so they can override defaults or aliases; for example, `NPU_TILES=6,NPUW_SLICE_OUT=YES,NPU_COMPILATION_MODE_PARAMS=optimization-level=3`. |
| `GGML_OPENVINO_NPU_COMPILE_CONFIG` | String | `not set` | Legacy alias for `GGML_OPENVINO_NPU_CONFIG=NPU_COMPILATION_MODE_PARAMS=...`, for example `optimization-level=3`. `GGML_OPENVINO_NPU_CONFIG` is preferred and overrides this alias when it sets the same property. |
| `GGML_OPENVINO_NPU_COMPILER_TYPE` | String | `DRIVER` | Named alias for the `NPU_COMPILER_TYPE` property. Values include `PLUGIN`, `DRIVER`, and `PREFER_PLUGIN`; `GGML_OPENVINO_NPU_CONFIG` can override it. |
| `GGML_OPENVINO_NPUW_FUNCALL_FOR_ALL` | String | OpenVINO default | Named alias for the `NPUW_FUNCALL_FOR_ALL` property. Useful for disabling funcall-for-all on driver/compiler combinations where it hurts stability or long-context performance; `GGML_OPENVINO_NPU_CONFIG` can override it. |
| `GGML_OPENVINO_NPUW_UNFOLD_IREQS` | String | OpenVINO default | Named alias for the `NPUW_UNFOLD_IREQS` property. Unfolding can reduce repeated funcall dispatch overhead at the cost of higher memory use; `GGML_OPENVINO_NPU_CONFIG` can override it. |
| `GGML_OPENVINO_COMPILATION_NUM_THREADS` | String | OpenVINO default | Named alias for the `COMPILATION_NUM_THREADS` property. Caps compiler worker parallelism to reduce peak host memory during large NPU graph compilation; `GGML_OPENVINO_NPU_CONFIG` can override it. |
| `GGML_OPENVINO_NPU_REQUANT_POLICY`| String | `group-128` | NPU-only weight requantization layout. Use `group-128` for `Q4_0_128` or experimental `channel-wise` for `Q4_0_C`. Any other value fails during model loading. |
| `GGML_OPENVINO_NPU_FAST_MASK` | Boolean | `0` | NPU-only. Build the static prefill attention mask directly into the input tensor, skipping an intermediate host allocation + full-tensor copy per chunk. Numerically identical to the default path. |
| `GGML_OPENVINO_NPU_L0_HOST_TENSORS`| Boolean | `0` | NPU-only. Back the KV-cache / compute buffers with Level Zero host memory so the plugin imports them without an extra host-to-device copy each infer, cutting prefill KV I/O time. Falls back to plain host memory if the L0 allocation is unavailable. |
| `GGML_OPENVINO_NPU_KV_SLICE` | Boolean | `0` | NPU-only. Compile static prefill graphs and bind prefill KV-cache tensors at the active attention length instead of the full context capacity. Decode retains its fixed full-context graph. The prefill model is recompiled when the aligned attention length changes. |
| `GGML_OPENVINO_STATEFUL_EXECUTION`| Boolean | `0` | Enable stateful KV cache for better performance. Recommended on CPU, GPU. |
| `GGML_OPENVINO_DISABLE_CACHE` | Boolean | `0` | Disable the in-process compiled-model / decoder cache (cache is on by default). Set to `1` to disable. |
| `GGML_OPENVINO_DISABLE_KV_SLICE` | Boolean | `0` | Disable the KV-cache input-tensor slicing optimization (slicing is on by default on CPU/GPU). Set to `1` to disable. |
| `GGML_OPENVINO_KV_SCATTER_ELEMENTS` | Boolean | `0` | Use `ScatterElementsUpdate` instead of `ScatterUpdate` for non-stateful single-row KV writes. Intended for NPU decode paths where `ScatterUpdate` copies the full destination tensor to update one row. |
| `GGML_OPENVINO_DISABLE_KV_STATE_RELAYOUT` | Boolean | `0` | Disable the stateful KV-state sequence-axis relayout (relayout is on by default). It moves the KV state sequence axis from dim 1 to dim 2, so the GPU plugin can append new tokens in place instead of copying the whole state every token, and the reader side no longer transposes the whole accumulated state. Set to `1` to disable. |
| `GGML_OPENVINO_TOKEN_EMBD_I8` | Boolean | `0` | NPU-only. Keep `token_embd.weight` from widening Q6_K to FP16 by using the normal int8 compressed-weight layout instead. Reduces embedding-table memory at possible accuracy/performance cost. |
| `GGML_OPENVINO_TOKEN_EMBD_I4` | Boolean | `0` | NPU-only. Requantize `token_embd.weight` to group-128 int4. Intended mainly for tied embeddings, where compressed-row gather can read only the selected packed rows before dequantization. |
| `GGML_OPENVINO_NPU_KEEP_Q4_0` | Boolean | `0` | NPU-only experimental toggle. Keep native `Q4_0` weights instead of regrouping them through the NPU requant policy. Can avoid requantization work and extra scale storage changes, but the resulting group-32 graph may be unstable on current NPU drivers. |
| `GGML_OPENVINO_MANUAL_GQA_ATTN` | Boolean | device-based | Tri-state. When **unset**, manual GQA attention is enabled by default on `GPU` and disabled on other devices. Set to a positive integer to force-enable, or `0` to force-disable. |
| `GGML_OPENVINO_MEMORY_OPTIMIZE` | Boolean | `0` | Umbrella switch for compile-time memory reductions. Enables `GGML_OPENVINO_REDUCE_COMPILE_MEM` and, on GPU, `GGML_OPENVINO_RELEASE_WEIGHTS` unless those fine-grained variables are explicitly set. |
| `GGML_OPENVINO_REDUCE_COMPILE_MEM`| Boolean | inherits from `GGML_OPENVINO_MEMORY_OPTIMIZE` | Reduce compile-time host memory use by streaming weight requantization and avoiding extra weight-node materialization where possible. Set explicitly to override the umbrella switch. |
| `GGML_OPENVINO_RELEASE_WEIGHTS` | Boolean | inherits from `GGML_OPENVINO_MEMORY_OPTIMIZE` on GPU | GPU-only. Release host weight buffers after the compiled model cache can reuse the device/plugin copy. Requires stable graph shapes; dynamic workloads that need recompilation should leave this disabled. |
| `GGML_OPENVINO_SPILL_DIR` | String | `not set` | Directory for a disk-backed weight buffer. When set, the repacked weight buffer is mapped from an unlinked file on this path instead of anonymous memory, so its pages are reclaimable under memory pressure instead of staying pinned, cutting the load-time host memory peak. Must point at real storage; a tmpfs mount (e.g. `/tmp` on many systems) backs it with RAM and makes the peak worse. |
| `GGML_OPENVINO_REQUANT_KQUANT` | String | `not set` | Requantize Q6_K/Q5_K weights (and matching MoE expert weights) to a 4-bit target instead of the default Q8_0_C, trading accuracy for less memory traffic. One of `q4_sym128` (Q6_K/Q5_K only), `q4_sym128_all` (Q4_K too, drops its per-group zero point), `q4_asym64_all` (Q6_K/Q5_K/Q4_K, keeps a real zero point at group 64), or `native` (no requantization). |
| `GGML_OPENVINO_PROFILING` | Boolean | `0` | Enable execution-time profiling. |
| `GGML_OPENVINO_DUMP_CGRAPH` | Boolean | `0` | Dump the GGML compute graph to `cgraph_ov.txt`. |
| `GGML_OPENVINO_DUMP_IR` | Boolean | `0` | Serialize OpenVINO IR files with timestamps. |
Expand Down
Loading