Want to measure the best performance of your GPU ? Or ever thought about how well your GPU will perform under extreme load ?
Well, these things could be done easily,with some GPU benchmarking tools, we are going to do it in three different way with
- glxgears
- glmark2
- furmark
Contents
1. Glxgers from mesa-utils
Glxgears is a part of the open source Mesa OpenGL rendering utilities, available with the mesa-utils Debian/Ubuntu package. It could be used as a bare bone GPU testing tool, simply run the command bellow and measure the FPS value.
sudo apt-get install mesa-utils
glxgears
The FPS value should be around 60 FPS, but performance will be dramatically improved if you use the vblank_mode=0 environment variable, I got over 6000 FPS performance with a Intel HD 3000 GPU.
vblank_mode=0 glxgears
2. Glmark2 by Linaro team
This is another popular open source GPU stress testing and OpenGL benchmark tool , forked from the original Glmark . available for Linux and Android platform.
Ubuntu provides glmark2 binary packages, so it could be installed very easily in any ubuntu based distro. Just run the command, this will install the latest version.
sudo apt-get install glmark2
Unfortunately glmark2 binary packages are not available in Debian repository, but you can compile and install latest glmark2 from source in Debian.
Testing: Now just type glmark2
in a terminal, this will open up the default 800x600 pixel window rendering various 3D objects like a horse, a cat, a rabbit etc. etc. The full benchmarking test will take about 8 minutes to finsih, finally check the results. The test returned me an average 1000 score for a Intel HD 3000 GPU.
Stressing the GPU: Running glmark2 requires a lot of GPU processing power, so looping the process will simulate a heavy stress on the GPU.
glmark2 --run-forever
Benchmark a NVIDIA GPU with glmark2: I have a laptop with switchable NVIDIA Optimus GPU (GeForce GT 540M), so tried to benchmark it with glmark2. Tested it in every way I know, but the result was always aweful. The GPU never scored beyond 446, I did 4 tests, perhaps there is some compatibility issue of glmark2 with NVIDIA.
Commands I used to test glmark2 with NVIDIA optimus GPU.
optirun glmark2 optirun -vv -b virtualgl -c jpeg glmark2 vblank_mode=0 primusrun glmark2
3. Furmark from geeks3d's GpuTest
This is the tool with real graphics performance testing capability. Furmark is a part of geeks3d's GpuTest program, this is not an open source software, but a freeware, could be downloaded for free from this link www.geeks3d.com/gputest/download .
Download the Linux specific one, it will be a zip file. Assuming you have downloaded it in Downloads folder, just unzip and and run it.
cd ~/Downloads/ unzip GpuTest_Linux_x64_0.7.0.zip cd GpuTest_Linux_x64_0.7.0/ ./GpuTest /test=fur /width=800 /height=600 /benchmark
This will open up a 800x600 pixel window rendering a detailed 3D object like bellow.
This test returned me a choppy and lagging result, avarage 9-10 FPS performance with a Intel HD 3000 GPU.
I tested it again with the discrete NVIDIA GPU,
cd ~/Downloads/GpuTest_Linux_x64_0.7.0/ optirun -c jpeg ./GpuTest /test=fur /width=800 /height=600 /benchmark
At this time results were satisfactory, 18-20 FPS average, quite smooth and-lag free performance.
Stressing the GPU with furmark: Running furmark imposes a lot of presure on the GPU, the command bellow will run the program on a 1024x640 pixel window in a loop.
./GpuTest /test=fur /width=1024 /height=640
The program GpuTest
has lots of other options and different benchmarking utility, read the relevant README.txt file. Test it with other options, general rule is less the window size greater the performance.
Conclusion
There are some more feature reach and heavy GPU benchmark tool by the unigine corp, unigine heaven, unigine vally, etc. etc. I'm not talking about them more here, you can always download and test them from here.
If you have any further question, jsut ask them, and don't forget to share this tutorial with your friends.
Mohit Jain says
These are the results on my desktop GPU
=======================================================
glmark2 2014.03+git20150611.fa71af2d
=======================================================
OpenGL Information
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: GeForce GTX 1060 6GB/PCIe/SSE2
GL_VERSION: 4.6.0 NVIDIA 418.67
=======================================================
[build] use-vbo=false: FPS: 9734 FrameTime: 0.103 ms
[build] use-vbo=true: FPS: 16520 FrameTime: 0.061 ms
[texture] texture-filter=nearest: FPS: 15548 FrameTime: 0.064 ms
[texture] texture-filter=linear: FPS: 15488 FrameTime: 0.065 ms
[texture] texture-filter=mipmap: FPS: 15657 FrameTime: 0.064 ms
[shading] shading=gouraud: FPS: 15085 FrameTime: 0.066 ms
[shading] shading=blinn-phong-inf: FPS: 14972 FrameTime: 0.067 ms
[shading] shading=phong: FPS: 14658 FrameTime: 0.068 ms
[shading] shading=cel: FPS: 14814 FrameTime: 0.068 ms
[bump] bump-render=high-poly: FPS: 11482 FrameTime: 0.087 ms
[bump] bump-render=normals: FPS: 16896 FrameTime: 0.059 ms
[bump] bump-render=height: FPS: 16820 FrameTime: 0.059 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 12758 FrameTime: 0.078 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 8924 FrameTime: 0.112 ms
[pulsar] light=false:quads=5:texture=false: FPS: 15636 FrameTime: 0.064 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 6070 FrameTime: 0.165 ms
[desktop] effect=shadow:windows=4: FPS: 9640 FrameTime: 0.104 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1648 FrameTime: 0.607 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1925 FrameTime: 0.519 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1767 FrameTime: 0.566 ms
[ideas] speed=duration: FPS: 12539 FrameTime: 0.080 ms
[jellyfish] <default>: FPS: 11338 FrameTime: 0.088 ms
[terrain] <default>: FPS: 1220 FrameTime: 0.820 ms
[shadow] <default>: FPS: 10785 FrameTime: 0.093 ms
[refract] <default>: FPS: 3865 FrameTime: 0.259 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 15929 FrameTime: 0.063 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 15528 FrameTime: 0.064 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 15790 FrameTime: 0.063 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 15548 FrameTime: 0.064 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 15193 FrameTime: 0.066 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 15454 FrameTime: 0.065 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 15431 FrameTime: 0.065 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 15308 FrameTime: 0.065 ms
=======================================================
glmark2 Score: 12120
=======================================================
Hasan says
Thanks for the post. Quite useful.
I used glxgears and glmark2 and both worked perfectly on my Lenovo B590 Laptop with specs: Intel 2020M 2.4GHz, 8GB RAM with NVIDIA GT 720M as discrete graphics card running Linux Mint 17.3 Cinnamon 64-bit.
I got these results for the above laptop:
glxgears
------------
8980 frames in 5.0 seconds = 1795.751 FPS
8075 frames in 5.0 seconds = 1614.687 FPS
10834 frames in 5.0 seconds = 2166.595 FPS
=======================================================
glmark2 2012.08
=======================================================
OpenGL Information
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: GeForce GT 720M/PCIe/SSE2
GL_VERSION: 4.4.0 NVIDIA 340.102
=======================================================
[build] use-vbo=false: FPS: 546 FrameTime: 1.832 ms
[build] use-vbo=true: FPS: 556 FrameTime: 1.799 ms
[texture] texture-filter=nearest: FPS: 520 FrameTime: 1.923 ms
[texture] texture-filter=linear: FPS: 499 FrameTime: 2.004 ms
[texture] texture-filter=mipmap: FPS: 492 FrameTime: 2.033 ms
[shading] shading=gouraud: FPS: 472 FrameTime: 2.119 ms
[shading] shading=blinn-phong-inf: FPS: 480 FrameTime: 2.083 ms
[shading] shading=phong: FPS: 469 FrameTime: 2.132 ms
[bump] bump-render=high-poly: FPS: 441 FrameTime: 2.268 ms
[bump] bump-render=normals: FPS: 554 FrameTime: 1.805 ms
[bump] bump-render=height: FPS: 548 FrameTime: 1.825 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 430 FrameTime: 2.326 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 373 FrameTime: 2.681 ms
[pulsar] light=false:quads=5:texture=false: FPS: 508 FrameTime: 1.969 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 318 FrameTime: 3.145 ms
[desktop] effect=shadow:windows=4: FPS: 367 FrameTime: 2.725 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 343 FrameTime: 2.915 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 387 FrameTime: 2.584 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 356 FrameTime: 2.809 ms
[ideas] speed=duration: FPS: 477 FrameTime: 2.096 ms
[jellyfish] : FPS: 387 FrameTime: 2.584 ms
[terrain] : FPS: 108 FrameTime: 9.259 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 453 FrameTime: 2.208 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 443 FrameTime: 2.257 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 452 FrameTime: 2.212 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 447 FrameTime: 2.237 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 450 FrameTime: 2.222 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 450 FrameTime: 2.222 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 442 FrameTime: 2.262 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 449 FrameTime: 2.227 ms
=======================================================
glmark2 Score: 440
=======================================================
Arnab Satapathi says
Thanks for this feedback.
paul crypto GPU says
Thank you for the fantastic information. Especially the links for the GPUtest/furmark stuff. I'm trying to find benchmarks to measure processing power of cards, probably similar to Mr. Woodall.
I'll check out PTS, although I may need to design something within the PTS framework. It's possible to make your own benchmarking tests in PTS, correct?
Arnab Satapathi says
Hi Paul, interesting !
I think you need something else along with PTS to measure the raw computing power in TFLOPS.
Also check this, https://github.com/krrishnarraj/clpeak/ , easy to build with cmake.
I also want to know abut your future projects, improvents in this field, do you maintain a G+ or twitter account ?
martin woodall says
My company DroneData.com is a hosting provider of GPU accelerated
dedicated physical hardware servers . We use the latest and most powerful Nvidia GP100 visual compute GPUs. Four per server.
I have a windows server app that reports TFLOPS produced per GPU and for the CPU which reads very close to the Nvidia TFLOPS advertised data.
The app also reports CPU TFLOPS (we overclock our CPUs)
I cant seem to locate any Ubuntu app with anything close to the same TFOPS reporting features (graphical output would be nice too but not required as I configure with GUIs)
My end goal is to compare my single tenant physical hardware multi GPU server performance against AWS multi GPU shared virtualized instances and AWS non-shared virtualized servers
Any app advise on benchmark reporting in TFLOPS on Nvidia top P-series (P-100 GP-100) GPUs would be helpful.
Forward to any peers if you think they could help me locate
Thanks
Arnab Satapathi says
Hi Martin,
You may have a look here, https://openbenchmarking.org/suites/pts and here, https://www.phoronix-test-suite.com/ .
Chinthaka Ranawaka says
Great Work Thank You
Arnab Satapathi says
You're most welcome !