expXa

Research

Each study asks one question about the engine and ends with a decision. Ideas that didn’t pay off stay here alongside the ones that did, with their raw numbers.

Engine comparisons

expXa against PXA on the same weights, hardware and settings.

  1. expXa vs PXA 4 on Qwen3.6-35B-A3B Q6_K

    Both engines with and without MTP on two V100s: 48 matched requests from 512 to 65,536 input tokens, plus retrieval and cancellation checks.

    No change
  2. expXa vs PXA 4 on Qwen3-30B-A3B Q4_K_M

    From 49.4 s to 24.3 s on a 4,096-token request, now level with PXA 4’s 24.4 s. Ported CPU expert work did most of it; parallel activation preparation added about 6%.

    Adopted
  3. Dense models across three engines

    On Qwen3.5-9B and 0.8B, expXa stays within 2% of PXA 3.1. PXA 4 is 11–15% faster on the 0.8B and level on the 9B.

    No change

Kernel and runtime experiments

Changes to individual CPU and GPU operators, measured on their own and, where they were adopted, in serving.

  1. Reordering expert work for weight reuse

    About 4% less operator time at 255 active jobs; slower for smaller batches and for the paired kernel.

    Not adopted
  2. Switching CPU tile modes at runtime

    Three tile modes in one process with bit-identical output. With every expert on the CPU, hoisted VNNI tiles raised prefill 25–31%.

    Adopted
  3. Warp sharing in expert and attention kernels

    The expert kernel already shares what helps. Broadcasting rescaling values in 4×8 attention made it 19% slower.

    Not adopted
  4. VNNI CPU tiles in serving

    Outputs unchanged on both MoE models; no measurable serving speedup at 40 CPU expert layers.

    Adopted

Every measured configuration

All scored runs on Qwen3-30B-A3B Q4_K_M with 128 output tokens. Sessions, hardware and expert placement differ between rows, so compare engines only within the same session and GPU.

SessionGPUEngineSetupInputPrefill tok/sDecode tok/sRequest sRange sRuns
3 NovV100expXa 0982parallel activation prep512203.9737.286.005.77–6.073
3 NovV100expXa 0982parallel activation prep4,096201.5332.9624.2724.16–27.103
3 NovV100expXa 0982old prep path (ablation)512190.3438.166.005.99–6.053
3 NovV100expXa 0982old prep path (ablation)4,096189.3830.9325.8325.53–25.893
3 NovV100PXA 4.0.1control for 0982512180.8231.236.955.91–7.453
3 NovV100PXA 4.0.1control for 09824,096202.0030.4124.3824.01–26.763
3 NovV100expXa a078reference for 0982512187.4337.756.136.00–6.252
3 NovV100expXa a078reference for 09824,096179.3432.4626.8126.17–27.442
3 NovV100expXa a078CPU expert path512191.9935.606.346.01–6.904
3 NovV100expXa a078CPU expert path4,096186.9233.1825.8225.68–25.894
3 NovV100PXA 4.0.1control for a078512209.5437.625.845.77–6.464
3 NovV100PXA 4.0.1control for a0784,096202.8033.6524.0123.66–26.264
2 NovV100Custom PXA 3.1serving build, re-measured512123.2432.948.107.71–8.523
2 NovV100Custom PXA 3.1serving build, re-measured4,096125.6131.1136.5636.51–39.683
2 NovV100Custom PXA 3.1isolated copy512108.5833.138.958.53–13.573
2 NovV100Custom PXA 3.1isolated copy4,096128.1330.1036.7734.53–40.923
2 NovV100PXA 4.0.1same settings512206.8537.425.855.76–7.833
2 NovV100PXA 4.0.1same settings4,096199.5729.3025.1623.59–27.933
2 NovV100expXa 208e21dsame settings51279.8531.9410.429.05–12.163
2 NovV100expXa 208e21dsame settings4,09690.7329.2149.4241.64–49.833
2 NovV100Custom PXA 3.1serving build, first pass512135.8936.067.347.19–7.383
2 NovV100Custom PXA 3.1serving build, first pass4,096135.5432.6634.1033.97–34.263
2 NovTitan XpexpXa 208e21d40 CPU expert banks51211.209.4359.6158.74–60.063
2 NovTitan XpexpXa 208e21d40 CPU expert banks4,09611.298.46378.47376.86–380.063
2 NovTitan XpexpXa 208e21d19 CPU expert banks51251.5823.9815.3015.20–15.353
2 NovTitan XpexpXa 208e21d19 CPU expert banks4,09651.2322.2585.6585.61–86.253
2 NovTitan XpPXA 4.0.119 CPU expert banks51271.0025.4512.2412.23–12.403
2 NovTitan XpPXA 4.0.119 CPU expert banks4,09670.7522.7563.5163.46–63.533
2 NovTitan XpexpXa 208e21d20 CPU expert banks51249.0924.2515.7115.52–15.893
2 NovTitan XpexpXa 208e21d20 CPU expert banks4,09649.2622.4188.8788.83–89.243
2 NovTitan XpPXA 4.0.120 CPU expert banks51267.9223.3113.0312.89–13.433
2 NovTitan XpPXA 4.0.120 CPU expert banks4,09667.5621.5966.4666.31–80.333

V100 rows use one V100-SXM2 32GB with a 19.2-core CPU quota and 40 CPU expert layers. Titan Xp rows use a 12GB card with a 3.3-core quota; the 19- and 20-bank rows place fewer experts on the CPU.

Engines that couldn’t be scored

  • PXA Overdrive: the option didn’t activate an Overdrive recipe for these weights, so there was nothing to measure.
  • Strata v0.2.10: its loader requires PLE tensors this model doesn’t have. We didn’t substitute other weights to force a comparison.

Data

Each download holds the per-run numbers behind a study: timings, output hashes, and paired ratios with their intervals where the study used them.

FileContents
engine-comparison-35b-a3b.json35B Q6_K engine comparison: 48 requests, MTP controls and functional checks
configurations.jsonEvery configuration above, with settings and individual runs
dense-models.json54 timed requests, sanity and recovery checks
tile-mode-control.jsonA/B runs, throttling, functional checks
vnni-serving.json72 before/after runs with paired intervals
warp-sharing.jsonPer-fixture timings for expert, MMA and vector kernels
expert-reuse-ordering.jsonFull sweep, confirmation and serial prototype