Pre-Release / Continuous Build: Dies ist ein experimenteller Build, keine stabile Version.
cuda: kachel den Lightning-Indexer über Keys und Tokens für 4 Heads (#29901) * cuda: kachel den Lightning-Indexer über Keys und Tokens für 4 Heads Mit zu wenigen Heads für eine wmma-Kachel bewertet ein Block 64 Keys gegen 8 Tokens: die Keys werden einmal in Half-Präzision abgelegt, die Queries einen Head nach dem anderen, und jeder Thread besitzt einen Key für zwei Tokens, sodass kein Dot-Product eine threadübergreifende Reduktion benötigt. Batches kleiner als eine Token- Kachel behalten den Vektor-Kernel. test-backend-ops misst 4 Heads. * cuda: multipliziere die Lightning-Indexer-Kachel in float Adresse das Review von am17an: die half2-Produkte laufen über, sobald ein einzelnes q * k den f16-Bereich überschreitet. Die Queries bleiben in float im Shared Memory und jedes half2 der Keys wird einmal für beide Tokens verbreitert, sodass jedes Produkt und jede Summe in float berechnet wird. * cuda: verbreitere jeden Lightning-Indexer-Key einmal für alle Heads Der Tile-Kernel legt die Queries und Gewichte jedes Heads auf einmal ab, so dass jedes Key-Element einmal von half verbreitert wird und alle Heads speist, mit einer einzigen Barriere. F16-Keys werden ohne einen float-Umweg in die Kachel kopiert. Die Keys in float im Shared Memory zu halten, misst sich langsamer, die Occupancy sinkt. * cuda: verhindere, dass die Lightning-Indexer-Kachel auf ROCm Register überschreibt Jeder Thread des Tile-Kernels bewertet nun zwei Keys für einen einzelnen Token, so dass ein Warp seinen Token teilt und die Query-Lesevorgänge Broadcasts sind: sechs Shared-Reads pro Elementpaar statt neun für dieselben Produkte. Die innere Schleife ist um 8 entrollt, was gfx908 bei 63 VGPRs ohne Spill hält, wo die vollständig entrollte Schleife über tausend benötigte, und macht den Kernel auf einem R9700 36x schneller und auf CUDA leicht schneller.Website: - https://llama.app
Attestierungen: - https://github.com/ggml-org/llama.cpp/attestations/52734616
macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI aktiviert) DEAKTIVIERT - macOS Intel (x64) - iOS XCFramework
Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - CUDA 12.8 Bibliotheken - Ubuntu x64 (CUDA 13) - CUDA 13.4 Bibliotheken - Ubuntu arm64 (CUDA 13) - CUDA 13.4 Bibliotheken - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - Einrichtungsanleitung
Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - Einrichtungsanleitung
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: - DEAKTIVIERT - openEuler x86 (310p) - openEuler x86 (910b, ACL Graph) - openEuler aarch64 (310p) - openEuler aarch64 (910b, ACL Graph)
UI: - UI