Doom port runs entirely on your GPU — no rip-and-tear wear on your CPU

Doom running almost entirely off an AMD RX 6950 XT
Doom running almost entirely off an AMD RX 6950 XT (Image credit: jhuber6)

It seems the influx of ever-ambitious Doom ports is never-ending. Yesterday, the existence of a project called "doomgpu" from jhuber6 on GitHub came to our attention, not long after we covered a separate Doom port for quantum computers dubbed Quandoom. The doomgpu port is much different and quite interesting for those interested in seeing how GPUs can be pushed toward non-graphics compute workloads. This port of Doom using the doomgeneric interface can be run entirely on a GPU under Linux so long as you have the LLVM C library for GPUs.

While the initial testing was done with an AMD GPU, the RX 6950 XT, and some coverage emphasizes that aspect, it's worth noting that this project should work on Nvidia GPUs, too. According to the original creator, "This implementation works on NVIDIA as well as AMDGPU. To use the Nvidia implementation, perform the same steps but with the nvptx loader and make target."

The rest of the guide is geared toward AMD GPU users, and the listed requirements are as follows: Linux, a GPU with ROCm support, an ROCm or ROCR-Runtime installation, SDL2 libraries, and finally an LLVM build off of the main branch. At the time of writing, the LLVM20 build was used. Using the clang compiler, jhuber6 successfully built and ran Doom with single-threaded game logic (the other rendering is multi-threaded) off their Radeon RX 6950 XT. The specific version of Linux used was Arch Linux with kernel version 6.10.5. Still, the officially listed requirement is Linux in general, so it'll probably work fine on any standard x86-geared Linux distribution.

Unfortunately, we only have a screenshot of doomgpu in action, not a video. This, and the lack of some additional documentation, means that we currently don't actually know how well the game runs under these conditions and what kind of performance users can expect. Based on the screenshot provided, the game does at least work well enough to allow some progress into the first few missions without breaking the game or its effects.

Is this a practical port? Absolutely not. The aforementioned quantum computer port isn't all that practical, either. But it does go to show just how much the general compute power of our GPUs has progressed over the years. However, the screenshot also indicates the AMD RX 6950 XT is being pushed to 99% utilization at a mere 1280 x 800 internal resolution.

Christopher Harper
Contributing Writer

