I liked your post Mike and certainly enjoyed all the reply's.
So since I use a PVS in my engine I was very curious as to the effectiveness in my engine. Now my engine does not have hash tables, killer move or history heuristics. At least not yet. Initial move ordering is all exchanges using MVV/LVA then the rest of the moves using piece square values. This of course means the the move order can be horrible.
But this also does mean the the PVS can really help me. It least that was my thought. And I made the assumption that my search and q_search would prune out the bad exchanges quickly given that the PVS would at least give me good starting move sequence.
So I run some test positions to see how fast my engine would take to get to say ply 10 with the PVS and then compared that result with the PVS function commented out.
One test position with PVS to ply 10 took 559.764 seconds and when PVS was removed took 719.06 seconds to get to ply 10 with the same pv result. Same pv and the same eval score.
Thats about a 28 percent increase in speed. All of the other test positions resulted in a 25 to 29 persent increase in speed. Average nodes per second searched did not change very much at all for all tests.
I also found out that by including the PVS in the q_search function did not help at all and even slowed the search down. That was a surprise. So as a result of this test I have removed it from the q_search completely. That was a surprise.
So for my engine PVS at this time is a must.
What's this prove. I still have some work to do before I can challange Rybka!
How much improvement from PVS?
Moderator: Ras
-
- Posts: 147
- Joined: Wed Jun 06, 2007 10:01 am
- Location: United States
- Full name: Mike Leany
Re: How much improvement from PVS?
Thanks for posting your results. I was particularly interested in your qsearch results. I expected that PVS in qsearch wouldn't help much, but expected it would most likely help a little. I will test that with my own engine too.Steelman wrote:I liked your post Mike and certainly enjoyed all the reply's.
So since I use a PVS in my engine I was very curious as to the effectiveness in my engine. Now my engine does not have hash tables, killer move or history heuristics. At least not yet. Initial move ordering is all exchanges using MVV/LVA then the rest of the moves using piece square values. This of course means the the move order can be horrible.
But this also does mean the the PVS can really help me. It least that was my thought. And I made the assumption that my search and q_search would prune out the bad exchanges quickly given that the PVS would at least give me good starting move sequence.
So I run some test positions to see how fast my engine would take to get to say ply 10 with the PVS and then compared that result with the PVS function commented out.
One test position with PVS to ply 10 took 559.764 seconds and when PVS was removed took 719.06 seconds to get to ply 10 with the same pv result. Same pv and the same eval score.
Thats about a 28 percent increase in speed. All of the other test positions resulted in a 25 to 29 persent increase in speed. Average nodes per second searched did not change very much at all for all tests.
I also found out that by including the PVS in the q_search function did not help at all and even slowed the search down. That was a surprise. So as a result of this test I have removed it from the q_search completely. That was a surprise.
So for my engine PVS at this time is a must.
What's this prove. I still have some work to do before I can challange Rybka!
I haven't really had time to continue my testing after fixing a couple of bugs, but what I've seen so far varied quite a bit in the amount of speed improvement based on the position. If I remember correctly I saw improvements ranging from around 4% to around 100%. That was before the bug fixes though (one of which should improve both the speed of alpha-beta and PVS), so the results could be quite different now.
-
- Posts: 166
- Joined: Wed Mar 08, 2006 9:49 pm
- Location: S. New Jersey, USA
Re: How much improvement from PVS?
I took PVS out of quies() quite some time ago, as it did not help me either.
-David
-David
Re: How much improvement from PVS?
Its probibly due to the fact that the call to the pvs routine is being called so many times yet its only needed once per iteration. And q_search resolves the exchanges quickly. Its just not worth the extra overhead.opraus wrote:I took PVS out of quies() quite some time ago, as it did not help me either.
-David
I do use a "flag" to know when the pvs is loaded and actually to not call the function but millions of:
if (pv_move_ptr) follow_pv(parrent);
just eat up time. Not much put its just not worth it!