{"id":8584,"date":"2026-04-24T12:49:44","date_gmt":"2026-04-24T10:49:44","guid":{"rendered":"https:\/\/www.leviatan.io\/blog\/?p=8584"},"modified":"2026-04-24T13:02:13","modified_gmt":"2026-04-24T11:02:13","slug":"optimisation-kernels-cuda-multi-agent","status":"publish","type":"post","link":"https:\/\/www.leviatan.io\/blog\/optimisation-kernels-cuda-multi-agent\/","title":{"rendered":"Optimisation automatique de kernels CUDA multi-agent"},"content":{"rendered":"<h2><b data-path-to-node=\"4\" data-index-in-node=\"0\">Acc\u00e9l\u00e9rez vos GPU en alliant IA et rigueur mat\u00e9rielle<\/b><\/h2>\n<p>Les performances des clusters GPU se jouent au niveau du kernel. En s&rsquo;appuyant sur un syst\u00e8me multi-agent collaboratif, Cursor a r\u00e9ussi \u00e0 optimiser de mani\u00e8re autonome 235 kernels CUDA d\u00e9di\u00e9s aux GPU NVIDIA Blackwell 200, g\u00e9n\u00e9rant un gain de vitesse moyen g\u00e9om\u00e9trique de 38 % en seulement trois semaines, sans intervention humaine.<\/p>\n<h2>Automatisation et gains de performance<\/h2>\n<p data-path-to-node=\"6\">Pour \u00e9valuer ces gains sur 27 GPU NVIDIA Blackwell 200, l&rsquo;outil SOL-ExecBench a \u00e9t\u00e9 utilis\u00e9. Loin des donn\u00e9es synth\u00e9tiques, il a extrait 235 probl\u00e8mes d&rsquo;optimisation depuis 124 mod\u00e8les open-source en production (Deepseek, Qwen, Gemma, Kimi, Stable Diffusion). Cela couvre de vraies contraintes sur des charges d&rsquo;entra\u00eenement et d&rsquo;inf\u00e9rence pour diverses architectures (LLM, diffusion, vision, audio, vid\u00e9o, etc.).<\/p>\n<p data-path-to-node=\"7\">Le benchmark d\u00e9taille une grande diversit\u00e9 de complexit\u00e9s :<\/p>\n<ul data-path-to-node=\"8\">\n<li>\n<p data-path-to-node=\"8,0,0\"><b data-path-to-node=\"8,0,0\" data-index-in-node=\"0\">94 kernels L1 :<\/b> Kernels simples (Softmax, LayerNorm, Activations).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,0\"><b data-path-to-node=\"8,1,0\" data-index-in-node=\"0\">82 kernels L2 :<\/b> Kernels complexes (Full attention blocks, MLP+SwiGLU).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,2,0\"><b data-path-to-node=\"8,2,0\" data-index-in-node=\"0\">33 kernels Quant :<\/b> Op\u00e9rations quantifi\u00e9es FP8\/FP4.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,3,0\"><b data-path-to-node=\"8,3,0\" data-index-in-node=\"0\">26 kernels FlashInfer :<\/b> Variantes d&rsquo;attention sp\u00e9cialis\u00e9es du projet FlashInfer.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"9\">Sur cet ensemble, le workflow zero-shot et it\u00e9ratif de Cursor atteint un <b data-path-to-node=\"9\" data-index-in-node=\"73\">speedup moyen de 38 %<\/b>. SOL-ExecBench compare rigoureusement ces performances aux limites th\u00e9oriques du mat\u00e9riel. Un pipeline anti-triche strict est m\u00eame en place : si des agents utilisent des tactiques trompeuses (comme la mise en cache) pour afficher des performances sup\u00e9rieures \u00e0 ce qu&rsquo;un B200 peut physiquement prendre en charge, le r\u00e9sultat est invalid\u00e9.<\/p>\n<p data-path-to-node=\"10\"><b data-path-to-node=\"10\" data-index-in-node=\"0\">86 % de la performance cuBLAS<\/b><br \/>\nCursor atteint 86 % de la performance d\u2019un kernel GEMM humainement optimis\u00e9 dans cuBLAS. Ce r\u00e9sultat rivalise avec les meilleures pratiques des ing\u00e9nieurs, en un tiers du temps.<\/p>\n<h2>Architecture multi-agent et workflow<\/h2>\n<p>Chaque agent se concentre sur une \u00e9tape du pipeline : g\u00e9n\u00e9ration de code, diagnostics de goulots d\u2019\u00e9tranglement, transformations de boucles, intrinsics CUDA et optimisations m\u00e9moire. Un agent principal orchestre les it\u00e9rations jusqu\u2019\u00e0 convergence.<\/p>\n<h2>Int\u00e9gration CI\/CD pour des d\u00e9ploiements continus<\/h2>\n<p>L\u2019int\u00e9gration directe dans votre pipeline CI\/CD garantit que chaque push d\u00e9clenche une recompilation et un red\u00e9ploiement des kernels optimis\u00e9s. Vous conservez ainsi des performances maximales en production sans intervention manuelle.<\/p>\n<h2>Enjeux techniques et limites<\/h2>\n<p data-path-to-node=\"13\">Malgr\u00e9 ces r\u00e9sultats impressionnants, plusieurs points d&rsquo;attention scientifiques demeurent :<\/p>\n<ul data-path-to-node=\"14\">\n<li>\n<p data-path-to-node=\"14,0,0\"><b data-path-to-node=\"14,0,0\" data-index-in-node=\"0\">Le silence sur la stabilit\u00e9 num\u00e9rique :<\/b> Cursor met en avant la vitesse d&rsquo;ex\u00e9cution pure, mais ne pr\u00e9cise pas si ces optimisations agressives (notamment via des calculs en pr\u00e9cision r\u00e9duite comme le NVFP4 ou le BF16) d\u00e9gradent la qualit\u00e9 des pr\u00e9dictions (l&rsquo;output) du mod\u00e8le. Un kernel ultra-rapide qui alt\u00e8re la perplexit\u00e9 d&rsquo;un LLM n&rsquo;est pas viable en production.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"14,1,0\"><b data-path-to-node=\"14,1,0\" data-index-in-node=\"0\">L&rsquo;absence de validation de bout en bout :<\/b> Les benchmarks valident la performance isol\u00e9e du kernel, mais il manque des donn\u00e9es sur le maintien de la justesse math\u00e9matique de bout en bout sur un pipeline d&rsquo;inf\u00e9rence applicatif complet.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"14,2,0\"><b data-path-to-node=\"14,2,0\" data-index-in-node=\"0\">Le d\u00e9fi de la maintenabilit\u00e9 :<\/b> D\u00e9ployer du code assembleur g\u00e9n\u00e9r\u00e9 par des agents autonomes pose la question du d\u00e9bogage. Si une erreur complexe survient en production, l&rsquo;intervention d&rsquo;un ing\u00e9nieur humain sur ce code ultra-sp\u00e9cialis\u00e9 et g\u00e9n\u00e9r\u00e9 par une IA risque d&rsquo;\u00eatre particuli\u00e8rement ardue.<\/p>\n<\/li>\n<\/ul>\n<h2>Vision business<\/h2>\n<p>Malgr\u00e9 ces d\u00e9fis de co-conception hardware-software, l&rsquo;int\u00e9gration de tels agents dans un pipeline CI\/CD dessine l&rsquo;avenir de l&rsquo;infrastructure. Adopter cette automatisation, c&rsquo;est r\u00e9duire drastiquement vos co\u00fbts de calcul par token et transformer l&rsquo;optimisation extr\u00eame en un avantage comp\u00e9titif continu pour vos charges IA de demain.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez comment Cursor utilise un syst\u00e8me multi-agent pour optimiser vos kernels CUDA avec un gain moyen de 38 % et une int\u00e9gration CI\/CD transparente.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/posts\/8584"}],"collection":[{"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/comments?post=8584"}],"version-history":[{"count":5,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/posts\/8584\/revisions"}],"predecessor-version":[{"id":8598,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/posts\/8584\/revisions\/8598"}],"wp:attachment":[{"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/media?parent=8584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/categories?post=8584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leviatan.io\/blog\/wp-json\/wp\/v2\/tags?post=8584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}