Files
LithosAnanake/capsules/multiuser-doe.4th
T
Robert Allan JamesandClaude Opus 5.5 4c610e05a4 Revert the MU-WAIT-ALL '100 WAIT' change (Captain Bob); keep its logs
The fix belongs in the kernel's compudynamics, not in the DoE capsule
steering its own scheduling. Logs from the stopped relaunch and the check
run stay committed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 08:22:57 -04:00

164 lines
4.1 KiB
Forth

Block 5044
3 CONSTANT MU-N-CONC
2 CONSTANT MU-N-MODES
MU-N-CONC MU-N-MODES * CONSTANT MU-N-CFG
63 CONSTANT MU-MAX-REPS
MU-N-CFG MU-MAX-REPS * CONSTANT MU-MAX-RUNS
CREATE MU-CONC-LEVELS 3 CELLS ALLOT
2 0 CELLS MU-CONC-LEVELS + !
4 1 CELLS MU-CONC-LEVELS + !
8 2 CELLS MU-CONC-LEVELS + !
: MU-CONC-OF ( cfg -- n ) 2 / CELLS MU-CONC-LEVELS + @ ;
: MU-MODE-OF ( cfg -- m ) 2 MOD ;
VARIABLE MU-UNIFORM-WL
8 MU-UNIFORM-WL !
Block 5045
: WL-CAPSULE ( idx -- c-addr u )
CASE
0 OF S" workload-0.4th" ENDOF
1 OF S" workload-1-lite.4th" ENDOF
2 OF S" workload-2.4th" ENDOF
3 OF S" workload-3.4th" ENDOF
4 OF S" workload-4.4th" ENDOF
5 OF S" workload-5-lite.4th" ENDOF
6 OF S" workload-6.4th" ENDOF
7 OF S" workload-7.4th" ENDOF
8 OF S" workload-8.4th" ENDOF
9 OF S" workload-9.4th" ENDOF
ENDCASE ;
Block 5046
( FABRIC-3.8 3.9 Stage H: workers are born defs-only and )
( each is SENT one job. WL-RUN, defined in every workload )
( capsule, is its old birth-time tail plus its entry word )
( twice, as the old two VM-EXEC passes did. The LAST word )
( of the job SENDs MU-DONE back to Hera, who counts them. )
VARIABLE MU-DONE-COUNT
: MU-DONE ( -- ) MU-DONE-COUNT @ 1+ MU-DONE-COUNT ! ;
: MU-JOB ( -- c-addr u ) S" WL-RUN WL-DONE-ARGS SEND" ;
Block 5047
: MU-WORKER-NAME ( n -- c-addr u )
CASE
0 OF S" mu0" ENDOF
1 OF S" mu1" ENDOF
2 OF S" mu2" ENDOF
3 OF S" mu3" ENDOF
4 OF S" mu4" ENDOF
5 OF S" mu5" ENDOF
6 OF S" mu6" ENDOF
7 OF S" mu7" ENDOF
ENDCASE ;
VARIABLE MU-TMP-NC
VARIABLE MU-TMP-NU
Block 5048
: MU-WL-FOR ( mode worker-n -- wl-idx )
SWAP IF 10 MOD ELSE DROP MU-UNIFORM-WL @ THEN ;
: MU-BIRTH-WORKER ( wl-idx worker-n -- ok? )
MU-WORKER-NAME MU-TMP-NU ! MU-TMP-NC !
WL-CAPSULE
MU-TMP-NC @ MU-TMP-NU @
WORKER-BIRTH ;
Block 5049
VARIABLE MU-FAIL-COUNT
: MU-SEND-WORKER ( worker-n -- )
MU-JOB ROT MU-WORKER-NAME SEND 0= IF
MU-FAIL-COUNT @ 1+ MU-FAIL-COUNT ! MU-DONE THEN ;
: MU-KILL-WORKER ( worker-n -- )
MU-WORKER-NAME KILL ;
CREATE MU-RUN-MATRIX MU-MAX-RUNS CELLS ALLOT
: MU-MATRIX! ( val idx -- ) CELLS MU-RUN-MATRIX + ! ;
: MU-MATRIX@ ( idx -- val ) CELLS MU-RUN-MATRIX + @ ;
VARIABLE MU-N-RUNS
: MU-INIT-MATRIX ( -- ) MU-N-RUNS @ 0 DO I I MU-MATRIX! LOOP ;
CREATE MU-ISA-TAG-BUF 16 ALLOT VARIABLE MU-ISA-TAG-LEN
: MU-ISA-TAG! ( c-addr u -- )
16 MIN DUP MU-ISA-TAG-LEN !
MU-ISA-TAG-BUF SWAP CMOVE ;
Block 5050
VARIABLE MU-SW-I VARIABLE MU-SW-J
VARIABLE MU-SW-VI VARIABLE MU-SW-VJ
: MU-SWAP-MTX ( i j -- )
MU-SW-J ! MU-SW-I !
MU-SW-I @ MU-MATRIX@ MU-SW-VI !
MU-SW-J @ MU-MATRIX@ MU-SW-VJ !
MU-SW-VJ @ MU-SW-I @ MU-MATRIX!
MU-SW-VI @ MU-SW-J @ MU-MATRIX! ;
: MU-SHUFFLE ( -- )
MU-N-RUNS @ 1 - 0 DO
I MU-N-RUNS @ 1 - RANDOM
I MU-SWAP-MTX
LOOP ;
Block 5051
VARIABLE MU-RUN-ID VARIABLE MU-CFG
VARIABLE MU-REP VARIABLE MU-NW
VARIABLE MU-MODE VARIABLE MU-NREPS
: MU-EMIT-TRIAL-MARKER ( -- )
." MU-TRIAL isa=" MU-ISA-TAG-BUF MU-ISA-TAG-LEN @ TYPE
." run=" MU-RUN-ID @ .
." cfg=" MU-CFG @ .
." rep=" MU-REP @ .
." nw=" MU-NW @ .
." mode=" MU-MODE @ .
." fail=" MU-FAIL-COUNT @ . CR
MU-RUN-ID @ MU-CFG @ MU-REP @ MU-NW @
MU-MODE @ MU-FAIL-COUNT @
MU-ISA-TAG-BUF MU-ISA-TAG-LEN @ DOE-PERSIST-TRIAL ;
Block 5052
: MU-BIRTH-ALL ( -- )
MU-NW @ 0 DO
MU-MODE @ I MU-WL-FOR I MU-BIRTH-WORKER DROP
LOOP ;
: MU-SEND-ALL ( -- )
MU-NW @ 0 DO
I MU-SEND-WORKER
LOOP ;
: MU-WAIT-ALL ( -- )
BEGIN MU-DONE-COUNT @ MU-NW @ < WHILE REPEAT ;
Block 5053
: MU-KILL-ALL ( -- )
MU-NW @ 0 DO
I MU-KILL-WORKER
LOOP ;
: MU-RUN-TRIAL ( cfg rep run-id -- )
MU-RUN-ID ! MU-REP ! MU-CFG !
0 MU-FAIL-COUNT ! 0 MU-DONE-COUNT !
MU-CFG @ MU-CONC-OF MU-NW !
MU-CFG @ MU-MODE-OF MU-MODE !
MU-BIRTH-ALL
MU-SEND-ALL
MU-WAIT-ALL
MU-KILL-ALL
MU-EMIT-TRIAL-MARKER ;
Block 5054
: MU-CAMPAIGN-STEP ( idx -- )
MU-MATRIX@
DUP MU-NREPS @ /
SWAP MU-NREPS @ MOD
MU-RUN-ID @
MU-RUN-TRIAL
MU-RUN-ID @ 1+ MU-RUN-ID ! ;
Block 5055
: MU-EXEC-CAMPAIGN ( seed n-reps start-idx -- )
>R
DUP MU-NREPS !
MU-N-CFG * MU-N-RUNS !
SEED
MU-INIT-MATRIX MU-SHUFFLE
HB-ON
R@ MU-RUN-ID !
MU-N-RUNS @ R> DO
I MU-CAMPAIGN-STEP
LOOP
HB-OFF
." MU-CAMPAIGN: complete" CR ;