FHOURSTONES 1.0 This benchmark is distilled from my pet application `c4', a connect-4 solver. It features a streamlined implementation of exhaustive alpha-beta search using the history heuristic and a space optimized hashtable. Some technical bits: Of the full 49 bit lock that describes a connect-4 position, only 32 are stored in the hashtable entry while the remaining 17 are subsumed in the hash-address. To also accomodate 8 fold probing, a minimum of a million hash table entries are required. The benchmark uses just over 5Mb, unlikely to fit into any sort of cache in the foreseeable future. This makes the Fhourstones measure relatively immune to huge cache sizes. The potentially expensive modulo operations are implemented with repeated table lookup. The use of small integer sizes is available as an option. Although this benchmark, like nsieve, emphasizes random access performance, it also exercises standard scalar performance; the recursive alpha-beta calls, incremental threat table computations, history table updates, and move-reordering represent a fair mix of scalar operations. The benchmark input is a relatively difficult 12-ply position. The output should look like: Fhourstones 1.0 options: small ints Solving 12-ply position after 444333377755 . . . score = 7 (+) work = 21 3871322 pos / 98.7 sec = 39.2 Kpos/sec store rate = 0.914 - 0.211 < 0.422 = 0.059 > 0.054 + 0.254 56765 376940 173046 174816 121323 70603 38079 19252 9741 4853 2393 1147 537 291 116 54 30 16 3 2 3 1 0 0 0 0 0 0 0 0 0 0 The first line identifies the benchmark and version number. Line 2 shows which program-specific options are active. Currently, two are supported: -DSMALL makes the program use chars and shorts in moderately sized arrays of small integers, while -DMOD64 computes the modulo hash function directly with 64 bit integers. The latter is only advised on machines with hardware integer divide (64/64->64) or multiply (64x64->128). The 3rd line says which position is being solved (input ends with =), or tested for a 1st player win (+) or for a 2nd player win (-). Due to the transposition table and history heuristic, the reduced searches are not necessarily faster. The next line indicates the score of the position and a logarithmic measure of difficulty on a scale from 0 to 31. The fifth line shows the machine performance; of all the output, only the last 2 numbers on this line should differ from the above output. The store rate gives the percentage of positions actually entered in the transposition table versus those offered to it. The rest of the output shows the final distribution of positions in the transposition table with respect to score (line 7) and work (lines 8-11).