AOGenMark 1.3.0: Simple Multi-Core CPU Benchmark


1 – AOGenMark: Overview

AOGenMark is a CPU benchmark with multi-core support. Multi-core support simply means the benchmark is multi-threaded. AOGenMark is not a new CPU benchmark: the first version has been released in 2006. AOGenMark is derived from a tool I used several years ago to compute per vertex ambient occlusion factor. I recently updated this benchmark utility for the HP Mini 210 review.

That said, AOGenMark is a command line tool with few parameters. In short, you can specify the number of threads (-t), the number of samples (-s) which are related to the heaviness of computations (the more the samples, the heavier the computations) and the thread affinity (-a). Thread affinity allows to stick a thread with a CPU (logical) core. For example, if you have two cores and you launch AOGenMark with 4 threads, thread 1 with run on core 1, thread 2 on core 2, thread 3 on core 1 and thread 4 on core 2.


AOGenMark.exe -t 4 -s 8

Starts AOGenMark with 4 threads, 8 samples and no thread affinity.

AOGenMark.exe -t 8 -s 16 -a

Starts AOGenMark with 8 threads, 16 samples and thread affinity enabled.

How to bench a CPU with AOGenMark? It’s simple: the smaller the elapsed time to finish the bench, the faster the CPU. For recent multicore CPUs, the number of samples should be at least 16, the number of threads depending on the CPU: 8 threads for a Core i7 with HT enabled is a good idea.

AOGenMark and a 8-core CPU
Core i7 960 with hyperthreading running AOGenMark (params: 8 threads and 16 samples, no affinity)

That’s all for the parameters. I added in the zip file six .bat files for launching AOGenMark with 1, 2, 4, 8, 16 and 24 threads, 16 samples and no thread affinity. From my tests, it’s better to let the thread management to Windows.

2 – AOGenMark: Download

You can download AOGenMark 1.3.0 here:
Webmasters: hotlinking is not allowed (that will cause an error message), please use the post url as download link
Download AOGenMark Version 1.3.0 (2011.05.12)

3 – AOGenMark: Scores

Here are some scores. And recall that the smaller the elapsed time to finish the bench, the faster the CPU.

Parameters: 8 threads, 16 samples, thread affinity OFF

97.104 ms – Core X9650 @ 3.0GHz
51.184 ms – Core i7 960 @ 3.2GHz

Parameters: 4 threads, 16 samples, thread affinity OFF

96.261 ms – Core X9650 @ 3.0GHz
74.366 ms – Core i7 960 @ 3.2GHz

Parameters: 4 threads, 8 samples, thread affinity OFF

270.676 ms – N550 @ 1.5GHz
47.961 ms – Core X9650 @ 3.0GHz

4 – AOGenMark: Under the hood

And for the curious, here is the algorithm behing AOGenMark:

// Part 1: Slowest part of the algorithm.
for each face in a mesh do
  for each non-normalized vector in the pool
    Do a dot product between the vector and the normal face
      if dot >= 0.0 then
        Normalize vector and form the ray to cast
	for each face in a mesh do
	  Do a triangle-ray intersection test
	  if intersection then
	    store intersection data in a buffer

// Part 2: Fastest part of the algorithm. 
// It's like computing mesh normals.
compute occlusion data for each vertex of the mesh

↑ Grab this Headline Animator