KernelBench mega · RTX PRO 6000

Kimi-Linear Decode GPT-6 Astra Pro

24.80×geomean speedup across shapes

manually audited: clean

OpenAI gpt-6-astra-pro through OpenRouter (codex harness, CLI 0.140.0), xhigh effort, unlimited budget, RTX PRO 6000: a single cooperative persistent megakernel using classic grid.sync() phase barriers, scalar-FMA int4 dequant-GEMVs, and wmma tensor cores reserved for the absorbed-MLA attention. Post-session trusted grade on the same box 2026-09-06 (check then benchmark via trusted_entrypoint.py after the agent exited, gpu_lock.log lines 148-153): 24.8188x geomean over the untouched baseline (23.65x / 24.95x / 25.91x at ctx 2048 / 8192 / 16384, 0.323-0.358 ms/tok); the agent's final in-run self-measurement was 24.7390. check.log shows out/S/cache = 1.0000 on all six seed/ctx combos against the 0.98 gate. All 8 template files byte-identical, zero foreign reads (bwrap masked outputs/runs and DEVLOG.md), no clock commands, one ninja install (pip failed, uv pip succeeded), zero lock contention, no key strings in the archive. Session ended on a deliberate task_complete at 5h05m after three transient CLI reconnects (all recovered). Audit-time isolated sequential regrade on the same box 2026-09-07 (clocks reset with nvidia-smi -rgc, sole GPU owner): 24.8043x geomean (23.66x / 24.95x / 25.85x, 0.323 / 0.336 / 0.359 ms/tok), -0.06% vs the 24.8188 post-session grade, which is kept as benchmark.contended.log. Overwrite probe (probe.log): primed step cos(ref,sol)=1.0000; a continuation step with the hidden buffer overwritten in place at the same data_ptr changes the output (cos(out1,out2)=0.0335) and matches the reference at 1.0000; a fresh state at seed+1 with the buffer overwritten again gives cos(out2,out3)=-0.0342 and matches at 1.0000. OpenRouter cost $83.75.

harnesscodex
Kernel source (redacted)
"""Single cooperative-grid W4A16 hybrid decode, with absorbed latent attention."""

from dataclasses import dataclass, field
import os

import ninja

import torch
import torch.nn as nn
from torch.utils.cpp_extension import load_inline


@dataclass(frozen=True)
class Config:
    hidden: int = 2304
    kda_heads: int = 32
    kda_head_dim: int = 128
    short_conv: int = 4
    mla_heads: int = 32
    kv_lora: int = 512
    qk_nope: int = 128
    qk_rope: int = 64
    v_head: int = 128
    rope_theta: float = 10000.0
    n_experts: int = 64
    n_active: int = 8
    n_shared: int = 1
    moe_inter: int = 1024
    routed_scaling: float = 2.446
    group: int = 128
    pattern: tuple = ("K", "K", "K", "M")
    dtype: torch.dtype = field(default=torch.bfloat16)


def build_config(shape):
    return Config(n_experts=int(shape.get("n_experts", 64)))


