b9951
ggml-et: Initial ET backend (#24179)
-
ggml-et: Add performance logging
-
ggml-et: Quants helpers
-
ggml-et: Add MUL_MAT kernel
-
ggml-et: Add ROPE kernel
-
ggml-et: Add RMS_NORM kernel
-
ggml-et: Add GLU kernel
-
ggml-et: Add SOFT_MAX kernel
-
ggml-et: Add GET_ROWS kernel
-
ggml-et: Add CONT kernel
-
ggml-et: Add SET_ROWS kernel
-
ggml-et: Add MUL_MAT_ID kernel
-
ggml-et: Build et kernels as part of ggml
-
ggml-et: Embed kernels with fs fallback
-
ggml-et: Build fixes
-
ggml-et: Add MUL_MAT F32xF32 op
-
ggml_et: Add MUL_MAT_ID op
-
ggml-et: Disable offloading for debug
-
ggml-et: Refactor out block ops
-
ggml-et: ggml backend API changes
-
ggml-et: Add RESHAPE/TRANSPOSE to supported
-
ggml-et: Add CONT_F16
-
ggml-et: Add supported ops doc
-
gglm-et: Initial doc
-
ggml-et: Remove runtime import hacks
We can now import the runtime by a simple find_package(), so we
can cleanup the CMakeLists.txt.
- ggml-et: Fix GET_ROWS kernel
Fix lost batch dimension.
Also clean vibe-comments.
- ggml-et: Fix SET_ROWS kernel
Remove incorrect broadcasting guard.
-
ggml-et: Use custom instruction for fp32->fp16
-
ggml-et: Vectorize set_rows fp32->fp16
-
ggml-et: Fix ROPE kernel (yarn)
ggml-et: fix et_logf
WIP: Fix ramp
WIP: fix ROPE!
-
ggml-et: Better sinf
-
ggml-et: Fix SOFT_MAX
Add max_bias and sink support.
- ggml-et: Fix CONT
Reorder from contiguous write to read with atomic stores.
- ggml-et: Fix elmap kernel
Remainder handlin
-
ggml-et: Fix MUL_MAT MUL_MAT_ID remainders
-
ggml-et: Fix ET-SOC reference
-
ggml-et: Fix embed kernels scripts for old python
This allows GGML-ET to build on pre-3.8 python.
-
Add sysemu support with compile time flag
-DGGML_ET_SYSEMU=ON(#6) -
Example using ET-Soc-1 emulator configuration
Example usage:
cmake -B build -DGGML_CUDA=OFF -DGGML_ET=ON -DLLAMA_CURL=OFF -DGGML_CCACHE=ON
cmake --build build --config Release -j $(nproc)
time ./build/bin/test-backend-ops
./build/bin/llama-server \
--model Qwen3-0.6B-Q8_0.gguf \
--alias Qwen3-0.6B-Q8_0 \
-fa 0 \
--ctx-size 1024 \
--no-warmup \
--host 127.0.0.1 \
--port 8080-
build: proper dep tracking for kernels
-
support host using MOLD linker
-
initial multi core GET_ROW F32 implementation
-
vectorized q8 dequant
-
wip: cland warning clenaups and initial logging refactor
-
wip: message default message cleanup
-
chore: message cleanups
-
cmake cleanup
-
migrate to use platform provided functions
-
cmake back into subdir
-
support et_print() in kernels
-
fix: repair kernel building
-
perf: operations run async by default
-
debug: proper kernel dep tracking and error detection on kenrel launch
-
fix: kernel binary dep tracking and fixing get_rows_f32 erroring
-
perf: back to doing async kernel runs by default
-
perf: vectorize and parallel device memset
-
merge matmul work
-
misc: align allocation and enable all offload
-
misc: delete deadcode and respect memory limits
-
fix: repair tensor debug print
-
fix: loosen RMS_NORM op percision
-
feat: Q4_0 GET_ROWS
-
perf: FP32 MUL_MAT using TensorFMA
-
update limitations
-
perf: redue L1 load in compute_block_dot_product_q8_0
-
feat: save kernel mapping (name to id) when profiling is enabled
-
chore: memops cleanup
-
perf: parallelize softmax by rows
-
perf: vectorize 2nd phase of softmax
-
perf: ban GET_ROWS from offloaded
-
perf: vectorize and non-atomic for eltwise ops and sub support
-
perf: vectorize normal rope
-
perf: glu runs in parallel
-
merge: manually merge saqib's work on kernel fixes
-
perf: more vectorized RoPE
-
perf: parallelize mul_mat_id
-
perf: parallelize set_rows_f32
-
perf: vectorize softmax
-
feat: support kernel fusion and fuse RMS_NORM + MUL
-
fix: mostly resolve test-backend-ops failure in SOFT_MAX and ROPE
-
fix: bump max rope dims for gemma
-
feat: GeGLU and SCALE support to fully offload Gemma
-
perf: faster device memset
-
feat: get_rows supporting Q4_K and avoid cont cache coherent issues
-
better F32 MM
-
feat: NORM for ET backend
-
feat: SQR for ET backend
-
feat: UNARY on ET
-
feat: el_map support broadcasting for ET
-
feat: SUM_ROWS in ET backend
-
feat: more ops in ET backend
-
feat: WKV* operators in ET backend
-
perf: parallelize operators across cacheline instead of row
-
perf: parallelize get_rows on cacheline
-
wip: baseline FlashAttention for ET backend
-
wip: enough FA and CPY f32->f16 to run llama 3.1 fully offloaded with FA on
-
feat: f16 x f16 -> f32 MM using matrix engine
-
wip: f16 FlashAttention using matrix engine
-
wip: clean up
-
feat: barriers
-
perf: optimize FA_F16 in ET
-
perf: vectorize pack_k_for_transpose16
-
perf: prefetch next loop matrix tile
-
perf: FlashAttention 2nd MM uses TensorFMA and optimizations
-
cleanup: flashattention reorg
-
perf: optimizations and fixes
-
feat: L2SCP API and make FlashAttention support DV = 256 for gemma
-
perf: parallelize norms beyond single row
-
feat: GATED_DELTA_NET support and relaxed L2_NORM requirment
-
feat: loosen RMS_NORM, NORM, ROPE contingous req too
-
feat: repeat supports brocasting on dim 0 and loosen cont check
-
feat: FILL and DIAG operator
-
feat: loosen UNARY support chcek
-
feat: TRI support
-
feat: SOLVE_TRI support
-
feat: basic SET support
-
feat: loosen CONT req
-
perf: fp16_to_fp32 use ASM
-
feat: IMROPE support
-
feat: PAD support
-
feat: global barrier
-
fix: view must live on the same backend as backing tensor
-
feat: relax CONCAT in ET backend
-
feat: dead simple CUMSUM implementation
-
feat: basic SSM_CONV support
-
feat: loosen CONCAT req
-
feat: relax GATED_DELTA_NET and add SET support proper
-
cleanup: cleanup LCM math
-
feat: SWIGLU single input
-
feat: SSM_SCAN support
-
feat: el_map supports non aligned tensors in best effort
-
feat: basic GROUP_NORM support
-
feat: loosen MUL_MAT capablities slightly
-
feat: loosen MUL_MAT and GET_ROWS and add IM2COL
-
feat: special case for softmax 1x1x1x1
-
feat: loosen SOFT_MAX req in ET backend
-
fix: el_map unaligned acse fixes
-
perf: optimize zero_acc_vec in flash_attn_ext_f16_me
-
perf: use hart 1 for packing in MM and FA for FP16
-
feat: kernel semaphore
-
perf: better instruction sequence in FlashAttention
-
fix: gated_delta_net with proper masking
-
perf: better parallelization for GATED_DELTA_NET
-
perf: parallelize SSM_CONV over nr
-
perf: vectorize SSM_CONV
-
perf: optimize MUL_MAT for q8
-
feat: support Gemma 4
-
fix: support multi-device
-
feat: broader GLU support
-
feat: unary ops supports view
-
fix: repair fp16 MM using matrix engine
-
perf: handle large N GEMV better
-
perf: better q8_0 MM
-
perf: better set_rows
-
add back deleted files
-
fix: repair after merge
-
feat: POC version of uberkernel
-
feat: RMS_NORM in uberkernel
-
feat: add more kernels into usage
-
chore: clean up uberkernel compilation
-
perf: faster flash attention
-
perf: opt flash attention for large seq length
-
feat: loosen op bounds. clamp and mean support
-
perf: vectorize ssm_scan
-
perf: slightly faster FA
-
perf: FlashAttention parallel MM and load
-
perf: fuse Q8 MM and ADD
-
feat: basic conv kernel for ET
-
softMAx_test
-
set_rows_f32
-
get_rows and cont
-
testing
-
set_rows_exp
-
Junk addition
-
Narrowing the issue
-
Update flash_attn_ext_f16_me.c
Focusing FA_ext_f16_me
-
test
-
Eviction updated
-
Detailed cache eviction debug
-
mulmat
-
removeal of
BUILD_FOR_UBERKERNELflag -
cleaning...
-
fix: balance FCC0 count
-
feat: implement mul_mat and mul_mat_id for Q4_0 type
-
optimize uberkernel plan upload
-
add mul_mat q4 into uberkernel
-
enable gating flush to just uberkernel
-
update docs for ET
-
update op support for ET
-
et-backend: optimize Q4_0 and Q8_0 mul_mat_id row accumulations
-
et-backend: specialize mul_mat_id kernels for Q4_0 and Q8_0
-
et-backend: fix RoPE YaRN corr_dim formula and handle degenerate inputs
-
test-backend-ops: add DeepSeek-V2-Lite RoPE test coverage
-
et-backend: add Q4_0 mul_mat matrix-engine kernel using TensorFMA32
-
et-backend: vectorize Q4_0 matrix-engine dequantization
-
et-backend: support hybrid matrix/vector engine execution for Q4_0 mul_mat tail
-
et-backend: run partial-N tiles on matrix engine for Q4_0 mul_mat
-
et-backend: route Q4_0 mul_mat N < 53 to vecdot for better prefill latency
-
Update uberkernel.c
-
Update unary_f32.c
-
gemma 4
-
bisect gemma4: enable scale_f32 only
-
bisect gemma4: +rms_norm_f32
-
bisect gemma4: +rms_norm_mul_f32
-
bisect gemma4: disable rms_norm_mul_f32 -- BREAKS OUTPUT
-
bisect gemma4: +rope_f32 (skip rms_norm_mul)
-
bisect gemma4: +el_map_f32
-
bisect gemma4: +softmax_f32
-
bisect gemma4: +get_rows_f32
-
bisect gemma4: +glu_f32
-
bisect gemma4: +mul_mat_f32 +mul_mat_f32_matrix_engine
-
bisect gemma4: +mul_mat_f16 +mul_mat_f16_matrix_engine
-
bisect gemma4: +mul_mat_Q8_0 +mul_mat_Q4_0
-
bisect gemma4: +flash_attn_ext_f32 +flash_attn_ext_f16_me
-
bisect gemma4: +mul_mat_id_f32
-
bisect gemma4: +sum_rows_f32
-
bisect gemma4: +cont_f16
-
bisect gemma4: +fill_f32
-
bisect gemma4: +unary_f32 (all ops re-enabled except rms_norm_mul)
-
Update rms_norm_mul_f32.c
-
bisect2 gemma4 n64: +scale_f32 only
-
bisect2 gemma4 n64: +rms_norm_f32 +rope_f32
-
bisect2 gemma4 n64: +rms_norm_mul_f32 (with ET_UBERKERNEL eviction fix)
-
bisect2 gemma4 n64: +el_map +get_rows +glu +softmax (skip rms_norm_mul)
-
bisect2 gemma4 n64: all ops enabled except rms_norm_mul
-
bisect2 n64: test unary+cont+fill+sum_rows (no mul_mat/flash_attn)
-
bisect2 n64: +mul_mat_f32 +mul_mat_f32_matrix_engine
-
bisect2 n64: +mul_mat_f16 +mul_mat_f16_matrix_engine
-
bisect2 n64: +mul_mat_Q8_0 +mul_mat_Q4_0
-
bisect2 n64: +mul_mat_Q8_0 only (disable Q4_0)
-
bisect2 n64: +mul_mat_Q4_0 only (Q8_0 breaks)
-
bisect2 n64: +mul_mat_id +flash_attn_ext (skip Q8_0)
-
run-3: matmul + rms_norm_mul
-
run-4
-
Revert "run-4"
-
run5
-
changes after cleanup
-
cleanup before upstream
-
restrict changes into ET backend
-
move kernel embedding from Python to CMake
-
move uberkernel gen into CMake
-
apply clang format
-
update CMake style
-
update to match C and C++ style
-
use source ggml and quant headers instead of ET's
-
MROPE support
-
absorb view ops into same branch as none
-
fix bad rebase
-
add marty1885 to codeowners
-
oops
-
remove redundant newline
-
fix CI editor warnings
Co-authored-by: Vidas vidas@nuolat.lt
Co-authored-by: Gianluca Guida glguida@tlbflush.org
Co-authored-by: Gianluca Guida gianluca@nekko.ai
Co-authored-by: ubergarm leimgrub@gmail.com
Co-authored-by: SaqibAkram-10xE saqib.akram@10xengineers.ai
Co-authored-by: Rehan Qasim rehan.qasim@10xengineers.ai
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED
- macOS Intel (x64)
- iOS XCFramework
Linux:
- Ubuntu x64 (CPU)
- Ubuntu arm64 (CPU)
- Ubuntu s390x (CPU)
- Ubuntu x64 (Vulkan)
- Ubuntu arm64 (Vulkan)
- Ubuntu x64 (ROCm 7.2)
- Ubuntu x64 (OpenVINO)
- Ubuntu x64 (SYCL FP32)
- Ubuntu x64 (SYCL FP16)
Android:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows arm64 (OpenCL Adreno)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (OpenVINO)
- Windows x64 (SYCL)
- Windows x64 (HIP)
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
UI: