Pre-lanzamiento / compilación continua: esta es una compilación experimental, no una versión estable.
hexagon: actualizaciones de escalabilidad en matmul y flash-atten (#29974) * hexagon: particionado de flash_attn en paralelo por cabezas para multinúcleo con división de filas En el modo de división de filas cada núcleo calcula su fragmento de fila de salida de cada MUL_MAT, pero flash_attn se particionaba previamente por tokens de Q (división plana qrow) en lugar de por cabezas. Esto obligaba a cada núcleo a leer toda la caché KV (todos los n_kv_heads), anulando el beneficio de ancho de banda de memoria del multinúcleo en flash_attn. Se cambian los kernels flash_attn de HMX y HVX para particionar por cabezas KV cuando n_kv_heads es divisible por n_cores: el núcleo i procesa exclusivamente las cabezas [i*n_kv_heads/N, (i+1)*n_kv_heads/N), leyendo solo su fragmento de cabezas de la caché KV. Se recurre a la división original por bloques de tokens cuando n_kv_heads % n_cores != 0 (p. ej. Gemma-4 con 2 cabezas KV en 4 núcleos). Controlado por GGML_HEXAGON_FA_HEAD_SPLIT (por defecto 1 = activado). El indicador se empaqueta en el bit 1 del byte kparams existente is_dst_fp32 para mantenerse dentro del límite del blob kernel_params de 128 bytes. Mejoras medidas a 4c row-split (PP t/s, ubatch=1024): Qwen3-0.6B: 6977 -> 11026 (+58%) llama-3.2-3B: 3717 -> 5522 (+49%) Qwen3.5-4B: 2739 -> 2855 (+4%) Gemma-4 MoE: sin cambios (el FFN MoE domina, ruta de fallback) TG no cambia (flash_attn es una pequeña fracción del tiempo de decodificación respecto al costo de matmul+barrier por capa). * hex-fa: limpieza de kern_params y selección de head-split * hex-fa: añadir la opción -fa-head-split a run.py * hex-mdev: actualizar el solucionador de matmul para tener en cuenta el trabajo reducido en escenarios de row-split * hex-mmid: mejor división del trabajo por expers en escenarios multi-dev * hex-fa: actualizar el gating de HMX según el barrido de model/n-hvx/ctx-len * hex-fa: precalcular softcap/scale en el host * hexagon: aplanar matmul a 2d para usar HMX en multi-secuencia * hex-mm: limpieza de kparams y uso del mapeo de colapso de 3/4D -> 2D * hex-mm: corregir errata en el fallback de colapso * hex-mm: otra pasada para nombrar de forma consistente los tensores act * hex-mm: añadir soporte para colapsar dimensiones en matmuls fusionados * hex-build: corregir errores de compilación en WoS * hex-mm: asegurarse de imponer el stride de dst en can_collapse * hex-fa: añadir un commit de una línea para la comprobación de head-split * hex-fa: eliminar la variable local head_split sin usar * hex-fa: reforzar las comprobaciones de can_split * hex-mm: actualizar las rutas no fusionadas para usar act en lugar de src1 * hex-mm: asegurarse de comprobar todos los dsts para la división * hexagon: corregir la dirección del segundo fragmento de pesos en el prólogo del matmul HMX por lotes * hexagon: activación F16 y N irregular en el matmul HMX * hex-mm: reforzar las comprobaciones de ragged/split en casos mdev * hex-mm: habilitar la fusión MM para activaciones F16 * hex-mm: pasar tamaños tiled al solucionador en rutas fusionadas * hex-mmid: eliminar divisiones escalares de los bucles de mapeo de expertos * hex-mmid: imposición adecuada de seguridad de cacheline para las divisiones mdev * hex-mm: mejorar el solucionador para escenarios de split mdev y el manejo de colas * hex-mm: eliminar comprobaciones redundantes * hex-mm: corregir que el HMX MUL_MAT_NX fusionado descarta la última tesela parcial para pesos cuantizados * hex-mm: mejor manejo de formas irregulares (elimina el memset escalar de vtcm) --------- Co-authored-by: ebateni Co-authored-by: Jhen-Jie Hong Co-authored-by: Yiwei ShaoSitio web: - https://llama.app
Atestaciones: - https://github.com/ggml-org/llama.cpp/attestations/52957661
macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI habilitado) DESACTIVADO - macOS Intel (x64) - XCFramework de iOS
Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - Bibliotecas CUDA 12.8 - Ubuntu x64 (CUDA 13) - Bibliotecas CUDA 13.4 - Ubuntu arm64 (CUDA 13) - Bibliotecas CUDA 13.4 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, GPU Adreno, NPU Hexagon) - guía de configuración
Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, GPU Adreno, NPU Hexagon) - guía de configuración
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.4 DLLs - Windows arm64 (CUDA 13) - CUDA 13.4 DLLs - Windows x64 (Vulkan) - Windows arm64 (Vulkan) - Windows x64 (OpenVINO) - Windows x64 (SYCL) - Windows x64 (ROCm 10.0)
openEuler: - DESACTIVADO - openEuler x86 (310p) - openEuler x86 (910b, ACL Graph) - openEuler aarch64 (310p) - openEuler aarch64 (910b, ACL Graph)
UI: - UI