Making something just CUDA-compatible is non-trivial, and since Nvidia decides its direction and new features then the alternatives would always be lagging behind. Currently there are also major hardware differences between Nvidia and AMD, which may make highly optimized CUDA code inefficient or even buggy.
[1] https://github.com/ROCm/composable_kernel?tab=readme-ov-file#composable-kernel
[2] https://github.com/triton-lang/triton?tab=readme-ov-file#triton
[3] https://github.com/ROCm/HIP?tab=readme-ov-file#what-is-this-repository-for> The goal of the Hutter Prize is to encourage research in artificial intelligence (AI). The organizers believe that text compression and AI are equivalent problems.
Also, it's not clear if your source is including water use for home irrigation and recreation (lawns and pools?), whereas the US source is.
earlier bedtime (no later than 11:00 pm unless super necessary).
earplugs. I seem to sleep deeper. I think sometimes I'd be woken up and not remember from random sounds outside or even my air conditioning going on.
melatonin/cbd/ashwaganda gummy. Very very small dosage of all of the above.
Not eating for an hour+ before bed. I used to love snacking right before bed, but I don't sleep as well.
Coffee finished before 10:00 am.
A REPL, by its name, is a very narrow version of the broader paradigm of interactive computer programming environments. But Notebooks are not REPLs, unless you use REPL to mean "interactive programming environment" and not REPL. Notebooks are much broader than a REPL! In a notebook, you can go back and edit and run individual lines of the notebook without re-running the whole notebook from the start and without re-computing everything that depends on what you just edited. Behavior like this makes it super hard to track the actual state, and super easy to lose track of how things are how they are. That's pretty terrible!
The parent article links this great talk that goes into more detail than the parent post and is much easier to understand: https://www.youtube.com/watch?v=7jiPeIFXb6U
Isn't this a standard on REPLs as well? You can select the code you wish to run, and press Ctrl+Enter or what ever. I must admit, I've programmed Python for about 10 years in Spyder and VS Code now, but I haven't used notebooks at any point. Just either ad-hoc scripts or actual source files.
My definition of a "notebook" is an ad-hoc script, split into individual "cells" which are typically run as a whole. On my workflow, I just select the code I wish to run. Sometimes it is one expression, one line, 100 lines or 1000 lines depending what I've changed on the script.
An other point is that you don't need to write any CUDA code to be able to utilize GPU computing. If you need ML models, you have frameworks like PyTorch and Tensorflow. You just need to express your mathematical problem, and the framework will take care of the rest.
Even if you needed to write custom GPU code, you don't need to do it in C anymore! For example you can JIT Python, using Numba or Triton.
Usually writing custom code is only required when:
- You are doing something novel, like PhD level stuff
- You must optimize the ML project for performance and trough-put at interference time
- You need to brute-force solutions (be it crypto-hashes, passwords, NP-complete problems, ...)
My last point to you is that do you want to learn to use these pre-existing frameworks and libraries, or learn to develop them or maybe even create new ones? What ever your answer is, I'd say that the first option is a great stepping-stone to advance to the second one.