The "Gritzmark" is a relative performance measure of Larry Gritz's BMRT renderer. Each release of BMRT contains a suite of examples which can be rendered on various hardware and operating system platforms to judge the performance of the renderer. As the examples may change release to release, the Gritzmark figures need to be specified for each version of BMRT. Speed comparisons between versions of BMRT should be viewed lightly, as many conditions can cause variations. It is best used as a side-by-side comparison of various hardware platforms for near "real-world" rendering performance.
The gritzmark can not be used to compare other Renderman-compliant renderers to BMRT. That comparison can only be made if the images produced by each renderer were equivalent within a marginal tolerance. BMRT and Prman, for example, can produce similar results, but differ enough in their implementation that attempts at such a comparison would be misleading. The example suite provided with BMRT exploits properties not found in the other renderers.
The gritzmark is defined as the sum, in "wall-clock" seconds, of time taken to render the suite of examples. It should be computed as an average of several runs on a system with minimal additional load, and enough memory to avoid swapping. The following table includes both the overall gritzmark and the component values.
Lower numbers are better.
| Chip | Speed | OS | Gritzmark | cornell | disptest | dresser | hybridtest1* | limbo | shadtest | smokebox | teapots | texbox1 | tpdisp |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Celeron 300A | 450 | Linux 2.2.5 (RH 6.0) | 1480 | 58 | 21.3 | 400.7 | 70.3 | 477 | 7.7 | 73.5 | 141 | 89 | 141.7 |
| R10K (mips4) | 195 | IRIX 6.2 | 2493 | 95 | 32 | 655 | 123 | 796 | 13 | 128 | 237 | 170 | 243 |
| PPro | 200 | Linux 2.0.36 (b) | 3254 | 141 | 42 | 906 | 144 | 1006 | 16 | 180 | 310 | 200 | 308 |
| PPro | 200 | Linux 2.0.36 (pre-b) | 3661 | 153 | 45 | 1019 | 176 | 1069 | 17 | 184 | 385.7 | 222 | 390 |
| R4400 (mips2) | 250 | IRIX 6.2 | 7393 | 384 | 76 | 2194 | 473 | 2284 | 38 | 227 | 515 | 550 | 602 |
| Chip | Speed | OS | Gritzmark | cornell | dresser | smokebox | tpdisp | limbo | shadtest | disptest | teapots | texbox1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PII | 300 | NT | 1999 | 84 | 561 | 101 | 306 | 572 | 9 | 25 | 206 | 134 |
| R10K | 195 | Irix | 2261 | 93 | 630 | 143 | 307 | 690 | 11 | 29 | 186 | 168 |
| PPro | 200 | Linux 2.0.33 | 3461 | 159 | 1021 | 202 | 525 | 926 | 16 | 42 | 334 | 236 |
| UltraSPARC-IIi | 270 | Solaris 2.6 | 3937 | 169 | 1097 | 223 | 515 | 1260 | 23 | 53 | 311 | 285 |
| R4400 | 250 | Irix 6.2 | 5720 | 298 | 1545 | 327 | 764 | 1805 | 30 | 74 | 479 | 399 |
The Gritzmark test consists of the rib files in the distribution examples directory. The tests are run with the distribution ".rendribrc" file which sets the oversampling to 1x1 on the files which don't specify it.
The enclosed script was used in generating the gritzmark totals. If you would like to add your statistics to the table, please execute the script and send the results, along with your machine's specifications (chip, speed, OS) to gritzmark@fleetingimage.com
Be sure you're using the proper supersampling, some of the example files rely on the .rendribrc values.
The following script, as suggested by wave@pixar.com, was used to generate the gritzmark totals.
#!/bin/sh
# \
exec tclsh8.0 "$0" "$@"
set BMRT_HOME /usr/local/BMRT
set numberOfRuns 3
cd $BMRT_HOME/examples
set ribFiles [lsort [glob *.rib]]
proc timeit {body} {
set a [clock seconds]
uplevel $body
set b [clock seconds]
return [expr $b - $a]
}
set accumulatedTotal 0.0
foreach ribFile $ribFiles {
set runsum($ribFile) 0
}
for {set i 0} {$i < $numberOfRuns} {incr i} {
foreach ribFile $ribFiles {
set fileTotal [timeit "exec $BMRT_HOME/bin/rendrib $ribFile"]
puts "rendrib took $fileTotal seconds to render $ribFile"
set accumulatedTotal [expr {$accumulatedTotal + $fileTotal}]
set runsum($ribFile) [expr {$runsum($ribFile) + $fileTotal}]
}
}
foreach ribFile $ribFiles {
set averageTime [expr {$runsum($ribFile)/double($numberOfRuns)}]
puts "The average time for $ribFile was $averageTime"
}
set averageTime [expr {$accumulatedTotal/double($numberOfRuns)}]
puts "The overall average time to run all examples (gritzmark) in this release was $averageTime."
exit 0