Christopher Harper has been a successful freelance tech writer specializing in PC hardware and gaming since 2015, and ghostwrote for various B2B clients in High School before that. Outside of work, Christopher is best known to friends and rivals as an active competitive player in various eSports (particularly fighting games and arena shooters) and a purveyor of music ranging from Jimi Hendrix to Killer Mike to the Sonic Adventure 2 soundtrack.

  • sheepdestroyer
    "Unfortunately, we only have a screenshot of doomgpu in action, not a video. This, and the lack of some additional documentation, means that we currently don't actually know "
    How hard could it be for a tech journalist to do the most basic investigation : find an AMD GPU, git clone the project and run 3 commands to test and report?

    The documentation from the github project in its entirety:

    $ make -C amdgpu_loader/ -j$ make -C doomgeneric/ -f Makefile.amdgpu -j$ ./amdgpu-loader/amdgpu-loader --threads 512 ./doomgeneric/doomgeneric -iwad doom1.wad
    Reply
  • evdjj3j
    sheepdestroyer said:
    How hard could it be for a tech journalist to do the most basic investigation : find an AMD GPU, git clone the project and run 3 commands to test and report?

    The documentation from the github project in its entirety:

    $ make -C amdgpu_loader/ -j$ make -C doomgeneric/ -f Makefile.amdgpu -j$ ./amdgpu-loader/amdgpu-loader --threads 512 ./doomgeneric/doomgeneric -iwad doom1.wad
    They should replace 99% of the "journalists" on this site with AI.
    Reply
  • ezst036
    sheepdestroyer said:
    How hard could it be for a tech journalist to do the most basic investigation : find an AMD GPU, git clone the project and run 3 commands to test and report?

    This.

    Tom's Hardware does videos sometimes. Also does hardware reviews, so they should have no trouble coughing up an RX 69xx series card for a Linux box to see what its all about.
    Reply
  • bit_user
    I think the main point of this is to demonstrate the completeness of the LLVM C library for GPUs. There's a large range of conventional programs you could compile & run entirely on a modern GPU, but few more evocative and attention-grabbing as a classic video game. Sadly, I fear the point will be lost on some, who just see an old video game being GPU-accelerated and think "duh".
    Reply
  • Scraph
    "However, the screenshot also indicates the AMD RX 6950 XT is being pushed to 99% utilization at a mere 1280 x 800 internal resolution."

    This doesn't mean what you think it means.

    The GPU shows 99% utilization because Doom is running in a single kernel launch. Any waiting between frame updates and input events is done by the GPU ... so the GPU is always busy.

    All that the 99% utilization means is what you already said: Doom is running entirely on the GPU.
    Reply
  • TheyCallMeContra
    sheepdestroyer said:
    How hard could it be for a tech journalist to do the most basic investigation : find an AMD GPU, git clone the project and run 3 commands to test and report?

    The documentation from the github project in its entirety:

    $ make -C amdgpu_loader/ -j$ make -C doomgeneric/ -f Makefile.amdgpu -j$ ./amdgpu-loader/amdgpu-loader --threads 512 ./doomgeneric/doomgeneric -iwad doom1.wad
    it's free. test it yourself or pay me if you insist I miss my deadlines for you

    Reply
  • TheyCallMeContra
    evdjj3j said:
    They should replace 99% of the "journalists" on this site with AI.

    ah yes, AI that can't count the number of Rs in strawberry, mistakes recipes for poison for food, and certainly can't actually test software OR hardware in any meaningful capacity. you should learn to appreciate your fellow human, lest you be mistaken for the garbage you treat others as.
    Reply
  • Conor Stewart
    Scraph said:
    "However, the screenshot also indicates the AMD RX 6950 XT is being pushed to 99% utilization at a mere 1280 x 800 internal resolution."

    This doesn't mean what you think it means.

    The GPU shows 99% utilization because Doom is running in a single kernel launch. Any waiting between frame updates and input events is done by the GPU ... so the GPU is always busy.

    All that the 99% utilization means is what you already said: Doom is running entirely on the GPU.
    Yeah GPU utilisation doesn't work like CPU utilisation does. As long as anything is happening on the GPU it counts as utilisation. It is likely due to the architecture, with CPUs time utilisation on a core very closely correlates to actual resource utilisation whereas GPUs are different, likely due to them being split into SM and then individual cores. An SM could be running something 100 % of the time but could only actually be using a single core so whilst the time utilisation of the SM is 100 %, the actual resource utilisation is very low.

    I am very surprised they don't have better tools for measuring GPU utilisation though. I know Nvidia has NSight but that is a bit beyond just showing a percentage in task manager.
    Reply
  • bit_user
    Conor Stewart said:
    Yeah GPU utilisation doesn't work like CPU utilisation does. As long as anything is happening on the GPU it counts as utilisation. It is likely due to the architecture, with CPUs time utilisation on a core very closely correlates to actual resource utilisation whereas GPUs are different, likely due to them being split into SM and then individual cores. An SM could be running something 100 % of the time but could only actually be using a single core so whilst the time utilisation of the SM is 100 %, the actual resource utilisation is very low.

    I am very surprised they don't have better tools for measuring GPU utilisation though. I know Nvidia has NSight but that is a bit beyond just showing a percentage in task manager.
    Nvidia has a system management interface, which appears to be built on NVML. Digging into the details, it seems all you can query is:
    unsigned int gpu - Percent of time over the past sample period during which one or more kernels was executing on the GPU.
    unsigned int memory - Percent of time over the past sample period during which global (device) memory was being read or written.
    Source: https://docs.nvidia.com/deploy/nvml-api/structnvmlUtilization__t.html#structnvmlUtilization__t
    That's part of NVML: https://developer.nvidia.com/management-library-nvml
    Anyway, that does sound consistent with what you're saying task manager shows. I'm also sure you're right that NSight can show actual GPU occupancy, since detecting and mitigating pipeline bubbles is a key aspect of optimizing GPU code.
    Reply