TomKerrigan wrote:bob wrote:
I have the actual tree size increases, which is a normal measurement. And yes, the overhead is less than expected. But then these are not tactical positions with an oddball solution move, these are positions from a real game so there is not a lot of failing high and failing low going on, which certainly helps compared to just searching random positions where the best move is often ranked last and where normal move ordering is lousy due to the convoluted nature of the positions...
Looking at the spreadsheet, the average search overhead is about 10% (tree contains about 10% more nodes than the 1 cpu tree).
Ah, I see. I did some quick runs with your positions and am getting significantly better speedups. ~5x on 8 cores instead of ~4x. My trees are often getting much more than 10% bigger though unfortunately.
It would be an interesting debate on choosing positions. I tend to think the games are more interesting, but if one is only interested in problem positions, then unrelated positions might give a better indication.
The 8-core tests just finished. I usually run the same set 4 times, no changes, since SMP is pretty non-deterministic.
The 8-core numbers look like this compared to 1 cpu. To explain the numbers, I compute the speedup for each position and then compute the mean of the speedups, and the geometric mean. I am going to add a raw speedup number which is time taken by 1 cpu for all positions, divided by time taken for N cpus. In any case, here's the results for 8:
mean: 6.9 6.2 7.0 6.9, average = 6.7
geomean: 7.8 7.3 7.4 7.3, average = 7.4
For tree growth, I get 8.2%, 9.3%, 2.4% and the last run was -0.6% Average (for 8) was about 4.7%. About 1/2 of what I saw with 16.
One note, as I mentioned, I clear the hash between positions. I don't clear killers or history counters. I had to clear hash otherwise the depth limits would take forever to set to get a good average time per move. If you change the depth at position N, you affect every position after that one and have to re-adjust those as well. Clearing hash lets me make one run, then set the depths for each, and there is little influence from one to the next...