LLVMpipe vs. OpenSWR Software Rendering On A 40 Core / 80 Thread Tyan Server

Written by Michael Larabel in Display Drivers on 27 August 2017 at 10:00 AM EDT. Page 1 of 2. 34 Comments.

With testing out a Tyan 1U server featuring dual Intel Xeon Gold 6138 CPUs, one of the uncommon test requests we have received but understandable given our audience is curiosity about the performance of OpenGL software rendering on this 40 core / 80 thread Xeon Scalable server when making use of Mesa's LLVMpipe software rasterizer and the newer OpenSWR driver from Intel.

If you are not familiar with LLVMpipe, you certainly need to be reading more Phoronix. LLVMpipe is the software rasterizer now commonly used by most Linux distributions for providing OpenGL support when no hardware GPU driver is available/working. LLVMpipe is much faster than Mesa's classic "swrast" or softpipe Gallium3D drivers thanks in part to leveraging LLVM for code generation with this CPU rendering implementation. LLVMpipe can scale out to multiple CPU cores, so it's a fun and unique multi-threaded test-case.

OpenSWR meanwhile is the newest software rasterizer living within Mesa. Intel contributed the OpenSWR code-base to Mesa back in 2016. Intel has been working on OpenSWR for several years as a "a high performance, highly scalable OpenGL compatible software rasterizer that allows use of unmodified visualization software." Like LLVM, OpenSWR is built atop LLVM. For achieving greater performance, OpenSWR has been fine-tuned for AVX and AVX2. There are also back-ends for accelerating with Intel Knights Landing hardware as well as experimental AVX-512/Skylake-X support. Those unfamiliar with OpenSWR due to it being relatively new to Mesa can learn more at OpenSWR.org.

OpenSWR/SWR is a bit more actively developed than LLVMpipe with Intel developers frequently pushing out new SWR code, especially in regards to performance tuning / optimizations where LLVMpipe work in Mesa tends to just be as a side-effect of other development with not too often seeing LLVMpipe-specific activity happening.

With Mesa 17.3-dev, OpenSWR/SWR and LLVMpipe are both at OpenGL 3.3 compliance. LLVMpipe does have a few more OpenGL extensions currently exposed than SWR, but neither have enough for OpenGL 4.x compliance at this time. While LLVMpipe is generally the default for those not having a GPU driver available, it can always be activated too via LIBGL_ALWAYS_SOFTWARE=1. The OpenSWR driver when it's present in the Mesa build can be opted for with the GALLIUM_DRIVER=swr environment variable.

For the tests today from the dual Xeon Gold system I ran tests on a few Mesa builds and then with SWR. The SWR build I was using was optimized for AVX1/AVX2. While there is the AVX-512/Skylake-X back-end and support for these instructions with the Xeon Gold CPUs, the Mesa configuration was failing over the support when trying to build this back-end. If I get that configuration working, I'll be back with more tests soon.

The Tyan GT24E-B7106 1U server was tested with two Xeon Gold 6138 processors, 96GB of DDR4-2666 RDIMMs, Samsung 850 EVO SSD as the main storage device during these tests, and was running Ubuntu 16.04.3 LTS. LLVMpipe tests were done both with the stock Mesa 17.0.7 and then building Mesa 17.3-dev from Git for SWR and LLVMpipe.

Related Articles