OK, maybe you wouldn’t pay three grand for a Project DIGITS PC. But what about a $1,000 Blackwell PC from Acer, Asus, or Lenovo?


Besides, why not use native Linux as the primary operating system on this new chip family? Linux, after all, already runs on the Grace Blackwell Superchip. Windows doesn’t. It’s that simple.

Nowadays, Linux runs well with Nvidia chips. Recent benchmarks show that open-source Linux graphic drivers work with Nvidia GPUs as well as its proprietary drivers.

Even Linus Torvalds thinks Nvidia has gotten its open-source and Linux act together. In August 2023, Torvalds said, “Nvidia got much more involved in the kernel. Nvidia went from being on my list of companies who are not good to my list of companies who are doing really good work.”

  • atzanteol
    link
    fedilink
    English
    arrow-up
    3
    ·
    22 hours ago

    It’s a very difficult problem to solve.

    Different architectures are more than just translating op codes. They have different ways to address memory, different types, sizes and number of registers. Compiled binaries use offsets within the code to jump, loop, etc. which all changes when you start changing instructions. It’s much easier to emulate the platform at runtime.

    • fruitycoder
      link
      fedilink
      arrow-up
      2
      ·
      3 hours ago

      No doubt. Software emulation of different arches is still magic to me. Being able to run qemu to run just one program on the CLI as an arm bin was so neat

      • atzanteol
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        18 minutes ago

        It requires a near obsessive understanding of the architecture being emulated, but generally the process is “relatively straightforward” (though not necessarily “easy”). A CPU is a relatively simple device compared to the software built on it. Your basic steps are:

        1. Read an instruction
        2. Perform the instruction
        3. Jump to the next instruction

        Throw that in a loop and voilà! You have an emulator. Granted I’ve handwaved over a lot of complexity (I don’t mean to trivialize the effort)…

        To translate a binary is very different. Compilers optimize output to behave in a specific way for the target CPU that simply may not work on the new CPU. What do you do, for example, if the code was compiled for a platform that had 12 registers but the new one only has 6? You’d need to re-write the logic to work with fewer registers. That’s difficult to do in a way that is generic for any program. An emulator can just present the program with the 12 registers it expects (emulated in memory at the expense of performance).