skainet-backend-native-cpu: JVM artifact ships no linux-arm64 libskainet_kernels.so → silent ~1000× reference-kernel fallback on ARM Linux
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 58/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- cmake, kotlin, linux
- Área
- backend, build-system, performance
Línea de trabajo
Start with the skainet-backend-native-cpu native CMake build and the JVM artifact packaging configuration; the issue says CMake already supports aarch64 and identifies the missing native/linux-arm64/libskainet_kernels.so resource. Check how the existing Linux, macOS, and Windows libraries are built and bundled, then determine how CI can build and include the ARM Linux library. Done when the published JVM artifact contains that library and ARM Linux loads a native kernel instead of falling back to the reference decoder.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The published skainet-backend-native-cpu 0.61.0 JVM artifact bundles libskainet_kernels for linux-x86_64, macos-arm64 and windows-x86_64 only. There is no native/linux-arm64/libskainet_kernels.so, although NativeLibraryLoader already resolves that path ("aarch64", "arm64" -> "arm64").
On a linux-arm64 JVM, the loader finds nothing, so KernelDispatch has no kernel for packed weights and falls back to the reference decoder:
[SKaiNET] KernelDispatch: no kernel registered for matmul (activation=Dense(bytesPerElement=4), weight=BITNET_B1_58, order=ROW_MAJOR); falling back to the decoding reference kernel (~1000x slower). Install a kernel pack (e.g. KernelPacks.install() + FfmRowMajorKernelPack.install()) before the first forward. Further fallbacks are not reported.
Repro
- Board: Arduino Ventuno Q (QCS8275, 4× Cortex-A78C + 4× A55), Ubuntu 24.04, Temurin 21.0.12.1 (aarch64).
- SKaiNET-transformers
develop@ a92d65e::llm-apps:skainet-cli:shadowJar. unzip -l skainet-all.jar | grep native/shows onlylinux-x86_64,macos-arm64andwindows-x86_64.java --enable-preview --add-modules jdk.incubator.vector -jar skainet-all.jar -m ggml-model-i2_s.gguf -s 32 "The capital of France is"(BitNet b1.58 2B4T): one thread sits inReferenceMatmulKernel→BitNetB158TensorData.dequantizeBlock, with 0 tokens after 10.5 min.
Workaround (verified)
I cross-built the library from skainet-backends/skainet-backend-native-cpu/native at tag 0.61.0 and added it to the jar:
cmake -S native -B b -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_BUILD_TYPE=Release
cmake --build b --target skainet_kernels
mkdir -p native/linux-arm64 && cp b/libskainet_kernels.so native/linux-arm64/
jar uf skainet-all.jar native/linux-arm64/libskainet_kernels.so
With that, the same run produces correct greedy output at 1.6–1.8 tok/s instead of the reference fallback.
Ask
- Build and bundle
native/linux-arm64/libskainet_kernels.soin the JVM artifact. The CMake file already handlesaarch64cross builds (-march=armv8.2-a+fp16+dotprod, with NeoGPU pinned toarmv8-a). A CI job usinggcc-aarch64-linux-gnuor an arm64 runner would cover it. - Consider making the "no kernel registered → reference fallback" message an error on platforms where a native pack is expected, or at least naming the missing resource path.
Related: #920 (mobile/Apple/Android JNI; this issue is the plain linux-arm64 JVM case: Raspberry Pi, Qualcomm IoT boards, Graviton).
- Lenguaje dominante
- Kotlin
- Estrellas
- 52
- Forks
- 15
- Merge medio
- 23 h 34 min
- PR fusionados (30 d)
- 45
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de SKaiNET-developers/SKaiNET
-
native-cpu: -Wreturn-type in skainet_row_threads.c:150 (worker fn has no return)Posiblemente ocupada @Doomguy-BFG9000 la tomó hace 1 día. Abiertogood first issue size:xs skill:native
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
SKaiNET-developers/SKaiNET#1358 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
coding good first issue platform size:xs skill:js sub-issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SKaiNET-developers/SKaiNET#1232 ·
Los mantenedores suelen responder en 1 día
-
Ternary decode on 4× Cortex-A78C: row-thread pool only 40–60 % busy, 1.8 tok/s (BitNet 2B4T) — dispatch-bound, not bandwidth-boundPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertocompute-backend research skill:native
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
SKaiNET-developers/SKaiNET#1357 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Ground truth: add Kotlin/Native target(s) to skainet-test-groundtruth (jvm/android only today)Abiertoenhancement platform skill:native sub-issue
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
SKaiNET-developers/SKaiNET#1301 ·
Los mantenedores suelen responder en 1 día
-
compute-backend skill:android tracking
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
SKaiNET-developers/SKaiNET#1282 ·
Los mantenedores suelen responder en 1 día
Todos los issues de SKaiNET-developers/SKaiNET
Issues similares
-
bug Missing saved game
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
yairm210/Unciv#15826 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
AniTrend/anitrend-v2#1344 ·
Los mantenedores suelen responder en 1 día
-
Non-standard unsaved file dialogAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
zhanghai/MaterialFiles#1659 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Droid-Deck/DroidDeck#1098 ·
Los mantenedores suelen responder en 1 día
-
Blank screen in Download tab after searching with no results and switching tabsPosiblemente ocupada @mangod12 la tomó hoy. Abiertobug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
kiwix/kiwix-android#5211 ·
Los mantenedores suelen responder en 1 día