Getting GPU acceleration working is a common task for those of us running Plex or Jellyfin. There is not much documentation for getting the NVIDIA container stack to work with Podman, even less on Gentoo, plus there have been a lot of changes to NVIDIA’s container toolkit lately.

I have been fighting with Podman for a while now and just recently got it working 1:1 with my Docker setup. Gentoo may not be the most popular or easy to use distro but I documented it in case some poor soul runs across it searching the web.

Feel free to poke holes in it or leave feedback.

  • vluz@kbin.social
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Absolutely stellar write up. Thank you!

    I have a couple of questions.
    Imagine I have a powerful consumer gpu card to trow at this solution, 4090ti for the sake of example.
    - How many containers can share one physical card, taking into account total vram memory will not be exceeded?
    - How does one virtual gpu look like in the container? Can I run standard stuff like PyTorch, Tensorflow, and CUDA stuff in general?

    • moist_towelettes@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Thanks!

      As I understand it, it bind-mounts the /dev/nvidia devices and the CUDA toolkit binaries inside the container, giving it direct access just as if it was running on the host. It’s not virtualized, just running under a different namespace so the VRAM is still being managed by the host driver. I would think the same restrictions exist in containers that would apply for running CUDA applications normally on the host. Personally I’ve had up to 4 containers run GPU processes at the same time on 1 card.

      And yes, Nvidia hosts it’s own GPU accelerated container images for PyTorch, Tensorflow and a bunch of others on the NGC. They also have images with the full CUDA SDK on their dockerhub.

      • vluz@kbin.social
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        That’s wonderful to know! Thank you again.
        I’ll follow your instructions, this implementation is exactly what I was looking for.