{
  "schemaVersion": 1,
  "lessonId": "kernels-03",
  "contentHash": "ffafe87d6ffe3d1dddcd0ab058e87d4adff0aae938e053a9460b4bb5cbe3f3b6",
  "rendererHash": "a1bd5b648f4731ae5d5f0a24811c2540d1a0a132149ce589d17c4113509cbedf",
  "kind": "executed",
  "generatedAt": "2026-10-20T10:46:31.177124+00:00",
  "provenance": "recorded_cpu_computation",
  "environment": {
    "backend": "cpu",
    "deviceCount": 1,
    "jax": "0.9.2",
    "numpy": "2.4.4",
    "matplotlib": "3.10.8"
  },
  "stdout": "Actual backend: cpu simulated layout: TPU v5 lite\nSynchronous/buffered endpoints: -1.75 2.25\nprograms, padded elements, modeled data-buffer bytes: [(9, 9216, 24576), (6, 12288, 49152), (4, 16384, 98304)]\n",
  "data": {
    "panels": [
      {
        "kind": "bar",
        "labels": [
          "8 x 128",
          "16 x 128",
          "16 x 256"
        ],
        "ylabel": "program count (configuration-derived)",
        "series": [
          {
            "label": "grid programs",
            "y": [
              9,
              6,
              4
            ]
          }
        ]
      },
      {
        "kind": "bar",
        "labels": [
          "8 x 128",
          "16 x 128",
          "16 x 256"
        ],
        "ylabel": "modeled data buffers (KiB)",
        "series": [
          {
            "label": "double-buffered inputs and output",
            "y": [
              24.0,
              48.0,
              96.0
            ]
          }
        ]
      }
    ]
  }
}
