SPEC CPU2017 Benchmark Description

Benchmark Name


Benchmark Authors

Blender project development volunteers, supported by the Blender Foundation

Adapted for the SPEC CPU2017 suite by the SPEC CPU subcommittee

Benchmark Program General Category

3D Rendering

Benchmark Description

Blender is a free, open source 3D creation suite. It provides the ability to render, model, simulate material properties, and animate assets to create 3D images.

Input Description

The subbenchmark takes in a blender .blend file. The .blend file specifies scene input geometry and rendering parameters.

Reference Inputs

The reference input workload in speed mode and rate mode operate on a .blend Blender file. The .blend file included with the subbenchmark is a reduced version of the Weybec Crazy Glue shot 3 data set. This data set input sets the output image size @ 1280x720 pixels.

Training Inputs

The input .blend file for the feedback training workload (train) is a reduced version the Weybec Crazy Glue shot 5 data set. This data set configures the output image size @ 320x200 pixels.

Test Inputs

The test workload .blend file is the default cube that loads up with public builds of blender in GUI mode.

Output Description

The image output from the render step is used as input to the SPEC utility imagevalidate, which calculates the Structural SIMilarity (SSIM) index over 8x8 pixel areas between the benchmark-produced image and a SPEC-provided expected image. SSIM indexes range from -1 (maximally different) to 1 (identical) for each of those regions.

If the images are too different, the image comparison program will issue an error. This is accomplished by specifying a threshold SSIM value, and if more than 1% of samples go below the threshold, the benchmark does not pass validation.

In all cases, the expected output suggests a completely identical image

  <filename>: AVG SSIM = 1.000000000

which is then checked by specdiff to to verify that the overall average of SSIM values is at least 0.95.

Programming Language



Portability Notes

There several portability flags that may be useful, as shown in the example config files -- search for 526.blender_r in
$SPEC/config/Example*cfg (Unix) or
%SPEC%\config\Example*.cfg (Windows).

Documentation of 526.blender_r portability flags is available at
$SPEC/benchspec/CPU2017/526.blender_r/Docs/flags.html (Unix) or
%SPEC%\benchspec\CPU2017\526.blender_r\Docs\flags.html (Windows).

Portability RECOMMENDATION: Use Unsigned Char

The language standard says that char might have the same behavior as either signed char or as unsigned char. It does not specify which. Blender code expects char to be unsigned, and the Blender Coding Style Guide says "Compiler flags are used to make sure we always use the unsigned variety."

Therefore, if your system defaults to signed, you should find your compiler flag that changes to unsigned. If you do not do so, you may see many thousands of warning messages during builds, and your generated binary might produce wrong answers.

For example, if you are using GCC, you might set:

  PORTABILITY = -funsigned-char

Other compilers have similar flags, for example:

Check your compiler documentation.

Sources and Licensing

The benchmark was contributed to SPEC CPU by the Blender Foundation, under the terms of GPLv3. Additional licenses apply to specific components, as described in SPEC CPU2017 Licenses.


Last updated: $Date: 2017-05-01 13:34:29 -0400 (Mon, 01 May 2017) $