Cnuas Validation Matrix¶
Scope: Every Cnuas component, its validating tests, and their status · Version: `fd0f896-dirty` · Updated: 2026-08-03
This page answers one question: for each implemented feature, which test proves it works, and did that test pass?
The Product Roadmap records what is planned. This page records what is proven. The two are deliberately separate: a roadmap entry can be marked available only when a row here backs it with a named, passing test.
How to read this page¶
| Column | Meaning |
|---|---|
| Feature | The capability being validated |
| Test | The file or binary that validates it |
| Count | Number of test cases |
| Status | Result of the last recorded run |
| Gate | What must be present for the test to execute |
| Status | Meaning |
|---|---|
| Pass | Ran and passed on the reference host |
| Gated | Correctly skipped; needs hardware or a lab the reference host lacks |
| Manual | Exists, but is a standalone script that pytest does not collect |
| None | No automated test exists yet |
Summary¶
Recorded on the reference host (cnuas1). The pytest rows were recorded on
2026-08-03; the CnuasGPU rows were recounted on 2026-08-06 after the CnuasIR
and CnuasCC work landed.
| Suite | Collected | Pass | Gated |
|---|---|---|---|
Superproject tests/ (switch data plane, RDMA end to end) |
61 | 36 | 25 |
cnuas/ control plane |
52 | 52 | 0 |
tools/ build, image, and VM lifecycle tooling |
122 | 122 | 0 |
facility/ data-centre twin |
59 | 59 | 0 |
src/cnuaslink/ fabric switch and client |
18 | 18 | 0 |
| Total pytest | 312 | 287 | 25 |
| CnuasGPU host C smoke binaries (8 binaries, cases counted) | 442 | 442 | 0 |
| CnuasGPU Python tool tests (CnuasIR tools, CnuasCC front end) | 343 | 343 | 0 |
| CnuasGPU device smoke binaries (7 binaries, need a guest with a device) | 46 | 0 | 46 |
Reproduce with:
pytest tests/ # superproject
(cd cnuas && PYTHONPATH=src pytest) # control plane
(cd tools && PYTHONPATH=src pytest) # tooling
(cd facility && PYTHONPATH=src pytest) # facility twin
(cd src/cnuaslink && make -C switch && pytest switch/tests cli/tests)
Build the switch first
The 35 switch data-plane cases spawn src/cnuasswitch/switch/build/cnuas-vswitchd.
If that binary is absent the fixture skips them with a build hint rather
than failing, so the counts above drop to 2 passed and 59 skipped. Run
make -C src/cnuasswitch/switch first to exercise the data plane.
1. CnuasSwitch, virtual top-of-rack switch¶
See CnuasSwitch datasheet for the part level specification.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| Ethernet and InfiniBand frame classification, auto mode, runt drop | tests/test_classification.py |
3 | Pass | built cnuas-vswitchd |
| MAC learning, unicast forward, flood, ageing | tests/test_eth_forwarding.py |
4 | Pass | built cnuas-vswitchd |
| InfiniBand DLID routing through the linear forwarding table | tests/test_ib_forwarding.py |
2 | Pass | built cnuas-vswitchd |
| Data centre bridging: priority flow control, enhanced transmission selection, explicit congestion notification | tests/test_dcb.py |
5 | Pass | built cnuas-vswitchd |
| Management socket API: ports, forwarding database, linear forwarding table, priority flow control, telemetry, error handling | tests/test_mgmt_api.py |
21 | Pass | built cnuas-vswitchd |
| In-switch subnet manager, subnet administration path records | none | 0 | None | see roadmap Epic 1 |
2. CnuasNIC, RDMA network interface¶
Specified in the CnuasNIC datasheet, with the software split across the kernel modules and verbs provider sheets.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| RoCEv2 end to end: reliable connection pingpong, transmit and receive paths, completion queue entries | tests/test_rocev2_e2e.py |
15 | Gated | CNUAS_E2E=1 plus vm-a and vm-b |
| Native InfiniBand end to end pingpong | tests/test_ib_e2e.py |
4 | Gated | CNUAS_E2E=1 plus vm-a and vm-b |
| NCCL build and link against the Cnuas verbs provider | tests/test_nccl_link.py |
7 | 1 Pass, 6 Gated | CUDA toolkit and an Nvidia GPU on the host |
Kernel modules cnuas_net.ko and cnuas_ib.ko |
covered indirectly by the two end-to-end gates | 0 | Gated | as above |
CnuasNIC carries no tests inside its own repository. All of its validation lives in the superproject suite, because a meaningful test needs the switch, two guest virtual machines, and the verbs provider present at once.
3. CnuasGPU, virtual GPU and runtime¶
Specified in the CnuasGPU datasheet, with the host libraries covered by the CnuasRT and CnuasDev sheets.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| Compute backend selection, scalar, AVX2, and AVX-512 dispatch | lib/test/compute_backend_smoke |
1 | Pass | none, runs on the host |
| Shared-object backend loading through the dlopen loader | lib/test/compute_so_smoke |
1 | Pass | none, runs on the host |
| CnuasIR object header parse and every rejection path | lib/test/cnuasir_object_smoke |
26 | Pass | none, runs on the host |
CnuasIR tools, object format, subset decoder cross checked against objdump, and the three commands |
tools/test/test_cnuasir_tools.py |
230 | Pass | none; the objdump group skips without a RISC-V toolchain |
| CnuasCC front end, lexer, precedence, the conversions the checker inserts, every rejection with its message, and the driver exit codes | tools/test/test_cnuascc.py |
113 | Pass | none, runs on the host |
| CnuasBLAS column major convention, level 1, level 2, level 3 and every refusal | lib/test/cnuasblas_host_smoke |
39 | Pass | none, runs on the host |
| CnuasLink wire format, golden byte layout, round trip, and every rejection | lib/test/cnuaslink_frame_smoke |
45 | Pass | none, runs on the host |
| CnuasCCL bootstrap over four threaded ranks, membership refusals, and the collectives | lib/test/cnuasccl_smoke |
71 | Pass | none, runs on the host |
| CnuasIR interpreter, every instruction class, the four shipped kernels, and the encoders cross checked against the assembler | lib/test/cnuasir_interp_smoke |
242 | Pass | none; the assembler group skips without a RISC-V toolchain |
| Kernel module load, launch argument checks, and a launch carried through the interpreter | lib/test/cnuasrt_module_smoke |
17 | Pass | none, runs on the host |
| CnuasBLAS against real device memory | lib/test/cnuasblas_smoke |
39 | Gated | a cnuasgpu device in a guest |
| Runtime API: allocate, copy, launch, synchronise | lib/test/cnuasrt_smoke |
1 | Gated | a cnuasgpu device in a guest |
| Single-precision general matrix multiply through the tensor path | lib/test/sgemm_smoke |
1 | Gated | a cnuasgpu device in a guest |
| Device discovery and initialisation | lib/test/compute_smoke |
1 | Gated | a cnuasgpu device in a guest |
| Multi-GPU visibility and peer copy | lib/test/multi_gpu_smoke |
1 | Gated | two or more cnuasgpu devices |
| Kernel module load, ioctl surface, doorbell | driver/test/cnuasgpu_smoke.c |
1 | Gated | a guest with cnuasgpu.ko |
| CnuasLink send and receive from the driver | driver/test/cnuasgpu_link_test.c, driver/test/cnuasgpu_link_recv.c |
2 | Gated | a guest with two endpoints |
The host tests above run as a set with make -C lib check in
src/cnuasgpu, which treats exit code 77 as a skip and fails on anything else.
The gated smoke binaries stop with a clear message rather than a crash, for
example FAIL cnuasInit(0) -> no CnuasGPU device found, which makes an
absent device easy to tell apart from a genuine regression.
4. CnuasLink, GPU fabric interconnect¶
See CnuasLink datasheet for the part level specification.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| Management version handshake | switch/tests/test_cnuaslink_phase1.py |
1 | Pass | built cnuasgpu-link-switchd |
| Discovery learns the GPU forwarding database | switch/tests/test_cnuaslink_phase1.py |
1 | Pass | built cnuasgpu-link-switchd |
| Unicast frame forwarding between endpoints | switch/tests/test_cnuaslink_phase1.py |
1 | Pass | built cnuasgpu-link-switchd |
| Broadcast reaches peers and is not looped back to the sender | switch/tests/test_cnuaslink_phase1.py |
2 | Pass | built cnuasgpu-link-switchd |
| Port status, peer identifiers, and frame counters | switch/tests/test_cnuaslink_phase1.py |
1 | Pass | built cnuasgpu-link-switchd |
| A disabled port drops traffic and the drop is counted | switch/tests/test_cnuaslink_phase1.py |
2 | Pass | built cnuasgpu-link-switchd |
| Command line client: version, port status, forwarding database, telemetry, link up and down, bad socket handling | cli/tests/test_cli_e2e.py |
10 | Pass | built cnuasgpu-link-switchd |
Both files were standalone scripts that defined main() and no test
functions, so pytest collected zero cases from them and reported success. They
are now real pytest modules: 18 collected, 18 passing, and they skip cleanly
with a build hint when the daemon binary is absent rather than failing.
5. Control plane and platform software¶
Specified across the control plane, tools, and management tools sheets.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| Component adapters: switch, NIC, GPU, link, system inventory | cnuas/tests/test_adapters.py |
23 | Pass | none |
| REST API surface | cnuas/tests/test_api.py |
17 | Pass | none |
cnuas command line |
cnuas/tests/test_cli.py |
7 | Pass | none |
| Service lifecycle | cnuas/tests/test_service.py |
5 | Pass | none |
| Build, package, image, virtual machine lifecycle, release, deploy tooling | tools/tests/ (16 files) |
122 | Pass | none |
6. Facility twin¶
See facility datasheet for the part level specification.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| Campus and data-hall layout generation | facility/tests/test_layout.py |
19 | Pass | none |
| Live telemetry bridge | facility/tests/test_live.py |
19 | Pass | none |
| Rack and facility power model | facility/tests/test_power.py |
8 | Pass | none |
| OpenUSD stage authoring | facility/tests/test_usd.py |
13 | Pass | none |
7. Baseboard management and rack management¶
See CnuasBMC datasheet for the part level specification.
| Feature | Test | Count | Status | Gate |
|---|---|---|---|---|
| OpenBMC images for sled, rack management controller, and top of rack | build gate only, three images produced | 0 | Manual | Yocto build |
| ORV3 power shelf over RS-485, IPMI, serial over LAN | none | 0 | None | see roadmap Epic 7 |
8. Accelerator software stack, state of each part¶
These appear in CnuasGPU Design as the intended software stack. Some are now implemented and appear with their tests in section 3 above; the rest have no code and therefore no tests. They are listed together so that the gap is explicit rather than implied. Each has a datasheet recording the specified design and what is built: cnuascc, CnuasIR, CnuasCCL, CnuasSHMEM, and the mathematics libraries.
| Component | Models | State |
|---|---|---|
cnuascc |
nvcc |
Front end implemented, no code generation |
| CnuasIR toolchain | PTX | Tools and interpreter implemented |
| CnuasCCL | NCCL | v0.1 implemented, host channel |
| CnuasSHMEM | NVSHMEM | Design only |
| CnuasBLAS | cuBLAS | v0.1 implemented over the shipped kernels, see section 3 |
| CnuasDNN | cuDNN | Design only |
| CnuasFFT | cuFFT | Design only |
| CnuasSPARSE | cuSPARSE | Design only |
| CnuasSOLVER | cuSOLVER | Design only |
cnuas-dcgmi, cnuas-dcgm |
dcgmi, dcgm | Design only |
cnuas-prof |
Nsight Compute | Design only |
9. Keeping this page current¶
This page is regenerated by hand after a change to any test suite. The rule is
that a roadmap entry may move to available only when a row here names a test and
records a pass. When adding a component, add its row here in the same change,
even if the only honest entry is None.