explosion / explosion/cython-blis

Installation failure on Termux/Android (aarch64) due to architecture-specific kernel

Open
#157 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
239
Forks
45
PR merge metrics
No merged PRs in 30d

Description

### Description
When attempting to install `cython-blis` on Termux (Android, aarch64), the build fails during the compilation of assembly kernels.

### Error
```
blis/_src/kernels/armv8a/3/bli_gemm_armv8a_asm_d6x8.c:78:1: error: inline assembly requires more registers than available
```

### Cause
The build system automatically detects the architecture as `aarch64` and defaults to the `cortexa57` configuration, which forces aggressive optimization flags (`-mtune=cortex-a57`). The inline assembly kernels for this architecture impose constraints that exceed the register availability in the Termux Clang environment.

### Solution
You can bypass the optimized, architecture-specific assembly kernels by setting the `BLIS_ARCH` environment variable to `generic` before running the installation:

```bash
export BLIS_ARCH=generic
pip install .
```

This ensures that more compatible reference kernels are used. The full test suite passes with this configuration.

### Environment
- OS: Android (Termux)
- Arch: aarch64 (Cortex-A55)
- Python: 3.14
- Compiler: Clang 21.1.8

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the Termux/aarch64 installation using the reported Clang environment and the BLIS_ARCH=generic workaround. Start with blis/_src/kernels/armv8a/3/bli_gemm_armv8a_asm_d6x8.c and trace how the build selects cortexa57; the issue does not specify whether the intended result is an automatic fallback, a build change, or documentation. Done should include a successful install and passing full test suite.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, python
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.