hexagon: 최신 모델을 위한 MUL_MAT, MUL_MAT_ID, FLASH_ATTN 및 GDN 정리와 최적화 ([#23989](https
요약
llama.cpp의 Hexagon DSP 최적화 업데이트로, 행렬 곱셈(matmul), Flash Attention, GDN 연산의 성능을 개선하고 중복 로직을 제거했습니다. Qwen3.5-2B 모델의 특정 오류를 수정하고 다양한 데이터 타입에 대한 효율적인 커널 라우팅을 지원합니다.
핵심 포인트
- Hexagon DSP를 위한 행렬 곱셈(matmul) 성능 향상 및 중복 로직 제거
- Qwen3.5-2B 모델에서 발생하던 특정 RMS-norm 오류 수정
- Flash Attention(FA) 및 Gated Delta Net(GDN) 연산 최적화
- F16/F32 타일링 및 파이프라인 모드 재도입을 통한 효율성 증대
hexagon: 최신 모델을 위한 MUL_MAT, MUL_MAT_ID, FLASH_ATTN 및 GDN 정리와 최적화 (#23989)
-
hex-mm: F32 * F32 -> F32 행렬 곱셈 (matmuls)에 대한 초기 지원
-
hex-rms-norm: fused rms_norm_mul에서 src1 stride 사용 오류 수정
-
hex-ops: 이를 덮어쓰는 (clobber) 연산(ops)에서 spad 포인터 초기화
이는 fused rms-norm-mul이 실패하던 특이한 사례를 해결하며, 이는 qwen3.5-2B 모델에서 특정 search op-bath 크기에서만 발생했습니다.
- hmx-mm: HMX에서 F32 * F32 -> F32 matmul_2d 지원 추가
이를 위해 Q4_0 * F32 -> F32 matmul을 사용하기로 결정했습니다.
Q4_0는 역양자화(dequantized)되어 F16으로 타일링(tiled)되며, 여기서는 F32를 양자화(quantize)하여 F16으로 타일링합니다.
매우 단순하면서도 상당히 효율적입니다.
-
hmx-mm: f16 2D 행렬 곱셈 (matmuls)을 다른 모든 유형에 사용되는 것과 동일한 커널(kernel)을 통해 라우팅
-
hmx-mm: 이전에 사용했으나 훨씬 더 범용적인 방식인 파이프라인(pipelined) 대 비파이프라인(non-pipelined) 모드 재도입
이번 업데이트는 행렬 곱셈 (matmul) 성능을 더욱 향상시키는 동시에, 서로 다른 경로에 존재하던 대부분의 중복 로직을 제거합니다.
-
hmx-fa: matmul 업데이트와 유사하게 파이프라인을 약간 개선
-
hmx-mm: HMX를 위한 MAT_MUL_ID 지원의 초기 버전
-
hmx-mm: MUL_MAT_ID에 대한 mxfp4 처리 수정
-
hex-gdn: GATED_DELTA_NET 최적화
DMA 프리페치(prefetch)/더블 버퍼링(double-buff), HVX를 이용한 모든 요소의 벡터화(vectorize), 즉 평소 하던 방식대로 진행되었습니다 :)
-
hmx-mm: fastmod를 사용할 수 있는 사례를 하나 더 발견
-
hexagon: 약간의 성능 향상을 위해 DCVS 설정 업데이트
-
hmx-fa: hmx-flash-attn에서 fastdiv 사용
-
hmx-fa: 내부 루프(inner loop)를 방해하지 않도록 기울기(slope) 값 사전 계산
-
hvx-utils/fa: powf 및 logf를 위한 새로운 HVX 헬퍼(helpers) 추가 및 이를 사용하여 FA alibi 속도 향상
-
hex-ops: 일부 소스(srcs)가 비어 있을 때 소스 텐서(src tensors)의 순서를 망가뜨리던 퓨전(fusion) 로직의 버그 수정
-
hex-fa: sink가 있거나 차원(dims)이 정확하지 않은 경우 HVX로 올바르게 폴백(fallback)
macOS/iOS:
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) DISABLED
Android:
Windows:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (SYCL) DISABLED
- Windows x64 (HIP)
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
UI:
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기