DEV Community

Ákos Takács
Ákos Takács

Posted on

History of GPUs in the context of containers until 2025

Introduction

Years ago, before I started to use Docker, I didn't really care about GPUs. When I was about 12, all I heard, that a good graphics card was required to play some games on a Windows PC. That didn't change much during the years since I wasn't really among people talking about graphics cards and later GPUs for a long time. Now, in the age of containers, Docker and machine learning, everyone is talking about GPUs.

I have done some research to discover the important steps of the evolution of GPUs, but I did it with containers in mind, so I could learn also about important steps of the development of Docker and containers in general in the context of GPUs. That's why I share more GPU-related events until 2017 below, and then speed up, focusing on containers.

It is important to note that many of the events I share, I read in other articles on the internet, but I tried to get multiple sources for confirmation. You will find the links in this post to all of my sources. This one could not have been made without the authors of the sources, so a big thanks to them and please, follow the links if you want to learn more.

Table of contents

The very beginning

» Back to table of contents «

It is not an accident that I didn't hear about using GPUs when I was 12, and not just because I was a kid. The term "GPU" did not exist at the beginning, when we could only talk about graphics cards. So, if we really wanted to go back to the very beginning, we could start with the first attempts at visualization, and talk about the "Manchester Baby", which, according to Britannica, could display images with a cathode-ray tube in 1948. The same article also mentions "Whirlwind computer" as "the first computer to display video". Of course, it was not the video that you could watch today.

  • According to AceCloud, the history of GPUs started in the 1970s, mentioning even 1968 when "computer graphics were just in their infancy".
  • In the beginning, graphics cards were indeed for computer graphics but in a very simple way compared to what we have today. Later, people realized that these devices could be used for other purposes when parallel processing is required.

Main contributors to the early history of GPUs

» Back to table of contents «

There are some companies I probably don't have to introduce to anyone, as they are all well-known like ATI, AMD's NVIDIA, and Sony, but I personally never heard about 3DLabs before.

It is interesting how many products were considered basically the beginning of GPUs by different people. I think it just means that the birth of today's GPUs didn't happen suddenly in the morning, but it was a long process with many important steps. Let's continue with more.

GPU not just for graphics

» Back to table of contents «

Containers and GPUs

» Back to table of contents «

GPUs might be very important tools in parallel processing and machine learning, but containers are also everywhere in development and also in production, so naturally, we have to be able to use GPUs in containers.

  • The first version of LXC (Linux Containers) was released in 2008
  • Docker's first version was released in 2013.
  • If my interpretation of the sources is correct, NVIDIA started to support GPUs in containers in 2016. There was a proof of concept release of NVIDIA Docker.
  • The latest patch of "nvidia-docker" v1 was released in March 2017. This was the last package that actually contained the source code, and it supported Docker 17.03.
  • The first commit of libnvidia-container was made in April 2017. Interestingly, to confuse us, the source code was pushed to the "nvidia-container-runtime" repository and the "libnvidia-container" repository as well, and I assume the original source was actually the "nvidia-container-runtime" repository. This assumption is based on the following:
    • The title of the readme of v1.0.0 was "libnvidia-container"
    • All the v1 tags (v1.0.0 - v1.0.3) in the "nvidia-container-runtime" repository were created when the commits were created. According to GitHub, v1.0.0 in "nvidia-container-runtime" was tagged in September 2018
    • Only one day later was the same commit in the "libnvidia-container" repository tagged as v1.0.0
    • The rest of the v1 tags in "nvidia-container-runtime" were created even with a bigger delay in "libnvidia-container".
  • I also found a Hungarian name as the author of the commit of the "gpus" option in the Docker CLI. To me, as a Hungarian, it was probably more interesting than to others.
  • After v1, "nvidia-docker" eventually became the name of a collection of packages including "nvidia-container-runtime" and the "libnvidia-container".
  • Initially, the runtime was a patched version of "runc", which is the default container runtime in Docker today. Despite some sources that indicate "nvidia-docker" was a fork of "runc", it was not.
  • The latest release of NVIDIA Docker came out on August 30 in 2023, and it was superseded by NVIDIA Container Toolkit.

Introducing GPU support in WSL and Docker Desktop

» Back to table of contents «

Although GPU support existed on Linux and in containers before, Docker Desktop runs the Docker daemon and the containers in a virtual machine even on Linux, as I mentioned in a previous blog post. That means the GPU has to be available inside the virtual machine, even when you are using that GPU on the physical host.

On June 17, 2020, Microsoft announced GPU compute support for WSL2, which was also mentioned on the NVIDIA tech blog.

On December 21, 2020, Docker announced the "general preview of Docker Desktop support for GPU with Docker in WSL2". That basically meant that since WSL2 already supported NVIDIA GPUs, and the NVIDIA container runtime existed, it could be automatically configured in Docker Desktop when using WSL2 as a backend.

Supporting AI workloads and using AI at Docker, Inc

» Back to table of contents «

Conclusion

» Back to table of contents «

So this is where we are now, and I'm sure I could have mentioned many other details, but my goal was to give you an overview, before I jump to other GPU- or AI-related posts. At least that's the goal.

Until then, you can check the Excel sheet in which I collected some GPU- and container-related events in chronological order:

https://1drv.ms/x/c/9d670019d6697cb6/EbZ8adYZAGcggJ2RjAAAAAABhaNs-vt8Yj4QIeqzhs4Rxg

If you are looking for links, you can move the mouse pointer over the top right corner of the cells where you see a little red arrow (at least this is how it works at the time of writing this post).

In the next section, you can see the links of websites that I also linked in this article above except those that I didn't link as a source, but only a reference to a product or one of my previous posts.

If you find incorrect information, please let me know in the comments. You can also share your opinion or add an important event that you would have mentioned.


Sources

» Back to table of contents «

Top comments (0)