New tools for boards with scattered harvest patterns where unlocked
CUs may be defective:
- bc250-compute-verify.sh: Heavy Vulkan correctness test (FP32 FMA,
integer, bitwise, LDS) with per-element golden comparison
- bc250-cu-health-test.sh: Reboot-resuming 20-WGP isolation test using
amdgpu.disable_cu. Results to /var/lib/bc250-cu-health-test/results.tsv
- bc250-cu-mask.sh: Generates selective disable_cu= config from failed
WGPs — enables e.g. 38 of 40 CUs with bad ones masked
- cu_map.sh: Updated with --health overlay showing stock + healthy/failed
Usage:
sudo ./scripts/bc250-cu-health-test.sh start # full 20-WGP test
./scripts/bc250-cu-mask.sh --results results.tsv # generate mask
./scripts/cu_map.sh --health results.tsv # visual overlay
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The patch now uses amdgpu_gfx_parse_disable_cu + mutex_lock as context
anchors instead of line numbers. These function calls are present in
gfx_v10_0_get_cu_info() across all kernel versions (6.1+).
Removed fake git index hashes. Replaced em-dash with -- for ASCII safety.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Runs llama-bench pp512 at 24 CU, 40 CU, then 24 CU again with cooldown
between each state. Uses UMR to toggle SPI_PG_ENABLE_STATIC_WGP_MASK.
Auto-detects model, bench binary, and UMR paths.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Single kernel patch now handles all three register writes during driver
init. No UMR or systemd service needed post-boot.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-enable all 40 CUs on the AMD BC-250 (gfx1013 / Cyan Skillfish) via
two register writes during amdgpu driver init:
- CC_GC_SHADER_ARRAY_CONFIG: clears harvest enumeration mask
- SPI_PG_ENABLE_STATIC_WGP_MASK: enables hardware wave dispatch to all WGPs
Both required — neither alone is sufficient. Verified 1.61x compute
scaling at 1500MHz (pp512: 230 → 372 tok/s) via controlled A/B/A testing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>