The DragonArray black-and-white Silkie goblin

LoongArch64 performance work

Loongson, without the scalar fallback.

Wheels, patches, benchmarks, and low-level utilities built to use LSX and LASX on the hardware you already own.

Independent community engineering for the Loongson 6000-series and other LASX-capable systems.

Current tracks

One place for the whole Loongson toolbench.

NumPy was the first release, not the boundary. DragonArray collects usable artifacts and the evidence behind them across the software stack.

01 / ARRAY COMPUTING Available now

DragonArray NumPy patch set

A NumPy 2.5.0-dev patch and wheel set that opens more 256-bit LASX dispatch paths, adds vectorized math kernels, and fixes a backend primitive.

Ships as
Python 3.12–3.14 wheels + source patch
Measured on
Loongson 3A6000 @ 2.0 GHz
Headline
1.81× raw geomean across 135 pairs
02 / MACHINE LEARNING Available now

TensorFlow wheels

TensorFlow 2.21.0 and complete dependency wheel sets for CPython 3.13 on current Loongson systems.

Available for
3A6000 / LA664 + LASX; 3A5000/3B5000 + LSX
Ships as
TensorFlow 2.21.0 + dependency wheels
Pending
3C5000 LASX build expected within a week; use the 3A5000 bundle meanwhile at reduced performance
03 / CRYPTOGRAPHY Available now

BLAKE3 LoongArch SIMD

A LoongArch SIMD port of BLAKE3 with architecture-specific acceleration for Loongson systems.

Layer
BLAKE3 hashing implementation
Ships as
loongarch-simd source branch
Target
LoongArch SIMD on Loongson systems

What belongs here

Artifacts you can use. Evidence you can inspect.

Architecture work is only useful when the fast path survives contact with real machines, real toolchains, and real users. Every project is organized around that handoff.

01

Installable builds

LoongArch64 wheels and packages that remove the cross-build scavenger hunt.

02

Source patches

Reviewable changes with the upstream boundary and new implementation stated plainly.

03

Benchmarks

Same-machine comparisons with source revision, compiler, clock, and dispatch disclosed.

04

Utilities

Focused ports and low-level tools that make Loongson systems more useful.

Shipped first / NumPy

More of the 3A6000 stays in 256-bit code.

The DragonArray patch extends NumPy's existing LoongArch SIMD work with missing LASX pieces, new vectorized ufunc kernels, broader dispatch wiring, and runtime feature detection.

FLOAT162.77×20 operation pairs
FLOAT321.61×27 operation pairs
FLOAT641.25×27 operation pairs
INTEGER1.86×59 operation pairs

Wheel index

Install it inside a virtual environment.

Python 3.12, 3.13, and 3.14 wheels are available for linux_loongarch64.

~/venvpip
$ pip install --upgrade --force-reinstall \
    --no-index --find-links https://dragon-array.org/wheels \
    "numpy==2.5.0.dev0+dragon.unofficial.1"

Hardware focus

The 6000-series is the center of gravity.

Work is aimed at modern 64-bit LoongArch systems with LSX and LASX. Compatibility is recorded per artifact instead of assumed from the architecture name alone.

Measured today

Loongson 3A6000

The current DragonArray build and its benchmark corpus were built and run on this desktop-class chip.

Broader target

3C6000 + LASX family

Upcoming package work is being structured for 3C6000 and related LASX-capable 6000-series systems.

Per-project truth

Dispatch, not guesswork

Each release names the CPU features, compiler, runtime detection, and known compatibility boundary it actually uses.

Working rules

Fast is a claim. The rest is the receipt.

01

Compare like with like.

Same source base, same compiler, same machine, and the best available dispatch path on both sides.

02

Credit the right layer.

Upstream primitives, DragonArray additions, bug fixes, and composed kernels are accounted for separately.

03

Publish the boundaries.

Experimental status, supported Python versions, accuracy notes, and hardware limitations stay next to the download.