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.
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
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 break; // Part 2: Fastest part of the algorithm. // It's like computing mesh normals. compute occlusion data for each vertex of the mesh