lab reports · orreryAbstractIIIIIIIVV

treadcore · check-in report CI-080

crucible: Training Inside the GPU

Check-in report CI-080. Paul Richeson, treadcore.org; Claude Code (Claude Opus 5.5) as the pair. 28 October 2026. Companion records: LAB-REPORT-BRAIN.md section 121; crucible docs/LAB-REPORT-GPU.md (the full lab report), src/crucible.cu, runs/.

Source: documentation/checkins/CI-080-2026-10-28-crucible.md, built by orrery's tools/report/collect.py.

Abstract

A second project for the fleet's GPUs: a self-learning loop that runs entirely on the card.

  • On the card: the arena, the sensors, the population of nets, the play, selection and mutation, and a hall of fame of past champions.
  • Speed: 581, 462 and 419 M tank-steps a second on the GTX 1080 Ti, 1080 and 1070 Ti.
  • The decisive setting: limiting registers to 128 doubled the speed.
  • Learning:
    • self-play against the hall alone did not learn to beat a scripted

    yardstick (8.2 %);

    • with sparring bots it did on whitewolf (21.9 %, 3.4 standard

    errors);

    • its replicate on calber fell short of the bar (14.3 %, 1.8).

orrery's steps since CI-079 are also recorded here.

I. Introduction

A. Intent

Answer, with a working program and measured numbers:

  • whether a self-contained learning AI with sensors fits these cards;
  • how much fits;
  • how fast it runs;
  • how it scales.

Then the interface redesign, which needs this project to orchestrate.

B. The prompt

we need to consider the interface from treadcore . the styling. thr rows and columns of brushed metal. Can we redesign all tabs all sub tabs and rethink about the interface progression. tell a story, help us orchestrate and add comptuers to configure in the orchestration. For example, we want to create a second project to run in cuda. Perhaps we can size something for the 8GB cards we have. Is there a neural net that we can train and retrain to keep its generations within itself. We need sensor data and a self contained loop is there a way to create a different style of self learning ai on these cards. specifically targeted for CUDA program that will stress the cards and we can use them to their maximum, at their fastest. How much of this simulation can be ran fully in cuda itself. If we can do that, can we write a lab report about general purpose traing and scaling up. and inside the gpu. we have an assessment of our fleet, we have 1070ti , 1080, 1080ti.

II. Decision Log

#CauseDecisionNot chosen
D1One step at a time; the redesign's story needs the second projectThe GPU project and its report first; the interface nextThe redesign first, with a project that did not exist
D2"keep its generations within itself", "self contained loop"Evolution with a hall of fame on the card; --save and --load for retrainingGradient methods, which need the world differentiable or a replay buffer on the host
D3"sensor data"Twelve rays per tank, plus bearing and own stateFull observation of the world
D4"stress the cards ... at their fastest"One block per individual, one thread per duel, nets in shared memory (a broadcast read)One thread per individual, weights read from DRAM
D5190 registers gave 12 % occupancyMeasured limits of 190, 128, 80 and 64; 128 was fastest, the defaultThe highest occupancy
D6Pascal: FP16 at 1/64 rate, no tensor coresFP32Half precision
D7CUDA 13 drops PascalBuilt with 12.9 for sm_61; noted in the MakefileUpgrading
D8Self-play alone stalled at 8 % against the yardstickHalf the games against sparring bots of drawn skill; the rule written before the runChanging the score
D9One seed proves littleA replicate on calber with another seedOne run
D10"How much of this simulation"Assessed treadcore-sim and the brain part by partPorting treadcore's sim

III. Methods

  1. Build: make on each GPU node (nvcc -O3 -use_fast_math -gencode arch=compute_61,code=sm_61 -DHID=32 -DMINB=2).
  2. Throughput: ./crucible --pop 2048 --gens 4 --bench.
    • whitewolf at MINB 1 to 4, and at H 48 and 64;
    • calber and boburner at the default.
  3. Learning: --pop 2048 --eps 128 --yard 10, with nvidia-smi logged every 2 s:
    • whitewolf, seed 7, 300 generations, hall only;
    • whitewolf, seed 7, 400 generations, sparring 0.5;
    • calber, seed 8, 400 generations, sparring 0.5.
  4. The rule: the last five yardstick reads (4,096 duels each) more than two standard errors above the hall-only run's last five.
  5. The records:
    • crucible docs/LAB-REPORT-GPU.md, with every table;
    • the run files in crucible runs/.

IV. Results

CardMtank-steps/sNet GFLOP/sPower under load
GTX 1080 Ti5812,494165 W of 250
GTX 10804621,983118 W of 215
GTX 1070 Ti4191,797not logged
Register limit1901288064
GTX 1080, Mtank-steps/s236462238185
Learning (last five reads)Yardstick winsAgainst hall only
hall only, whitewolf8.2 % ± 2.7 %—
sparring, whitewolf21.9 % ± 3.0 %+3.4 se, confirmed
sparring, calber14.3 % ± 2.1 %+1.8 se, short

Errors.

  • -DH broke Thrust's headers; the macro is now HID.
  • A zsh $h:c turned an rsync target into three local folders; they were removed.
  • H = 64 does not launch (51.7 KB of shared memory against 48 KB). It is measured and kept as a result.

V. Discussion

It can be done, and the cards are fast at it. They are not yet at their maximum: 22 % of peak, and 55–66 % of their power. The report's VII.B orders where the rest is:

  • more duels per thread;
  • fewer transcendentals;
  • a warp sharing a net;
  • INT8 dp4a.

The learning is real but slow. Sparring opponents mattered more than the hall of fame alone. One replicate fell short, so the effect is smaller than the first run says.

treadcore's own simulation is a poor fit as a whole, and a good one in its combat core and its learned net.

Next:

  1. orrery's interface redesign, with treadcore and crucible as projects.
  2. crucible's islands across the three cards.