{
  "device": {
    "name": "NVIDIA H100 80GB HBM3",
    "sm_count": 132,
    "capability": "9.0",
    "cuda": "12.4",
    "torch": "2.4.0",
    "triton": "3.0.0",
    "dtype": "float32"
  },
  "correctness": [
    {
      "name": "small_non_multiple",
      "shape": [
        7,
        13,
        8
      ],
      "passed": true,
      "max_abs_err": 1.1920928955078125e-07,
      "mean_abs_err": 2.7536902535985064e-08
    },
    {
      "name": "odd_rows",
      "shape": [
        35,
        67,
        32
      ],
      "passed": true,
      "max_abs_err": 2.384185791015625e-07,
      "mean_abs_err": 2.6023190713431177e-08
    },
    {
      "name": "wide_head",
      "shape": [
        64,
        129,
        128
      ],
      "passed": true,
      "max_abs_err": 3.129243850708008e-07,
      "mean_abs_err": 4.578501489049813e-08
    }
  ],
  "benchmark": [
    {
      "M": 128,
      "N": 512,
      "D": 64,
      "iters": 100,
      "custom_ms": 0.054552321434020994,
      "sdpa_ms": 0.055384960174560544,
      "speedup_vs_sdpa": 1.0152631220569888
    },
    {
      "M": 512,
      "N": 2048,
      "D": 128,
      "iters": 50,
      "custom_ms": 0.376759033203125,
      "sdpa_ms": 0.19813184738159179,
      "speedup_vs_sdpa": 0.5258847961709558
    },
    {
      "M": 1024,
      "N": 4096,
      "D": 128,
      "iters": 20,
      "custom_ms": 0.7516128063201905,
      "sdpa_ms": 0.3979088068008423,
      "speedup_vs_sdpa": 0.5294066352447584
    }
  ],
  "notes": [
    "The custom kernel computes scaled dot-product attention with online softmax and does not materialize the M x N score matrix.",
    "The performance reference is PyTorch scaled_dot_product_attention on the same FP32 inputs.",
    "The correctness reference explicitly evaluates softmax(Q @ K.T / sqrt(D)) @ V."
  ]
}
