Warrior_EA/DirectML
Repository files (latest commit first)
Filename Latest commit message Latest commit date
AnimateDread ccfe5563e3 perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier
THE OPTIMIZER ("0.1% an hour per agent", 0 of 39 passes in 78 min,
12 agents): the tester fires OnTimer on SIMULATED time, so the live
chart's 500ms EventSetMillisecondTimer over a 2016-2026 pass is ~600
MILLION OnTimer calls - each walking 4x PollTraining, the vote
readout's string build, the overlay advance and the deployed census.
None of it serves an inference-only pass: training never runs, per-bar
inference is driven by OnTickHandler off the tick stream, the risk
budget re-checks in OnTick, and there is no chart to keep fresh.
StepSetTimer now arms EventSetTimer(3600) in tester/optimizer/forward
(~2,600 calls per pass) and keeps the 500ms timer for live charts.

Plus a TESTER PASS SELF-PROFILE: per-tick buckets (pre / Expert.OnTick
/ journal) and the timer total, printed once at the pass's OnDeinit -
so if a pass is still slow it names its own consumer instead of being
diagnosed from outside.

OFFLOAD (operator: "as much calculation as possible to DLL/OpenCL"):
batch norm was the ONE stage still host-side on the DLL tier - the
device path was OpenCL-only, so every sample crossed the bus twice per
BN layer and normalized in interpreted MQL5 (and every model runs
batchnorm ON). Four new exports mirror AI\Network.cl's BatchNorm*
kernels 1:1 in DOUBLE precision (closer to the host reference than
the float OpenCL kernels): forward with running stats + frozen flag,
hidden gradient with the clamp derivative, gamma/beta accumulate, and
the batch-mean apply (no weight decay, moments-before-skip ordering,
sqrt-stored v). BnDeviceEligible/EnsureBnDeviceBuffers/all four
Dispatch* now route by backend; the EXISTING in-situ self-checks
(host-vs-device on the first real sample, latch-off + host fallback on
mismatch) verify the DLL kernels exactly as they verified OpenCL ones.

batch_accum_check regression: ALL CHECKS PASSED on the rebuilt DLL.
Same deployment coupling as bd46374: the .ex5 imports the new exports
- copy DirectML\WarriorCPU.dll into MQL5\Libraries (terminal closed)
together with the new .ex5, and re-copy it to the tester agents (or
just run DirectML\build_cpu.bat once with everything closed - it
deploys to every discovered Libraries folder).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 20:44:18 -04:00
..
.gitignore fix: the Adam second moment was never Adam - all four tiers 2026-08-09 14:02:35 -04:00
batch_accum_check.cpp perf(train): DLL-side mini-batch apply + 300ms slice - the era bottleneck 2026-08-25 19:32:15 -04:00
build.bat fix: handle OCL neuron types in gradient clipping and backprop loops 2026-07-28 20:46:27 -04:00
build_accum_check.bat feat: mini-batch gradient accumulation (F4), front-end-aware capacity budget (F6), split Wyckoff categoricals (N1) 2026-08-09 11:48:03 -04:00
build_backprop_check.bat fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
build_cpu.bat perf: the CPU DLL's dot products were never vectorized - /fp:fast 2026-08-11 17:20:12 -04:00
dense_backprop_check.cpp fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
dense_backprop_check.exe fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
dense_backprop_check.obj fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
lstm_seq_flowcheck.cpp fix(ai): positive forget-gate bias, giving the LSTM its window back 2026-07-30 19:15:29 -04:00
lstm_seq_gradcheck.cpp feat(dll): fused sequence-LSTM kernels with real backpropagation-through-time 2026-07-30 18:13:50 -04:00
lstm_seq_gradcheck.exe 2 new files 2026-07-30 18:46:03 -04:00
lstm_seq_gradcheck.obj 2 new files 2026-07-30 18:46:03 -04:00
opencl_seq_syntax_check.cpp feat(ai): sequence-LSTM kernels for the OpenCL tier 2026-07-30 18:40:56 -04:00
smoke_test.cpp fix: remove broken DFA optimizer, use plain gradient descent 2026-07-29 00:03:54 -04:00
WarriorCPU.cpp perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.dll perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.exp perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.h perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.lib perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.obj perf(tester,bn): no sub-second timer in the tester + BN kernels on the DLL tier 2026-08-25 20:44:18 -04:00
WarriorCPU.pdb fix(Expert/ExpertSignalAIBase): add feature cache and fix oversampling imbalance 2026-07-14 22:49:14 -04:00
WarriorDML.cpp fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
WarriorDML.dll fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00
WarriorDML.exp chore: update binary files for WarriorCPU and WarriorDML components 2026-08-09 12:43:49 -04:00
WarriorDML.h feat: mini-batch gradient accumulation (F4), front-end-aware capacity budget (F6), split Wyckoff categoricals (N1) 2026-08-09 11:48:03 -04:00
WarriorDML.lib chore: update binary files for WarriorCPU and WarriorDML components 2026-08-09 12:43:49 -04:00
WarriorDML.obj fix: dense backprop read the weight matrix transposed - on every backend 2026-08-11 18:06:09 -04:00