The node loop of every mesh program's kernel: tickets from the slot's ring, completion, heartbeat, load records, shutdown
$ sexc add @ajax/mesh-rt-loop- total 3
- drwxr-xr-x-../
- drwxr-xr-x-Oct 27 03:26v/# 1 version
- drwxr-xr-x-Oct 27 03:26files/# the files of 0.1.0
- latest
- 0.1.0, published Oct 27 03:26 by ajax
- owners
- ajax
- license
- MIT
- dependencies
- @ajax/mesh-abi-control-block ^0.1.0, @ajax/mesh-abi-header ^0.1.0, @ajax/mesh-abi-node ^0.1.0, @ajax/mesh-abi-node-load ^0.1.0, @ajax/mesh-abi-ops ^0.1.0, @ajax/mesh-abi-ring ^0.1.0, @ajax/mesh-abi-trace ^0.1.0, @ajax/mesh-rt-block ^0.1.0, @ajax/mesh-rt-ctx ^0.1.0, @ajax/mesh-rt-prim ^0.1.0
- dependents
- @ajax/mesh-rt
- keywords
- mesh alphaos gpu runtime ring
- homepage
- https://github.com/thomasdavis/alpha-c-mesh/tree/main/packages/mesh-rt-loop
- repository
- https://github.com/thomasdavis/alpha-c-mesh
1# @ajax/mesh-rt-loop 2 3`mesh_rt_run(mb, slot, init, task)`: the node loop, the body of every program's kernel. Thread 0 of the 4node takes a ticket from the slot's ring, waits for its publication, hands the descriptor to the block 5through shared memory and a barrier; the block runs the op; thread 0 completes it (result, mark released, 6`P_DONE`, the node record, the trace record). Idle, it keeps the heartbeat and the node load record (time 7slices the context did not get), takes no ticket while `H_BLINK` is set, and leaves at a task boundary 8once `P_SHUTDOWN` is set. 9 10- **Ported from:** alpha-rust-mesh `crates/mesh-rt/src/ring.rs`, statement for statement (including the 11 one-wide-multiply-add indexing that works around ptxas 13.0 on sm_121). 12- **Tests:** @ajax/mesh-prog-hello runs batches over two nodes, a halt and a relaunch on the simulator, 13 checking results, marks, `P_DONE`, `P_ONLINE` and counters.