Linux SPECViewPerf Mini-HOWTO.

Introduction

SPECViewPerf is a standardised benchmarking utility, along similar lines to MadOnion's 3dMark series. As a cross platform tool, it is based in OpenGL, and uses a variety of high-end tests to perform an extreme workout of the rendering system.

Distributed by the SPEC benchmarking organisation, who also produce tests such as SPECWeb and others, it is a free utility for testing the performance of a system, and generating a set of weighted means based on that performance.

This utility runs under most unix variants that are capable of providing an X11-compatible display, including Linux, which is the subject of this HOWTO.

Obtaining SPECViewPerf

Specviewperf is hosted on spec.org, here, and the file you want to download is SPECViewperf7.0.tar.gz, available here, and a list of mirrors is here.

SPECViewperf7.0.tar.gz is 296441146 bytes long, and has an md5sum of ba62d749277c60a2c8d46e706940df50.

Compiling viewperf, vpost and pngxor

After uncompressing and untarring the SPECViewperf7.0.tar.gz binary into a suitable location (approximately 800MB of space is necessary for the complete uncompressed tree, not including the original 280MB tar.gz file), SPECViewperf's utilities must be compiled, to allow the system to perform.

I didn't have any luck with the precompiled binaries (rhlinux.tgz), so I compiled it myself. it appears to need a complete set of OpenGL headers and libraries (including libGLU), and a few other standard system libraries. A compiler, linker (gcc suite), libc developement libaries and headers, libpng libraries/headers, stdc++ libraries and X11 headers/libraries are also necessary.

Enter the SPECViewperf7.0 directory, and then the src directory.

A filename is incorrectly in uppercase here, so first run: mv VP_OBJS.UNX.FUNC_CALLS Vp_objs.unx.func_calls

Then a simple make -f makefile.linux will compile the viewperf utility. This is the biggest utility to compile, it will take a few minutes.

Copy the resulting viewperf binary to SPECViewperf7.0/viewperf, and then enter the SPECViewperf7.0/src/vpost directory.

Execute gcc -o vpost vpost.c -lm, then copy the resulting vpost binary to SPECViewperf7.0/vpost.

Finally, enter the SPECViewperf7.0/src/pngxor directory, and edit the file Makefile.linux file. find the line reading CC = icc -c and change that from icc to gcc. alternatively (but untested), you can try the intel compiler suite but benchmark results may vary. This author used gcc.

Save the file, and run make -f Makefile.linux, and copy the resulting binary to SPECViewperf7.0/pngxor.

You are now ready to perform the benchmark.

Running the benchmarks

The benchmarks may be run in parts or as a complete run (with an overall set of results). We will do the latter, but first, disable any kind of screen-saver you may have, as this could affect the results. try to close as many memory-using applications as you can, like web browsers, mp3 players, webservers, etc. possibly even drop back to a window manager with a smaller profile.

The benchmarks also require the c shell (/bin/csh) and perl 5 to complete.

Go into the SPECViewperf7.0/ directory, and execute ./runall.csh. Barring any problems (look for error messages about missing vpost or pngxor, in case you missed those parts), you will be presented with some results, which are also stored in the SPECViewperf7.0/sum_results directory, in a file called runallsummary.txt eg:

	Run All Summary
	Mon Nov  4 22:00:45 EST 2002
	Linux mycrondo 2.4.19-xfs #1 Fri Aug 23 14:15:34 EST 2002 i686 unknown
	/usr/local/archives/svp/SPECViewperf7.0

	3dsmax-01 Weighted Geometric Mean =   3.714
	drv-08 Weighted Geometric Mean =   12.24
	dx-07 Weighted Geometric Mean =   13.91
	light-05 Weighted Geometric Mean =   2.848
	proe-01 Weighted Geometric Mean =   2.380
	ugs-01 Weighted Geometric Mean =   1.615
	

These tests were performed on a 750MHz Duron, with 256MB of ram, and a geforce 4 ti 4400. The high-polygon tests were killers :).

If you have any extra questions, feel free to ask around on #icculus.org, irc.freenode.net, where i hang out occasionally.
ashridah.