class QuantLinear(nn.Module):
    def __init__(self, in_f, out_f, group=128, experts=None):
        super().__init__()
        leading = () if experts is None else (experts,)
        self.register_buffer("w_q", torch.empty(*leading, in_f // 2, out_f, dtype=torch.uint8))
        self.register_buffer("scales", torch.empty(*leading, in_f // group, out_f, dtype=torch.bfloat16))
        self.register_buffer("zeros", torch.empty(*leading, in_f // group, out_f, dtype=torch.bfloat16))


class KDA(nn.Module):
    def __init__(self, cfg):
        super().__init__()
        for name in ("q_proj", "k_proj", "v_proj", "g_proj"):
            setattr(self, name, QuantLinear(cfg.hidden, cfg.kda_heads * cfg.kda_head_dim))
        self.beta_proj = nn.Linear(cfg.hidden, cfg.kda_heads, bias=False, dtype=cfg.dtype)
        self.conv_w = nn.Parameter(torch.empty(3, 4096, 4, dtype=cfg.dtype))
        self.o_proj = QuantLinear(4096, cfg.hidden)


class MLA(nn.Module):
    def __init__(self, cfg):
        super().__init__()
        self.q_proj = QuantLinear(cfg.hidden, 6144)
        self.kv_a = QuantLinear(cfg.hidden, 576)
        self.kv_b = QuantLinear(512, 8192)
        self.o_proj = QuantLinear(4096, cfg.hidden)


class MoE(nn.Module):
    def __init__(self, cfg):
        super().__init__()
        self.router = nn.Linear(cfg.hidden, cfg.n_experts, bias=False, dtype=cfg.dtype)
        for prefix, count in (("", cfg.n_experts), ("s_", cfg.n_shared)):
            setattr(self, prefix + "gate", QuantLinear(2304, 1024, experts=count))
            setattr(self, prefix + "up", QuantLinear(2304, 1024, experts=count))
            setattr(self, prefix + "down", QuantLinear(1024, 2304, experts=count))


class Block(nn.Module):
    def __init__(self, cfg, kind):
        super().__init__()
        self.attn_norm = nn.Parameter(torch.ones(cfg.hidden, dtype=cfg.dtype))
        self.moe_norm = nn.Parameter(torch.ones(cfg.hidden, dtype=cfg.dtype))
        self.attn = KDA(cfg) if kind == "K" else MLA(cfg)
        self.moe = MoE(cfg)


_CUDA = r"""
#include <torch/extension.h>
#include <ATen/cuda/CUDAContext.h>
#include <c10/cuda/CUDAException.h>
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_bf16.h>
#include <cooperative_groups.h>
#include <mma.h>
#include <vector>

using BFloat = __nv_bfloat16;
namespace cg = cooperative_groups;
namespace wm = nvcuda::wmma;

struct Quant {
    const unsigned char* weight;
    const BFloat* scales;
    const BFloat* zeros;
};

struct Layer {
    const BFloat* attn_norm;
    const BFloat* moe_norm;
    const BFloat* beta;
    const BFloat* conv;
    const BFloat* router;
    Quant attn[5];
    Quant moe[6];
};

struct State {
    const float* old_state;
    float* new_state;
    const BFloat* old_conv[3];
    BFloat* new_conv[3];
};

struct Arguments {
    Layer layers[4];
    State states[3];
    const BFloat* hidden;
    BFloat* output;
    float* workspace;
    const BFloat* old_latent;
    const BFloat* old_rope;
    BFloat* latent;
    BFloat* rope;
    int context;
    int experts;
    float routing_scale;
};

constexpr int X_OFFSET = 0;
constexpr int H_OFFSET = 4096;
constexpr int PART_OFFSET = 8192;
constexpr int AUX_OFFSET = PART_OFFSET + 200704;
constexpr int ROUTE_OFFSET = AUX_OFFSET + 16384;
constexpr int QLAT_OFFSET = ROUTE_OFFSET + 256;
constexpr int QROPE_OFFSET = QLAT_OFFSET + 8192;
constexpr int MLAT_OFFSET = QROPE_OFFSET + 1024;
constexpr int ATT_OFFSET = MLAT_OFFSET + 16384;

__device__ __forceinline__ float bfround(float value) {
    return __bfloat162float(__float2bfloat16_rn(value));
}

__device__ __forceinline__ __nv_bfloat162 bf2bits(unsigned int bits) {
    __nv_bfloat162_raw value;
    value.x = bits & 0xffffu;
    value.y = bits >> 16;
    return __nv_bfloat162(value);
}

__device__ __forceinline__ __nv_bfloat162 dequant_packed(
    unsigned int bits, __nv_bfloat162 zero, __nv_bfloat162 scale) {
    __nv_bfloat162 value = bf2bits((bits & 0x000f000fu) | 0x43004300u);
    value = __hsub2_rn(value, bf2bits(0x43004300u));
    value = __hsub2_rn(value, zero);
    return __hmul2_rn(value, scale);
}

__device__ __forceinline__ float2 dequant_pair(
    unsigned int bits, __nv_bfloat162 zero, __nv_bfloat162 scale) {
    return __bfloat1622float2(dequant_packed(bits, zero, scale));
}

__device__ __forceinline__ float warp_sum(float value) {
    #pragma unroll
    for (int offset = 16; offset; offset >>= 1)
        value += __shfl_down_sync(0xffffffff, value, offset);
    return value;
}

__device__ __forceinline__ float warp_max(float value) {
    #pragma unroll
    for (int offset = 16; offset; offset >>= 1)
        value = fmaxf(value, __shfl_down_sync(0xffffffff, value, offset));
    return value;
}

__device__ __forceinline__ float block_sum(float value, float* shared) {
    value = warp_sum(value);
    if ((threadIdx.x & 31) == 0) shared[threadIdx.x >> 5] = value;
    __syncthreads();
    if (threadIdx.x < 32) {
        value = threadIdx.x < 8 ? shared[threadIdx.x] : 0.0f;
        value = warp_sum(value);
        if (threadIdx.x == 0) shared[0] = value;
    }
    __syncthreads();
    return shared[0];
}

__device__ __forceinline__ void normalize(
    const float* hidden, const BFloat* input, const BFloat* weight,
    float* output, float* shared) {
    float square = 0.0f;
    float values[9];
    #pragma unroll
    for (int index = 0; index < 9; ++index) {
        int channel = threadIdx.x + index * 256;
        float value = input ? __bfloat162float(input[channel]) : hidden[channel];
        values[index] = value;
        square += value * value;
    }
    float inverse = rsqrtf(block_sum(square, shared) / 2304.0f + 1.0e-6f);
    #pragma unroll
    for (int index = 0; index < 9; ++index) {
        int channel = threadIdx.x + index * 256;
        output[channel] = bfround(values[index] * inverse * __bfloat162float(weight[channel]));
    }
}

template<int Inputs, int Outputs>
__device__ __forceinline__ void gemv(
    Quant quant, const float* activation, float* partial, int task,
    int expert, float* shared, int activation_offset = 0) {
    constexpr int Tiles = (Outputs + 127) / 128;
    int split = task / Tiles;
    int column = (task % Tiles) * 128 + (threadIdx.x & 31) * 4;
    int warp = threadIdx.x >> 5;
    float result[4] = {0, 0, 0, 0};
    const unsigned char* packed = quant.weight + (size_t)expert * (Inputs / 2) * Outputs;
    const BFloat* scales = quant.scales + expert * (Inputs / 128) * Outputs;
    const BFloat* zeros = quant.zeros + expert * (Inputs / 128) * Outputs;
    #pragma unroll
    for (int group = 0; group < 2; ++group) {
        int group_index = split * 2 + group;
        uint2 packed_scale = column < Outputs ? *reinterpret_cast<const uint2*>(scales + group_index * Outputs + column) : make_uint2(0, 0);
        uint2 packed_zero = column < Outputs ? *reinterpret_cast<const uint2*>(zeros + group_index * Outputs + column) : make_uint2(0, 0);
        __nv_bfloat162 scale[2] = {bf2bits(__byte_perm(packed_scale.x, packed_scale.y, 0x5410)), bf2bits(__byte_perm(packed_scale.x, packed_scale.y, 0x7632))};
        __nv_bfloat162 zero[2] = {bf2bits(__byte_perm(packed_zero.x, packed_zero.y, 0x5410)), bf2bits(__byte_perm(packed_zero.x, packed_zero.y, 0x7632))};
        #pragma unroll
        for (int offset = 0; offset < 8; ++offset) {
            int input_pair = group_index * 64 + warp + offset * 8;
            unsigned int bits = column < Outputs ? *reinterpret_cast<const unsigned int*>(packed + input_pair * Outputs + column) : 0;
            float even = activation[input_pair * 2 - activation_offset];
            float odd = activation[input_pair * 2 + 1 - activation_offset];
            #pragma unroll
            for (int component = 0; component < 2; ++component) {
                float2 low = dequant_pair(bits >> (component * 8), zero[component], scale[component]);
                float2 high = dequant_pair(bits >> (component * 8 + 4), zero[component], scale[component]);
                result[component] = fmaf(even, low.x, result[component]);
                result[component + 2] = fmaf(even, low.y, result[component + 2]);
                result[component] = fmaf(odd, high.x, result[component]);
                result[component + 2] = fmaf(odd, high.y, result[component + 2]);
            }
        }
    }
    reinterpret_cast<float4*>(shared)[threadIdx.x] = make_float4(result[0], result[1], result[2], result[3]);
    __syncthreads();
    if (threadIdx.x < 128) {
        float sum = 0;
        #pragma unroll
        for (int slice = 0; slice < 8; ++slice) sum += shared[slice * 128 + threadIdx.x];
        int output = (task % Tiles) * 128 + threadIdx.x;
        if (output < Outputs) partial[split * Outputs + output] = sum;
    }
    __syncthreads();
}

template<int Outputs>
__device__ __forceinline__ void dense_rows(
    const BFloat* weight, const float* input, float* result, int task, float* shared) {
    float accum = 0;
    #pragma unroll
    for (int index = 0; index < 9; ++index) {
        int column = threadIdx.x + index * 256;
        accum = fmaf(__bfloat162float(weight[task * 2304 + column]), input[column], accum);
    }
    accum = block_sum(accum, shared);
    if (threadIdx.x == 0) result[task] = bfround(accum);
}

__device__ __forceinline__ void kda_state(
    const Layer& layer, const State& state, const float* partial,
    const float* beta, float* output, int task, float* shared) {
    int head = task / 8;
    int value_start = (task % 8) * 16;
    int lane = threadIdx.x & 15;
    int warp = threadIdx.x >> 4;
    if (threadIdx.x < 128) {
        int channel = head * 128 + threadIdx.x;
        float projections[4] = {0, 0, 0, 0};
        #pragma unroll
        for (int projection = 0; projection < 4; ++projection) {
            #pragma unroll
            for (int split = 0; split < 9; ++split)
                projections[projection] += partial[(projection * 9 + split) * 4096 + channel];
            projections[projection] = bfround(projections[projection]);
        }
        #pragma unroll
        for (int projection = 0; projection < 3; ++projection) {
            float convolved = 0;
            #pragma unroll
            for (int time = 0; time < 3; ++time) {
                float value = __bfloat162float(state.old_conv[projection][time * 4096 + channel]);
                convolved += value * __bfloat162float(layer.conv[(projection * 4096 + channel) * 4 + time]);
                if (task % 8 == 0 && time > 0)
                    state.new_conv[projection][(time - 1) * 4096 + channel] = __float2bfloat16_rn(value);
            }
            convolved += projections[projection] * __bfloat162float(layer.conv[(projection * 4096 + channel) * 4 + 3]);
            if (task % 8 == 0)
                state.new_conv[projection][2 * 4096 + channel] = __float2bfloat16_rn(projections[projection]);
            shared[projection * 128 + threadIdx.x] = bfround(convolved / (1.0f + __expf(-convolved)));
        }
        shared[384 + threadIdx.x] = 1.0f / (1.0f + __expf(projections[3]));
    }
    __syncthreads();
    float state_values[8];
    float prediction = 0;
    #pragma unroll
    for (int index = 0; index < 8; ++index) {
        int key = warp + index * 16;
        float value = state.old_state[head * 16384 + key * 128 + value_start + lane] * shared[384 + key];
        state_values[index] = value;
        prediction += value * shared[128 + key];
    }
    shared[512 + threadIdx.x] = prediction;
    __syncthreads();
    if (warp == 0) {
        float prediction_sum = 0;
        #pragma unroll
        for (int slice = 0; slice < 16; ++slice) prediction_sum += shared[512 + slice * 16 + lane];
        shared[768 + lane] = (shared[256 + value_start + lane] - prediction_sum) / (1.0f + __expf(-beta[head]));
    }
    __syncthreads();
    float delta = shared[768 + lane];
    float result = 0;
    #pragma unroll
    for (int index = 0; index < 8; ++index) {
        int key = warp + index * 16;
        float value = state_values[index] + shared[128 + key] * delta;
        state.new_state[head * 16384 + key * 128 + value_start + lane] = value;
        result += value * (shared[key] * 0.08838834764831845f);
    }
    shared[512 + threadIdx.x] = result;
    __syncthreads();
    if (warp == 0) {
        float sum = 0;
        #pragma unroll
        for (int slice = 0; slice < 16; ++slice) sum += shared[512 + slice * 16 + lane];
        output[head * 128 + value_start + lane] = bfround(sum);
    }
    __syncthreads();
}

__device__ __forceinline__ void choose_experts(float* route, float scale, int experts) {
    if (threadIdx.x < 32) {
        int lane = threadIdx.x;
        int* indices = reinterpret_cast<int*>(route + 128);
        unsigned int first = __float_as_uint(route[lane]);
        unsigned int second = __float_as_uint(route[lane + 32]);
        first = first & 0x80000000u ? ~first : first ^ 0x80000000u;
        second = second & 0x80000000u ? ~second : second ^ 0x80000000u;
        float total = 0, maximum = 0, chosen = 0;
        int chosen_index = 0;
        #pragma unroll
        for (int rank = 0; rank < 8; ++rank) {
            unsigned int key = __reduce_max_sync(0xffffffff, max(first, second));
            int index = first == key ? lane : second == key ? lane + 32 : 64;
            index = __reduce_min_sync(0xffffffff, index);
            float largest = __uint_as_float(key & 0x80000000u ? key ^ 0x80000000u : ~key);
            if (rank == 0) maximum = largest;
            float probability = __expf(largest - maximum);
            total += probability;
            if (lane == rank) {
                chosen = probability;
                chosen_index = index;
            }
            if (index == lane) first = 0;
            if (index == lane + 32) second = 0;
        }
        if (lane < 8) {
            route[64 + lane] = chosen * (scale / total);
            indices[lane] = chosen_index;
        } else if (lane == 8) {
            indices[8] = 0;
            route[72] = 1.0f;
        }
    }
}

__device__ __forceinline__ void mla_prepare(
    const Arguments& args, const float* partial, float* query,
    BFloat* query_rope) {
    int global = blockIdx.x * 256 + threadIdx.x;
    int stride = gridDim.x * 256;
    for (int pair = global; pair < 3072; pair += stride) {
        int head = pair / 96;
        int dim = (pair % 96) * 2;
        float even = 0, odd = 0;
        #pragma unroll
        for (int split = 0; split < 9; ++split) {
            even += partial[split * 6144 + head * 192 + dim];
            odd += partial[split * 6144 + head * 192 + dim + 1];
        }
        even = bfround(even);
        odd = bfround(odd);
        if (dim < 128) {
            query[head * 192 + dim] = even;
            query[head * 192 + dim + 1] = odd;
        } else {
            int rotary = dim - 128;
            float angle = args.context * powf(10000.0f, -float(rotary) / 64.0f);
            float sine, cosine;
            __sincosf(angle, &sine, &cosine);
            query_rope[head * 64 + rotary] = __float2bfloat16_rn(even * cosine - odd * sine);
            query_rope[head * 64 + rotary + 1] = __float2bfloat16_rn(odd * cosine + even * sine);
        }
    }
    for (int pair = global; pair < 288; pair += stride) {
        float even = 0, odd = 0;
        #pragma unroll
        for (int split = 0; split < 9; ++split) {
            even += partial[9 * 6144 + split * 576 + pair * 2];
            odd += partial[9 * 6144 + split * 576 + pair * 2 + 1];
        }
        even = bfround(even);
        odd = bfround(odd);
        if (pair < 256) {
            args.latent[args.context * 512 + pair * 2] = __float2bfloat16_rn(even);
            args.latent[args.context * 512 + pair * 2 + 1] = __float2bfloat16_rn(odd);
        } else {
            int rotary = (pair - 256) * 2;
            float angle = args.context * powf(10000.0f, -float(rotary) / 64.0f);
            float sine, cosine;
            __sincosf(angle, &sine, &cosine);
            args.rope[args.context * 64 + rotary] = __float2bfloat16_rn(even * cosine - odd * sine);
            args.rope[args.context * 64 + rotary + 1] = __float2bfloat16_rn(odd * cosine + even * sine);
        }
    }
    if (args.old_latent != args.latent)
        for (int index = global; index < args.context * 512; index += stride)
            args.latent[index] = args.old_latent[index];
    if (args.old_rope != args.rope)
        for (int index = global; index < args.context * 64; index += stride)
            args.rope[index] = args.old_rope[index];
    int padded = ((args.context + 64) / 64) * 64;
    for (int index = (args.context + 1) * 512 + global; index < padded * 512; index += stride)
        args.latent[index] = __float2bfloat16_rn(0);
    for (int index = (args.context + 1) * 64 + global; index < padded * 64; index += stride)
        args.rope[index] = __float2bfloat16_rn(0);
}

__device__ __forceinline__ void absorb_query(
    Quant quant, const float* query, BFloat* absorbed, int task) {
    int lane = threadIdx.x & 31;
    int latent = (task % 64) * 8 + (threadIdx.x >> 5);
    int head = task / 64;
    float result = 0;
    #pragma unroll
    for (int part = 0; part < 4; ++part) {
        int channel = head * 256 + lane + part * 32;
        unsigned int bits = quant.weight[(latent / 2) * 8192 + channel];
        float value = float((bits >> ((latent & 1) * 4)) & 15);
        float zero = __bfloat162float(quant.zeros[(latent / 128) * 8192 + channel]);
        float scale = __bfloat162float(quant.scales[(latent / 128) * 8192 + channel]);
        value = bfround(bfround(value - zero) * scale);
        result = fmaf(value, query[head * 192 + lane + part * 32], result);
    }
    result = warp_sum(result);
    if (lane == 0) absorbed[head * 512 + latent] = __float2bfloat16_rn(result);
}

__device__ __forceinline__ void async_latent_tile(
    const BFloat* latent, BFloat* destination, int task, int feature) {
    #pragma unroll
    for (int vector = threadIdx.x; vector < 1024; vector += 256) {
        int row = vector / 16;
        int column = (vector % 16) * 8;
        unsigned int address = __cvta_generic_to_shared(destination + row * 136 + column);
        const BFloat* source = latent + (task * 64 + row) * 512 + feature + column;
        asm volatile("cp.async.ca.shared.global [%0], [%1], 16;" [REDACTED: IP] "r"(address), "l"(source) : "memory");
    }
    asm volatile("cp.async.commit_group;" ::: "memory");
}

__device__ __forceinline__ void latent_attention(
    const Arguments& args, const BFloat* query, const BFloat* query_rope,
    float* results, float* stats, int task, float* shared) {
    int warp = threadIdx.x >> 5;
    int lane = threadIdx.x & 31;
    int head = (warp / 4) * 16;
    wm::fragment<wm::matrix_a, 16, 16, 16, BFloat, wm::row_major> query_fragment;
    wm::fragment<wm::matrix_b, 16, 16, 16, BFloat, wm::col_major> key_fragment;
    wm::fragment<wm::accumulator, 16, 16, 16, float> accumulator;
    BFloat* shared_query = reinterpret_cast<BFloat*>(shared);
    BFloat* shared_key = reinterpret_cast<BFloat*>(shared + 3584);
    wm::fill_fragment(accumulator, 0.0f);
    async_latent_tile(args.latent, shared_key, task, 0);
    #pragma unroll 1
    for (int feature = 0; feature < 512; feature += 128) {
        for (int vector = threadIdx.x; vector < 512; vector += 256) {
            int row = vector / 16;
            int column = (vector % 16) * 8;
            *reinterpret_cast<uint4*>(shared_query + row * 136 + column) = *reinterpret_cast<const uint4*>(query + row * 512 + feature + column);
        }
        BFloat* current_key = shared_key + ((feature / 128) % 2) * 8704;
        if (feature < 384) {
            async_latent_tile(args.latent, shared_key + (((feature / 128) + 1) % 2) * 8704, task, feature + 128);
            asm volatile("cp.async.wait_group 1;" ::: "memory");
        } else {
            asm volatile("cp.async.wait_group 0;" ::: "memory");
        }
        __syncthreads();
        #pragma unroll
        for (int dim = 0; dim < 128; dim += 16) {
            wm::load_matrix_sync(query_fragment, shared_query + head * 136 + dim, 136);
            wm::load_matrix_sync(key_fragment, current_key + (warp % 4) * 16 * 136 + dim, 136);
            wm::mma_sync(accumulator, query_fragment, key_fragment, accumulator);
        }
        __syncthreads();
    }
    for (int vector = threadIdx.x; vector < 256; vector += 256)
        *reinterpret_cast<uint4*>(shared_query + (vector / 8) * 72 + (vector % 8) * 8) = reinterpret_cast<const uint4*>(query_rope)[vector];
    for (int vector = threadIdx.x; vector < 512; vector += 256)
        *reinterpret_cast<uint4*>(shared_key + (vector / 8) * 72 + (vector % 8) * 8) = reinterpret_cast<const uint4*>(args.rope + task * 64 * 64)[vector];
    __syncthreads();
    #pragma unroll
    for (int dim = 0; dim < 64; dim += 16) {
        wm::load_matrix_sync(query_fragment, shared_query + head * 72 + dim, 72);
        wm::load_matrix_sync(key_fragment, shared_key + (warp % 4) * 16 * 72 + dim, 72);
        wm::mma_sync(accumulator, query_fragment, key_fragment, accumulator);
    }
    __syncthreads();
    wm::store_matrix_sync(shared + head * 72 + (warp % 4) * 16, accumulator, 72, wm::mem_row_major);
    __syncthreads();
    BFloat* probabilities = reinterpret_cast<BFloat*>(shared + 2304);
    #pragma unroll
    for (int iteration = 0; iteration < 4; ++iteration) {
        int row = warp + iteration * 8;
        float first = task * 64 + lane <= args.context ? shared[row * 72 + lane] * 0.07216878364870322f : -INFINITY;
        float second = task * 64 + lane + 32 <= args.context ? shared[row * 72 + lane + 32] * 0.07216878364870322f : -INFINITY;
        float maximum = warp_max(fmaxf(first, second));
        maximum = __shfl_sync(0xffffffff, maximum, 0);
        first = __expf(first - maximum);
        second = __expf(second - maximum);
        float sum = warp_sum(first + second);
        probabilities[row * 72 + lane] = __float2bfloat16_rn(first);
        probabilities[row * 72 + lane + 32] = __float2bfloat16_rn(second);
        if (lane == 0) {
            stats[task * 64 + row] = maximum;
            stats[task * 64 + 32 + row] = sum;
        }
    }
    __syncthreads();
    wm::fragment<wm::matrix_b, 16, 16, 16, BFloat, wm::row_major> value_fragment;
    async_latent_tile(args.latent, shared_key, task, 0);
    #pragma unroll 1
    for (int feature = 0; feature < 512; feature += 128) {
        BFloat* current_key = shared_key + ((feature / 128) % 2) * 8704;
        if (feature < 384) {
            async_latent_tile(args.latent, shared_key + (((feature / 128) + 1) % 2) * 8704, task, feature + 128);
            asm volatile("cp.async.wait_group 1;" ::: "memory");
        } else {
            asm volatile("cp.async.wait_group 0;" ::: "memory");
        }
        __syncthreads();
        #pragma unroll
        for (int tile = warp; tile < 16; tile += 8) {
            int row = (tile / 8) * 16;
            int dim = (tile % 8) * 16;
            wm::fill_fragment(accumulator, 0.0f);
            #pragma unroll
            for (int inner = 0; inner < 64; inner += 16) {
                wm::load_matrix_sync(query_fragment, probabilities + row * 72 + inner, 72);
                wm::load_matrix_sync(value_fragment, current_key + inner * 136 + dim, 136);
                wm::mma_sync(accumulator, query_fragment, value_fragment, accumulator);
            }
            wm::store_matrix_sync(results + task * 16384 + row * 512 + feature + dim, accumulator, 512, wm::mem_row_major);
        }
        __syncthreads();
    }
    __syncthreads();
}

__device__ __forceinline__ void merge_attention(
    const float* partial, const float* stats, float* latent, int parts,
    int task, float* shared) {
    int head = task / 8;
    float maximum = -INFINITY;
    for (int part = threadIdx.x; part < parts; part += 256)
        maximum = fmaxf(maximum, stats[part * 64 + head]);
    maximum = warp_max(maximum);
    if ((threadIdx.x & 31) == 0) shared[threadIdx.x >> 5] = maximum;
    __syncthreads();
    if (threadIdx.x < 32) {
        maximum = threadIdx.x < 8 ? shared[threadIdx.x] : -INFINITY;
        maximum = warp_max(maximum);
        if (threadIdx.x == 0) shared[0] = maximum;
    }
    __syncthreads();
    maximum = shared[0];
    float denominator = 0;
    for (int part = threadIdx.x; part < parts; part += 256) {
        float factor = __expf(stats[part * 64 + head] - maximum);
        shared[256 + part] = factor;
        denominator += factor * stats[part * 64 + 32 + head];
    }
    denominator = block_sum(denominator, shared);
    int dim = (task % 8) * 64 + (threadIdx.x % 64);
    float result = 0;
    for (int part = threadIdx.x / 64; part < parts; part += 4)
        result = fmaf(shared[256 + part], partial[part * 16384 + head * 512 + dim], result);
    shared[7936 + threadIdx.x] = result;
    __syncthreads();
    if (threadIdx.x < 64) {
        float sum = shared[7936 + threadIdx.x] + shared[8000 + threadIdx.x] + shared[8064 + threadIdx.x] + shared[8128 + threadIdx.x];
        latent[head * 512 + dim] = sum / denominator;
    }
    __syncthreads();
}

__device__ __forceinline__ void latent_values(
    Quant quant, const float* latent, float* output, int task, float* shared) {
    int head = task / 4;
    int group = task % 4;
    int lane = threadIdx.x & 31;
    int warp = threadIdx.x >> 5;
    float result[4] = {0, 0, 0, 0};
    int channel = head * 256 + 128 + lane * 4;
    uint2 packed_scale = *reinterpret_cast<const uint2*>(quant.scales + group * 8192 + channel);
    uint2 packed_zero = *reinterpret_cast<const uint2*>(quant.zeros + group * 8192 + channel);
    __nv_bfloat162 scale[2] = {bf2bits(__byte_perm(packed_scale.x, packed_scale.y, 0x5410)), bf2bits(__byte_perm(packed_scale.x, packed_scale.y, 0x7632))};
    __nv_bfloat162 zero[2] = {bf2bits(__byte_perm(packed_zero.x, packed_zero.y, 0x5410)), bf2bits(__byte_perm(packed_zero.x, packed_zero.y, 0x7632))};
    #pragma unroll
    for (int offset = 0; offset < 8; ++offset) {
        int pair = group * 64 + warp + offset * 8;
        unsigned int bits = *reinterpret_cast<const unsigned int*>(quant.weight + pair * 8192 + channel);
        float even = latent[head * 512 + pair * 2];
        float odd = latent[head * 512 + pair * 2 + 1];
        #pragma unroll
        for (int component = 0; component < 2; ++component) {
            float2 low = dequant_pair(bits >> (component * 8), zero[component], scale[component]);
            float2 high = dequant_pair(bits >> (component * 8 + 4), zero[component], scale[component]);
            result[component] = fmaf(even, low.x, result[component]);
            result[component + 2] = fmaf(even, low.y, result[component + 2]);
            result[component] = fmaf(odd, high.x, result[component]);
            result[component + 2] = fmaf(odd, high.y, result[component + 2]);
        }
    }
    reinterpret_cast<float4*>(shared)[threadIdx.x] = make_float4(result[0], result[1], result[2], result[3]);
    __syncthreads();
    if (threadIdx.x < 128) {
        float sum = 0;
        #pragma unroll
        for (int slice = 0; slice < 8; ++slice) sum += shared[slice * 128 + threadIdx.x];
        output[group * 4096 + head * 128 + threadIdx.x] = sum;
    }
    __syncthreads();
}

__global__ __launch_bounds__(256, 2) void hybrid_decode(Arguments args) {
    __shared__ __align__(32) float shared[12288];
    cg::grid_group grid = cg::this_grid();
    float* normalized = args.workspace + X_OFFSET;
    float* hidden = args.workspace + H_OFFSET;
    float* partial = args.workspace + PART_OFFSET;
    float* aux = args.workspace + AUX_OFFSET;
    float* route = args.workspace + ROUTE_OFFSET;
    BFloat* query_latent = reinterpret_cast<BFloat*>(args.workspace + QLAT_OFFSET);
    BFloat* query_rope = reinterpret_cast<BFloat*>(args.workspace + QROPE_OFFSET);
    float* mixed_latent = args.workspace + MLAT_OFFSET;
    float* att_partial = args.workspace + ATT_OFFSET;
    int attention_parts = (args.context + 64) / 64;
    float* att_stats = att_partial + attention_parts * 16384;
    int global = blockIdx.x * 256 + threadIdx.x;
    int stride = gridDim.x * 256;

    for (int layer_index = 0; layer_index < 4; ++layer_index) {
        const Layer& layer = args.layers[layer_index];
        float* local_normalized = shared + 1024;
        normalize(hidden, layer_index == 0 ? args.hidden : nullptr, layer.attn_norm, local_normalized, shared);
        __syncthreads();
        if (layer_index < 3) {
            for (int task = blockIdx.x; task < 4 * 9 * 32; task += gridDim.x) {
                int projection = task / (9 * 32);
                gemv<2304, 4096>(layer.attn[projection], local_normalized,
                    partial + projection * 9 * 4096, task % (9 * 32), 0, shared);
            }
            if (blockIdx.x < 32) dense_rows<32>(layer.beta, local_normalized, route, blockIdx.x, shared);
            grid.sync();
            for (int task = blockIdx.x; task < 256; task += gridDim.x)
                kda_state(layer, args.states[layer_index], partial, route, aux, task, shared);
            grid.sync();
        } else {
            for (int task = blockIdx.x; task < 9 * 48 + 9 * 5; task += gridDim.x) {
                if (task < 9 * 48)
                    gemv<2304, 6144>(layer.attn[0], local_normalized, partial, task, 0, shared);
                else
                    gemv<2304, 576>(layer.attn[1], local_normalized, partial + 9 * 6144, task - 9 * 48, 0, shared);
            }
            grid.sync();
            mla_prepare(args, partial, aux, query_rope);
            grid.sync();
            for (int task = blockIdx.x; task < 32 * 64; task += gridDim.x)
                absorb_query(layer.attn[2], aux, query_latent, task);
            grid.sync();
            for (int task = blockIdx.x; task < attention_parts; task += gridDim.x)
                latent_attention(args, query_latent, query_rope, att_partial, att_stats, task, shared);
            grid.sync();
            for (int task = blockIdx.x; task < 256; task += gridDim.x)
                merge_attention(att_partial, att_stats, mixed_latent, attention_parts, task, shared);
            grid.sync();
            for (int task = blockIdx.x; task < 128; task += gridDim.x)
                latent_values(layer.attn[2], mixed_latent, aux, task, shared);
            grid.sync();
        }
        for (int task = blockIdx.x; task < 16 * 18; task += gridDim.x) {
            if (layer_index == 3) {
                int offset = (task / 18) * 256;
                int channel = offset + threadIdx.x;
                local_normalized[threadIdx.x] = bfround(aux[channel] + aux[4096 + channel] + aux[8192 + channel] + aux[12288 + channel]);
                __syncthreads();
                gemv<4096, 2304>(layer.attn[4], local_normalized, partial, task, 0, shared, offset);
            } else {
                gemv<4096, 2304>(layer.attn[4], aux, partial, task, 0, shared);
            }
        }
        grid.sync();
        float* post_attention = aux + 4096;
        if (blockIdx.x < args.experts) {
            #pragma unroll
            for (int index = 0; index < 9; ++index) {
                int channel = threadIdx.x + index * 256;
                float value = 0;
                #pragma unroll
                for (int split = 0; split < 16; ++split) value += partial[split * 2304 + channel];
                float residual = layer_index == 0 ? __bfloat162float(args.hidden[channel]) : hidden[channel];
                float result = bfround(residual + bfround(value));
                local_normalized[channel] = result;
                if (blockIdx.x == 0) post_attention[channel] = result;
            }
            __syncthreads();
            normalize(local_normalized, nullptr, layer.moe_norm, local_normalized, shared);
            __syncthreads();
            dense_rows<64>(layer.router, local_normalized, route, blockIdx.x, shared);
            if (blockIdx.x == 0)
                for (int channel = threadIdx.x; channel < 2304; channel += 256)
                    normalized[channel] = local_normalized[channel];
        }
        grid.sync();
        float* local_route = shared + 3328;
        if (threadIdx.x < 64) local_route[threadIdx.x] = route[threadIdx.x];
        __syncthreads();
        choose_experts(local_route, args.routing_scale, args.experts);
        __syncthreads();
        if (blockIdx.x == 0 && threadIdx.x < 9)
            route[64 + threadIdx.x] = local_route[64 + threadIdx.x];
        const int* indices = reinterpret_cast<const int*>(local_route + 128);
        for (int task = blockIdx.x; task < 2 * 9 * 9 * 8; task += gridDim.x) {
            int projection = task / (9 * 9 * 8);
            int expert = (task / (9 * 8)) % 9;
            int quant_index = projection + (expert == 8 ? 3 : 0);
            gemv<2304, 1024>(layer.moe[quant_index], normalized,
                partial + (projection * 9 + expert) * 9 * 1024,
                task % (9 * 8), indices[expert], shared);
        }
        grid.sync();
        for (int task = blockIdx.x; task < 9 * 4 * 18; task += gridDim.x) {
            int expert = task / (4 * 18);
            int offset = ((task / 18) % 4) * 256;
            int channel = offset + threadIdx.x;
            float gate = 0, up = 0;
            #pragma unroll
            for (int split = 0; split < 9; ++split) {
                gate += partial[(expert * 9 + split) * 1024 + channel];
                up += partial[((9 + expert) * 9 + split) * 1024 + channel];
            }
            local_normalized[threadIdx.x] = (gate / (1.0f + __expf(-gate))) * up;
            __syncthreads();
            gemv<1024, 2304>(layer.moe[expert == 8 ? 5 : 2], local_normalized,
                att_partial + expert * 4 * 2304, task % (4 * 18), indices[expert], shared, offset);
        }
        grid.sync();
        for (int channel = global; channel < 2304; channel += stride) {
            float value = 0;
            #pragma unroll
            for (int expert = 0; expert < 9; ++expert) {
                float output = 0;
                #pragma unroll
                for (int split = 0; split < 4; ++split)
                    output += att_partial[(expert * 4 + split) * 2304 + channel];
                value += route[64 + expert] * output;
            }
            float result = bfround(post_attention[channel] + bfround(value));
            if (layer_index == 3) args.output[channel] = __float2bfloat16_rn(result);
            else hidden[channel] = result;
        }
        if (layer_index < 3) grid.sync();
    }
}

class Runner {
    Arguments args_{};
    std::vector<torch::Tensor> weights_;
    int blocks_;
public:
    Runner(std::vector<torch::Tensor> weights, int experts, double routing_scale)
        : weights_(std::move(weights)) {
        size_t position = 0;
        auto next_bf = [&]() { return reinterpret_cast<const BFloat*>(weights_[position++].data_ptr()); };
        auto next_quant = [&]() {
            Quant quant;
            quant.weight = weights_[position++].data_ptr<unsigned char>();
            quant.scales = next_bf();
            quant.zeros = next_bf();
            return quant;
        };
        for (int index = 0; index < 4; ++index) {
            Layer& layer = args_.layers[index];
            layer.attn_norm = next_bf();
            layer.moe_norm = next_bf();
            if (index < 3) {
                for (int projection = 0; projection < 4; ++projection) layer.attn[projection] = next_quant();
                layer.beta = next_bf();
                layer.conv = next_bf();
            } else {
                for (int projection = 0; projection < 3; ++projection) layer.attn[projection] = next_quant();
            }
            layer.attn[4] = next_quant();
            layer.router = next_bf();
            for (int projection = 0; projection < 6; ++projection) layer.moe[projection] = next_quant();
        }
        args_.experts = experts;
        args_.routing_scale = float(routing_scale);
        int device, multiprocessors, resident;
        C10_CUDA_CHECK(cudaGetDevice(&device));
        C10_CUDA_CHECK(cudaDeviceGetAttribute(&multiprocessors, cudaDevAttrMultiProcessorCount, device));
        C10_CUDA_CHECK(cudaOccupancyMaxActiveBlocksPerMultiprocessor(&resident, hybrid_decode, 256, 0));
        blocks_ = multiprocessors * std::min(resident, 2);
    }

    void step(torch::Tensor hidden, torch::Tensor output, torch::Tensor workspace,
              std::vector<torch::Tensor> old_state, std::vector<torch::Tensor> new_state,
              int context) {
        Arguments args = args_;
        args.hidden = reinterpret_cast<const BFloat*>(hidden.data_ptr());
        args.output = reinterpret_cast<BFloat*>(output.data_ptr());
        args.workspace = workspace.data_ptr<float>();
        args.context = context;
        for (int layer = 0; layer < 3; ++layer) {
            args.states[layer].old_state = old_state[layer * 4].data_ptr<float>();
            args.states[layer].new_state = new_state[layer * 4].data_ptr<float>();
            for (int projection = 0; projection < 3; ++projection) {
                args.states[layer].old_conv[projection] = reinterpret_cast<const BFloat*>(old_state[layer * 4 + 1 + projection].data_ptr());
                args.states[layer].new_conv[projection] = reinterpret_cast<BFloat*>(new_state[layer * 4 + 1 + projection].data_ptr());
            }
        }
        args.old_latent = reinterpret_cast<const BFloat*>(old_state[12].data_ptr());
        args.old_rope = reinterpret_cast<const BFloat*>(old_state[13].data_ptr());
        args.latent = reinterpret_cast<BFloat*>(new_state[12].data_ptr());
        args.rope = reinterpret_cast<BFloat*>(new_state[13].data_ptr());
        void* parameters[] = {&args};
        auto stream = at::cuda::getCurrentCUDAStream();
        C10_CUDA_CHECK(cudaLaunchCooperativeKernel(reinterpret_cast<void*>(hybrid_decode),
            dim3(blocks_), dim3(256), parameters, 0, stream));
    }

    int blocks() const { return blocks_; }
};

PYBIND11_MODULE(TORCH_EXTENSION_NAME, module) {
    pybind11::class_<Runner>(module, "Runner")
        .def(pybind11::init<std::vector<torch::Tensor>, int, double>())
        .def("step", &Runner::step)
        .def("blocks", &Runner::blocks);
}
"""

_extension = None


def _get_extension():
    global _extension
    if _extension is None:
        os.environ["PATH"] = ninja.BIN_DIR + os.pathsep + os.environ["PATH"]
        _extension = load_inline(
            name="kimi_hybrid_megakernel",
            cpp_sources="",
            cuda_sources=_CUDA,
            extra_cuda_cflags=["-O3", "--use_fast_math", "-lineinfo", "-gencode=arch=compute_120,code=sm_120"],
            extra_cflags=["-O3"],
            verbose=False,
        )
    return _extension


class Model(nn.Module):
    def __init__(self, cfg):
        super().__init__()
        if (cfg.hidden, cfg.kda_heads, cfg.kda_head_dim, cfg.short_conv,
            cfg.mla_heads, cfg.kv_lora, cfg.qk_nope, cfg.qk_rope, cfg.v_head,
            cfg.n_experts, cfg.n_active, cfg.n_shared, cfg.moe_inter, cfg.group,
            tuple(cfg.pattern), cfg.dtype, cfg.rope_theta) != (
                2304, 32, 128, 4, 32, 512, 128, 64, 128,
                64, 8, 1, 1024, 128, ("K", "K", "K", "M"), torch.bfloat16, 10000.0):
            raise ValueError("This kernel specializes the Kimi-Linear benchmark motif")
        self.cfg = cfg
        self.blocks = nn.ModuleList(Block(cfg, kind) for kind in cfg.pattern)
        self._runner = None
        self._scratch = None

    def _prepare(self):
        weights = []

        def quant(module):
            weights.extend((module.w_q, module.scales, module.zeros))

        for index, block in enumerate(self.blocks):
            weights.extend((block.attn_norm, block.moe_norm))
            if index < 3:
                for name in ("q_proj", "k_proj", "v_proj", "g_proj"):
                    quant(getattr(block.attn, name))
                weights.extend((block.attn.beta_proj.weight, block.attn.conv_w))
            else:
                for name in ("q_proj", "kv_a", "kv_b"):
                    quant(getattr(block.attn, name))
            quant(block.attn.o_proj)
            weights.append(block.moe.router.weight)
            for name in ("gate", "up", "down", "s_gate", "s_up", "s_down"):
                quant(getattr(block.moe, name))
        self._runner = _get_extension().Runner(weights, self.cfg.n_experts, self.cfg.routed_scaling)

    def step(self, hidden, state):
        if self._runner is None:
            self._prepare()
        context = state[3]["c_kv"].shape[0]
        parts = (context + 64) // 64
        required = 251136 + max(parts * (16384 + 64), 9 * 4 * 2304)
        if self._scratch is None or self._scratch.numel() < required:
            self._scratch = torch.empty(required + 1048576, device=hidden.device, dtype=torch.float32)
        output = torch.empty_like(hidden)
        old_tensors = []
        new_tensors = []
        for index in range(3):
            block_state = state[index]
            for key in ("S", "cq", "ck", "cv"):
                previous = block_state[key]
                updated = torch.empty_like(previous)
                old_tensors.append(previous)
                new_tensors.append(updated)
                block_state[key] = updated
        for key, width in (("c_kv", 512), ("k_rope", 64)):
            previous = state[3][key]
            capacity = previous.untyped_storage().nbytes() // (width * 2)
            if capacity >= parts * 64 and previous.storage_offset() == 0:
                updated = previous.as_strided((context + 1, width), (width, 1))
            else:
                capacity = ((context + 1024) // 1024) * 1024
                updated = torch.empty((capacity, width), device=hidden.device, dtype=hidden.dtype)[:context + 1]
            old_tensors.append(previous)
            new_tensors.append(updated)
            state[3][key] = updated
        self._runner.step(hidden, output, self._scratch, old_tensors, new_tensors, context)
        return output, state


def init_state(cfg, context_len, seed):
    device = torch.device("cuda:0")
    generator = torch.Generator(device=device).manual_seed(seed)
    state = []
    for kind in cfg.pattern:
        if kind == "K":
            block_state = {"S": torch.randn(32, 128, 128, device=device, generator=generator) * 0.05}
            for key in ("cq", "ck", "cv"):
                block_state[key] = torch.randn(3, 4096, device=device, generator=generator, dtype=cfg.dtype) * 0.1
        else:
            block_state = {
                "c_kv": torch.randn(context_len, 512, device=device, generator=generator, dtype=cfg.dtype) * 0.1,
                "k_rope": torch.randn(context_len, 64, device=device, generator=generator, dtype=cfg.dtype) * 0.1,
            }
        state.append(block_state)
    return state


def init_token(cfg, seed):
    device = torch.device("cuda:0")
    generator = torch.Generator(device=device).manual_seed(seed + 1)
    return torch.randn(cfg.hidden, device=device, generator=generator, dtype=cfg.dtype) * 0.25

20260906_153000_codex_openai_gpt-6-astra-pro_02_kimi_linear_decode