This integer benchmark solves positions in the game of Connect-4, as played on a vertical 7×6 board. By default, it uses a 64Mb transposition table with the two big replacement strategy. Positions are represented as 64-bit bitboards, and the hash function is computed using a single 64-bit modulo operation, giving 64-bit machines a slight edge. The alpha-beta searcher sorts moves dynamically based on the history heuristic.
This benchmark is single-threaded and all runs below were pinned to core 1.
Metrics (Intel) - phoronix/fhourstonessh - pid 6629 On_CPU 0.125 On_Core 1.000 IPC 1.396 Retire 0.351 (35.1%) FrontEnd 0.075 (7.5%) Spec 0.176 (17.6%) Backend 0.399 (39.9%) Elapsed 138.67 Procs 3 Maxrss 65K Minflt 16452 Majflt 0 Inblock 0 Oublock 16 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 18 (28.6%) Nivcsw 45 Utime 138.651622 Stime 0.023595 Start 551256.15 Finish 551394.82
The code uses a single core 100%. Both the amount of backend stalls and speculation stalls are higher than average. This makes the IPC of 1.40 lower than many single-threaded benchmarks.
Metrics (AMD) - phoronix/fhourstonessh - pid 14390 On_CPU 0.062 On_Core 1.000 IPC 1.288 FrontCyc 0.112 (11.2%) BackCyc 0.112 (11.2%) Elapsed 156.38 Procs 3 Maxrss 65K Minflt 16455 Majflt 0 Inblock 0 Oublock 16 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 18 (0.1%) Nivcsw 15078 Utime 156.301197 Stime 0.014685 Start 561126.42 Finish 561282.80
IPC on AMD is just a little lower.
Process Tree - phoronix/fhourstones
Process Tree
The process tree is simple:
6629) sh 6630) fhourstones-ben 6631) SearchGame
Shows at 100% on core 1.
IPC overall has some noise but is lower.
Both backend stalls and bad speculation are issues.
Next steps: Dig deeper into speculation misses.