> I'd just really like to see at least one of these to be accompanied by a statement saying what are the kinds of problems the author can now confidently solve that they couldn't before.
I've spent a lot of time with LLMs for the last two years. Something I've tried, almost for decades, is to learn enough CUDA programming to be productive with it when needed. About 6 months ago, after again banging my head against it for weeks, something finally clicked and I feel like I've overcome the initial step of at least grokking the needed ideas so I know where to go next, and I can actually write + compile + use kernels made for my use cases. I won't claim to understand everything, but I couldn't do what I can today, before I learnt the things I now know.
~2 years ago, because of my very weak math foundation, I basically said "Well, CUDA looks really interesting and really fun, but it's too difficult, lets focus on other things", even after reading some starting resources and stuff. But, by asking countless of dumb questions to LLMs, forcing it to steer me in the right direction, when I'm otherwise just driving on the highway or what not, I finally feel like I have a grasp on something I earlier only dreamed about understanding, and I'm able to be productive with it now.
To be fair the entry barrier got a lot lower over the past ~5 years. Now you can write very good CUDA kernels with just a few lines of python DSL code. Zero cpp boilerplate and zero explicit compiler calls.
Stuff like Triton, nvidia warp (the language), numba, cupy jax/pallas and so many others really paved the way. You can start out really high-level, run a profiler and then dive deep into the bottlenecks.
TL,DR: Keep going, it's a great time to have fun with GPUs.
> To be fair the entry barrier got a lot lower over the past ~5 years. Now you can write very good CUDA kernels with just a few lines of python DSL code. Zero cpp boilerplate and zero explicit compiler calls.
Well, yeah, but what I've being doing is learning proper CUDA, not "Python-compiled-to-CUDA" (otherwise it'd take like a just a week to understand enough :P ) and that's looking more or less the same today (although bunch of more complicated stuff piled on top of the fundamentals) as it used to, AFAIK.
With that said, the environment is a lot simpler to setup today at least :)
I wouldn't call one proper CUDA and the other one some dumbed down version. Nvidia really seems to be pushing for these DSLs to be first class within the ecosystem. In some cases probably even more cutting edge than the nvcc frontend, since it's easier to do some experimenting on a new niche package than on the tool everyone relies on.
I believe more and more production code is running kernels which didn't originate from the traditional cuda cpp route.
> I wouldn't call one proper CUDA and the other one some dumbed down version. Nvidia really seems to be pushing for these DSLs to be first class within the ecosystem.
I wouldn't say one is dumbed down either, just different, at least the entrypoints and how you end up using the different solutions.
I'm currently experimenting with cuda-oxide for some new simulations, and managed to keep the entire simulation within just Rust essentially, while going the "traditional" (maybe better term than "proper"?) way I've ended up with a bunch of .cu files and then integrating them (via cudarc usually). Kernels themselves feel the same across both, but the integration clearly makes them different enough that I think it's worth distinguishing them, at least for clarity if nothing else.
If someone else already knew Rust but not C++, wanted to get into CUDA programming, going the cuda-oxide route would probably be easier and more familiar, than cudarc, I'd guess. Personally I'm not sure what route I prefer yet, both (as always?) have tradeoffs.
I've spent a lot of time with LLMs for the last two years. Something I've tried, almost for decades, is to learn enough CUDA programming to be productive with it when needed. About 6 months ago, after again banging my head against it for weeks, something finally clicked and I feel like I've overcome the initial step of at least grokking the needed ideas so I know where to go next, and I can actually write + compile + use kernels made for my use cases. I won't claim to understand everything, but I couldn't do what I can today, before I learnt the things I now know.
~2 years ago, because of my very weak math foundation, I basically said "Well, CUDA looks really interesting and really fun, but it's too difficult, lets focus on other things", even after reading some starting resources and stuff. But, by asking countless of dumb questions to LLMs, forcing it to steer me in the right direction, when I'm otherwise just driving on the highway or what not, I finally feel like I have a grasp on something I earlier only dreamed about understanding, and I'm able to be productive with it now.