Description
Device: Lenovo Yoga Tab Plus (TB520FU)
CPU: Snapdragon 8 Gen 3
RAM: 12 GB LPDDR5X
OS: Android 16 (Termux environment)
Architecture: aarch64 (ARMv8)
Python: 3.14.6
WIMF Version: 2.2.0 (C++ native build)
SIMD: scalar (NEON not active)
Steps to reproduce:
- Installed WIMF on Termux via
pip install -e . --no-build-isolation
- Patched
third_party/zstd/zstd.c to handle Android Bionic's missing qsort_r
- Built successfully with native C++ extension
- Ran
wimf_only_benchmark.py --input originals --threads 8
- Observed extremely slow performance across all presets
Actual behavior:
- C++ native extension is active (
"native": true)
- SIMD path is
"scalar" (NEON not being used)
- Encoding is significantly slower than expected for Snapdragon 8 Gen 3
- Q10 Fast took several minutes
Expected behavior:
- NEON should be detected and used
- Performance should be at least 2-3× faster with NEON
Additional context:
- Android Bionic lacks
qsort_r, which required patching Zstandard
- The patch works, but performance is still poor
- This may be due to NEON not being enabled in the build or runtime detection
Attachments:
wimf.runtime_info() output:
{
"architecture": "aarch64",
"simd": "scalar",
"native": true,
"codec_version": "2.2",
"effective_threads": 8
}
Related issues:
- Zstandard
qsort_r compatibility on Android
- NEON detection/usage in WIMF
Priority: High (ARM/mobile is a key target platform)
Suggested fixes:
- Investigate NEON build flags for aarch64
- Check runtime NEON detection in WIMF
- Verify pybind11 build configuration for ARM SIMD
Description
Device: Lenovo Yoga Tab Plus (TB520FU)
CPU: Snapdragon 8 Gen 3
RAM: 12 GB LPDDR5X
OS: Android 16 (Termux environment)
Architecture: aarch64 (ARMv8)
Python: 3.14.6
WIMF Version: 2.2.0 (C++ native build)
SIMD: scalar (NEON not active)
Steps to reproduce:
pip install -e . --no-build-isolationthird_party/zstd/zstd.cto handle Android Bionic's missingqsort_rwimf_only_benchmark.py --input originals --threads 8Actual behavior:
"native": true)"scalar"(NEON not being used)Expected behavior:
Additional context:
qsort_r, which required patching ZstandardAttachments:
wimf.runtime_info()output:{ "architecture": "aarch64", "simd": "scalar", "native": true, "codec_version": "2.2", "effective_threads": 8 }Related issues:
qsort_rcompatibility on AndroidPriority: High (ARM/mobile is a key target platform)
Suggested fixes: