3 ms·
Launching kernels manually is an error prone PITA which I believe is the principle reason for CUDA's popularity. Having the compiler give an error when you mess
by nicwilson 10d ago
Launching kernels manually is an error prone PITA which I believe is the principle reason for CUDA's popularity. Having the compiler give an error when you mess up is a huge benefit. But having the compiler allow you to express "I want to launch this kernel over a grid with these dimensions, with these arguments" as a single expression is where the vast majority of the value comes from.
The having it all in a single file is mostly an artefact of the fact that it is C++, because C++ is single file at a time compilation. In D (which is multiple files in a single compiler invocation) with DCompute (which targets CUDA and OpenCL with upcoming support for Vulkan and Metal), you are required to write the kernels in a separate module, but you get all the benefits of the compiler complaining when you mess up _and_ the expressivity of "launch me this kernel".
- oblio 9d ago> Having the compiler give an error when you mess up is a huge benefit. Shouldn't this be alleviated by the current code generation machines?
- nicwilson 9d agoWell yeah, but then you are using code generation, not writing code directly.
- oblio 9d agoI meant LLMs :-)
- high_na_euv 9d agoYou are trying to say that llm can replace compiler?
- oblio 9d agoIn general, no? But they should help with this part: > Launching kernels manually is an error prone PITA which I believe is the principle reason for CUDA's popularity.
- ActorNightly 9d agoWhy is this even a question, of course they can. Write python code, ask any llm to translate it to C, then compile the C code - if it produces errors or fails to run, ask LLM to fix it. Then take it a step further and ask it produce machine code, and repeat the procedure. Then RL the llm on the above, and you basically have a Python -> Machine code compiler. If you cover every single possible python syntax, every single possible C syntax, every possible standard library call, and all the compiler optimization examples (all of which is a final set), you should get something that is extremely accurate.