Hacker News
Show HN: Agentic CUDA Kernel Optimizer
31 points by bertaye
ago
|
11 comments
Hello; I was working on optimizing some CUDA kernels and I thought may be it is a good oppurtunity learn langgraph as well. I created a simple C++ CUDA Test Harness and handed that to AI agents. They can run kernels, get benchmarks, and even can profile via nsight
fooblaster
|next
[-]
Can someone explain why this isn't better accomplished through a single prompt to Claude code or codex? I don't think I understand.
bertaye
|root
|parent
|next
[-]
Hello, indeed you can just use that.
The basic idea here is just automating and limiting the steps that AI can take. These are described as ‘nodes’ and their actions are limited/more descriptive from developer perspective.
The langgraph simply allows you to set some fences around the AI agent for a goal, instead of raw terminal flow. Is it better? Arguable.
generalizations
|next
|previous
[-]
Very cool. Did you also try using the karpathy autoresearch? How do you think this compares?
aidiveyt
|next
|previous
[-]
in mine, only an agent's final report reaches the orchestrator, never its transcript, so a wrong turn inside a node stays invisible. that's the fence i'd want first.
asamadx
|previous
[-]
respect for shipping something this technical solo, this is the kind of project that usually needs a team to even validate correctness. how are you handling regression testing across kernel variants, feels like the hardest part of an agentic optimizer isn't finding a faster kernel, it's proving the faster one didn't quietly break something
bertaye
|root
|parent
[-]
That is the funny part actually; we can either provide a reference kernel + input cases for correctness check. In this case at first it will use test harness to run reference kernel with reference inputs ad save the outputs as ground truth.
Or we can let AI to create a very basic reference implementation and input cases :D for my own experiments I used second one.
saagarjha
|root
|parent
[-]
How are you checking that the AI is not just gaming your correctness tests? It's very easy to write incorrect synchronization for example.
bertaye
|root
|parent
[-]
It cant if you be cautious about it because the inputs can set manually and outputs are generated through the cuda harness by executing the reference kernel, again can be provided externally.
Comparison is simply byte by byte equalness check of reference kernel outputs with candidate (optimized) outputs.
Why I added ai generated inputs then? I was just being lazy and this was more of a langgraph playground for me:)