De CUDA Kernel Optimizer is een experimentele tool die workload-beschrijvingen omzet in hoogwaardige GPU-implementaties. Het systeem maakt gebruik van een agentisch framework (LangGraph) om een geautomatiseerde cyclus van codegeneratie, correctheidscontroles en benchmarking uit te voeren.
Kernpunten van de werking:
- Iteratief Proces: De tool stelt wijzigingen voor in de kernel-code en launch-configuraties, compileert deze via NVRTC en valideert de output tegen NumPy.
- Optimalisatie: De agent kan NVIDIA-documentatie raadplegen en Nsight Compute-tellers inspecteren om de prestaties te verbeteren.
- Evaluatie: De snelheid wordt bepaald op basis van het meetkundig gemiddelde van de latentie over verschillende testgevallen.
- Output: Na afronding worden de beste kernel (
best.cu), de uitvoeringsgeschiedenis en een timing-heatmap opgeslagen.
Technische Vereisten:
De tool is ontwikkeld voor Windows met een NVIDIA GPU (getest op een RTX 3060 Laptop GPU) en vereist Python 3.12+, CMake, een C++17-compiler en een OpenAI API-sleutel (standaard gebruikmakend van gpt-5-mini).
Waarschuwing: De tool voert gegenereerde scripts en kernels lokaal uit zonder sandbox, wat veiligheidsrisico's met zich meebrengt.
CUDA Kernel Optimizer
Het model kan zowel de kernel-code als de per-geval launch-configuraties wijzigen. Een onafhankelijke C++-harness compileert kernels met NVRTC, start deze via de CUDA Driver API en slaat de output op. Python wordt gebruikt voor de vergelijking en de selectie van kandidaten.
Hoe het werkt
- Initialisatie: Laad of genereer een signatuur, inputgevallen, een referentie-kernel en een initiële kernel.
- Evaluatie: Voer de referentie-kernel uit en evalueer de initiële implementatie.
- Iteratie: Stel een wijziging voor, compileer deze, vergelijk de output met NumPy en meet de latentie van de kernel.
- Verfijning: Voer de resultaten terug in de volgende poging; herstel ongeldige kandidaten binnen het iteratiebudget.
- Finalisatie: Sla de snelste gevalideerde kandidaat, de uitvoeringsgeschiedenis en een timing-heatmap op.
Elk geval moet voldoen aan de validatie. Voor de rangschikking wordt het meetkundig gemiddelde van de latentie over de prestatiegevallen gebruikt; kleine correctheidsgevallen beïnvloeden de score niet. De timing is standaard ingesteld op 10 opwarmingsruns en 100 gemeten runs met behulp van CUDA-events. Compilatietijd en profiler-replay-timings zijn uitgesloten van de rangschikking.
Setup
De tool is ontwikkeld op Windows met een RTX 3060 Laptop GPU. De volgende vereisten zijn noodzakelijk:
- Python 3.12+
- Een NVIDIA GPU en een compatibele CUDA Toolkit/driver
- CMake 3.24+
- Een C++17-compiler
- Een OpenAI API-sleutel
De onderstaande build-commando's maken gebruik van Visual Studio 2026 met de geïnstalleerde C++ tools.
Voer vanuit de root van de repository het volgende uit:
python -m venv .venv
.venv\Scripts\python -m pip install -r optimizer_agent/requirements.txt
cmake -S cuda_test_harness -B cuda_test_harness/build -DCMAKE_BUILD_TYPE=Release
cmake --build cuda_test_harness/build --parallel
Maak vervolgens een .env-bestand aan in de root van de repository:
OPENAI_API_KEY=your-key-here
Uitvoeren
Start de optimizer met het volgende commando:
.venv\Scripts\python optimizer_agent/optimizer_agent.py --description "Single-precision GEMM with rectangular matrices." --max-iterations 7
Het standaardmodel is gpt-5-mini met een medium reasoning-inspanning. API-gebruik wordt gefactureerd aan uw account. Gebruik -h voor alle opties, of --config optimizer_agent/example.json voor het meegeleverde configuratievoorbeeld.
U kunt uw eigen workload-componenten leveren via --signature, --reference, --initial-kernel en --input-cases. Ontbrekende componenten worden afgeleid of gegenereerd. Om verder te gaan vanaf een eerdere run met de opgeslagen inputs:
.venv\Scripts\python optimizer_agent/optimizer_agent.py --description "Single-precision GEMM with rectangular matrices." --input-cases results/run-001/input_cases.json --reference results/run-001/reference.cu --initial-kernel results/run-001/best.cu --max-iterations 7
Dit voorbeeld gaat ervan uit dat de eerdere run reference.cu heeft gegenereerd; geleverde referenties worden opgeslagen als supplied-reference.cu. Input-manifesten behouden paden naar hun binaire data, dus zorg dat deze bestanden beschikbaar blijven.
Optionele vlaggen
--use-nsight: Profileert een prestatiegeval na elke geldige kandidaat en stelt profiler-tools beschikbaar voor het model. Vereist Nsight Compute en toestemming om toegang te krijgen tot GPU-prestatietellers.
--nvidia-research: Haalt NVIDIA-richtlijnen op voordat kernels worden gegenereerd.
Voorbeelden
- Float32 GEMM op een RTX 3060 Laptop GPU, met NVIDIA research en Nsight Compute ingeschakeld.
- Run 022
- Run 023
- Optimalisatie van de gegenereerde startkernel.
- Continuering vanaf de beste kernel van run 022 met dezelfde inputs en referentie.
Resultaten en beperkingen
Elke sessie krijgt een directory onder results/run-NNN/ die het volgende bevat:
- Kernel-bronbestanden
- Verzoeken (requests)
- Input/output-data
- Model/tool-responsen
history.json en summary.json
Succesvolle runs exporteren best.cu, replay-verzoeken per geval en heatmap.png/heatmap.svg. Nsight-rapporten worden opgeslagen wanneer profiling is ingeschakeld.
Dit is een experimentele optimizer voor individuele kernels. Het passeren van de geleverde testgevallen bewijst geen algemene correctheid, en een gegenereerde referentie is geen onafhankelijk correctheid-orakel. Verbeteringen zijn afhankelijk van de workload; er is momenteel geen vergelijking opgenomen met cuBLAS of andere vendor-libraries. Houd de GPU verder ongebruikt bij het vergelijken van timings.
Waarschuwing: Gegenereerde input-scripts worden lokaal uitgevoerd als Python-subprocessen zonder sandbox. Gegenereerde CUDA-kernels worden eveneens op de lokale GPU uitgevoerd.
Workflow-grafiek
De grafiek is gegenereerd vanuit de gecompileerde LangGraph-workflow met Nsight-profiling ingeschakeld. Gestippelde lijnen zijn conditionele routes. Zonder --use-nsight gaat de evaluatie direct naar de volgende poging of naar de finalisatie; NVIDIA research wordt overgeslagen tenzij --nvidia-research is ingesteld.
CUDA Kernel Optimizer
Het model kan zowel de kernel-code als de per-geval launch-configuraties wijzigen. Een onafhankelijke C++-harness compileert kernels met NVRTC, start deze via de CUDA Driver API en slaat de output op. Python wordt gebruikt voor de vergelijking en de selectie van kandidaten.
Hoe het werkt
- Initialisatie: Laad of genereer een signatuur, inputgevallen, een referentie-kernel en een initiële kernel.
- Evaluatie: Voer de referentie-kernel uit en evalueer de initiële implementatie.
- Iteratie: Stel een wijziging voor, compileer deze, vergelijk de output met NumPy en meet de latentie van de kernel.
- Verfijning: Voer de resultaten terug in de volgende poging; herstel ongeldige kandidaten binnen het iteratiebudget.
- Finalisatie: Sla de snelste gevalideerde kandidaat, de uitvoeringsgeschiedenis en een timing-heatmap op.
Elk geval moet voldoen aan de validatie. Voor de rangschikking wordt het meetkundig gemiddelde van de latentie over de prestatiegevallen gebruikt; kleine correctheidsgevallen beïnvloeden de score niet. De timing is standaard ingesteld op 10 opwarmingsruns en 100 gemeten runs met behulp van CUDA-events. Compilatietijd en profiler-replay-timings zijn uitgesloten van de rangschikking.
Setup
De tool is ontwikkeld op Windows met een RTX 3060 Laptop GPU. De volgende vereisten zijn noodzakelijk:
- Python 3.12+
- Een NVIDIA GPU en een compatibele CUDA Toolkit/driver
- CMake 3.24+
- Een C++17-compiler
- Een OpenAI API-sleutel
De onderstaande build-commando's maken gebruik van Visual Studio 2026 met de geïnstalleerde C++ tools.
Voer vanuit de root van de repository het volgende uit:
python -m venv .venv
.venv\Scripts\python -m pip install -r optimizer_agent/requirements.txt
cmake -S cuda_test_harness -B cuda_test_harness/build -DCMAKE_BUILD_TYPE=Release
cmake --build cuda_test_harness/build --parallel
Maak vervolgens een .env-bestand aan in de root van de repository:
OPENAI_API_KEY=your-key-here
Uitvoeren
Start de optimizer met het volgende commando:
.venv\Scripts\python optimizer_agent/optimizer_agent.py --description "Single-precision GEMM with rectangular matrices." --max-iterations 7
Het standaardmodel is gpt-5-mini met een medium reasoning-inspanning. API-gebruik wordt gefactureerd aan uw account. Gebruik -h voor alle opties, of --config optimizer_agent/example.json voor het meegeleverde configuratievoorbeeld.
U kunt uw eigen workload-componenten leveren via --signature, --reference, --initial-kernel en --input-cases. Ontbrekende componenten worden afgeleid of gegenereerd. Om verder te gaan vanaf een eerdere run met de opgeslagen inputs:
.venv\Scripts\python optimizer_agent/optimizer_agent.py --description "Single-precision GEMM with rectangular matrices." --input-cases results/run-001/input_cases.json --reference results/run-001/reference.cu --initial-kernel results/run-001/best.cu --max-iterations 7
Dit voorbeeld gaat ervan uit dat de eerdere run reference.cu heeft gegenereerd; geleverde referenties worden opgeslagen als supplied-reference.cu. Input-manifesten behouden paden naar hun binaire data, dus zorg dat deze bestanden beschikbaar blijven.
Optionele vlaggen
--use-nsight: Profileert een prestatiegeval na elke geldige kandidaat en stelt profiler-tools beschikbaar voor het model. Vereist Nsight Compute en toestemming om toegang te krijgen tot GPU-prestatietellers.
--nvidia-research: Haalt NVIDIA-richtlijnen op voordat kernels worden gegenereerd.
Voorbeelden
- Float32 GEMM op een RTX 3060 Laptop GPU, met NVIDIA research en Nsight Compute ingeschakeld.
- Run 022
- Run 023
- Optimalisatie van de gegenereerde startkernel.
- Continuering vanaf de beste kernel van run 022 met dezelfde inputs en referentie.
Resultaten en beperkingen
Elke sessie krijgt een directory onder results/run-NNN/ die het volgende bevat:
- Kernel-bronbestanden
- Verzoeken (requests)
- Input/output-data
- Model/tool-responsen
history.json en summary.json
Succesvolle runs exporteren best.cu, replay-verzoeken per geval en heatmap.png/heatmap.svg. Nsight-rapporten worden opgeslagen wanneer profiling is ingeschakeld.
Dit is een experimentele optimizer voor individuele kernels. Het passeren van de geleverde testgevallen bewijst geen algemene correctheid, en een gegenereerde referentie is geen onafhankelijk correctheid-orakel. Verbeteringen zijn afhankelijk van de workload; er is momenteel geen vergelijking opgenomen met cuBLAS of andere vendor-libraries. Houd de GPU verder ongebruikt bij het vergelijken van timings.
Waarschuwing: Gegenereerde input-scripts worden lokaal uitgevoerd als Python-subprocessen zonder sandbox. Gegenereerde CUDA-kernels worden eveneens op de lokale GPU uitgevoerd.
Workflow-grafiek
De grafiek is gegenereerd vanuit de gecompileerde LangGraph-workflow met Nsight-profiling ingeschakeld. Gestippelde lijnen zijn conditionele routes. Zonder --use-nsight gaat de evaluatie direct naar de volgende poging of naar de finalisatie; NVIDIA research wordt overgeslagen tenzij --nvidia-research is ingesteld.