It should be an unknown to no one at this point that GPGPU processing is a good thing, as when highly parallel jobs are able to take advantage of the massive number of cores found in even a modest graphics card, a typical CPU could be found eating its dust. But as we’re well aware, due to the limited nature of GPU architectures, not all processes can be easily accelerated, and for that reason, we haven’t seen a surge of GPGPU-enabled consumer applications as we hoped to by this point. But, things are constantly improving – so who knows where we’ll be in the next few years?
Although AMD and Intel are beginning to push GPGPU a lot harder, NVIDIA has been, for the most part, a spearhead of the idea. It’s also likely to be the GPGPU market leader at this point in time, thanks to its huge push with its CUDA computing architecture, and its willingness to work with developers looking to put it to good use. But, here’s a question. If CUDA or similar GPGPU engines are not huge in the consumer space at the moment, why not bring its use to a lower level – such as with the OS kernel?
That’s the idea behind KGPU, a project designed by Weibin Sun at the University of Utah. The idea is to show how, using CUDA, a Linux kernel can experience increased performance with certain tasks. Because NVIDIA’s CUDA implementation isn’t open-source, the acceleration doesn’t occur at the kernel level per se, but rather at the user-space level, where helpers jump in when the kernel sends out a request for something the GPU is designed to handle.
The first example of this being done is with the help of accelerating the encryption used by the eCryptfs file system. In Mr. Sun’s tests, performance sped up 3x~4x when using the GPU (GeForce GTX 480, if it matters). Though not quite a major gain like some other GPGPU projects have seen, there’s definite potential here. That, after all, is just one aspect of the kernel that could be accelerated – there are surely countless others.
If there’s one problem straight-up, it’s the fact that this project is based around NVIDIA’s CUDA, meaning that nothing KGPU can do will reap benefits on AMD or Intel graphics processors. Of course, this is not the kind of project that we’ll see the fruits of soon. While GPGPU no doubt has some place in a kernel’s future, we’ll be waiting a while for it.
The current KGPU release includes a demo of GPU augmentation: a GPU-accelerated AES cipher, which can be used in conjunction with the eCryptfs encrypted filesystem. This enables read/write bandwidths for an ecrypted filesystem that can reach a factor of 3x ~ 4x improvement over an optimized CPU implementation (using a GTX 480 GPU). KGPU is a project of the Flux Research Group at the University of Utah. It is supported by NVIDIA through a graduate fellowship awarded to Weibin Sun.