Yes, I am sure. This was a single-threaded program, so what you are describing is not possible.rbarreira wrote:Are you sure it wasn't just the last move to be *finished* searching, as opposed to the last move in the array?AlvaroBegue wrote:We also observed the program during games, and it was clear that the very last move searched turned out to be chosen surprisingly often.
I ask because I've been seeing that when splitting searches at the root only. One thread will be busy calculating by itself when all the other root moves are already searched, and then after a while this thread will announce a new best move.
In my case it didn't mean it was the last move in the array, it just meant that this move took quite long to search (which makes sense considering the "many nodes" = "hard to refute" = " good move" heuristic that many are discussing here).
root move ordering
Moderators: hgm, Rebel, chrisw
-
- Posts: 931
- Joined: Tue Mar 09, 2010 3:46 pm
- Location: New York
- Full name: Álvaro Begué (RuyDos)
Re: root move ordering
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: root move ordering
His point still stands. If you do incomplete iterations (stop when time runs out rather than when an iteration ends) then this is not that unusual. You search some of the root moves, get stuck on what will be the new best move, time runs out (and if you do a Crafty does and insist that the incomplete move be finished before the search is stopped) then the "last move" you search will be best for that reason.AlvaroBegue wrote:Yes, I am sure. This was a single-threaded program, so what you are describing is not possible.rbarreira wrote:Are you sure it wasn't just the last move to be *finished* searching, as opposed to the last move in the array?AlvaroBegue wrote:We also observed the program during games, and it was clear that the very last move searched turned out to be chosen surprisingly often.
I ask because I've been seeing that when splitting searches at the root only. One thread will be busy calculating by itself when all the other root moves are already searched, and then after a while this thread will announce a new best move.
In my case it didn't mean it was the last move in the array, it just meant that this move took quite long to search (which makes sense considering the "many nodes" = "hard to refute" = " good move" heuristic that many are discussing here).
If the move sorted last at the root is best, a significant part of the time, that would suggest _major_ problems in ordering those moves.
-
- Posts: 931
- Joined: Tue Mar 09, 2010 3:46 pm
- Location: New York
- Full name: Álvaro Begué (RuyDos)
Re: root move ordering
That's not it either. And I know what it is, so I'll just explain the details.bob wrote:His point still stands. If you do incomplete iterations (stop when time runs out rather than when an iteration ends) then this is not that unusual. You search some of the root moves, get stuck on what will be the new best move, time runs out (and if you do a Crafty does and insist that the incomplete move be finished before the search is stopped) then the "last move" you search will be best for that reason.AlvaroBegue wrote:Yes, I am sure. This was a single-threaded program, so what you are describing is not possible.rbarreira wrote:Are you sure it wasn't just the last move to be *finished* searching, as opposed to the last move in the array?AlvaroBegue wrote:We also observed the program during games, and it was clear that the very last move searched turned out to be chosen surprisingly often.
I ask because I've been seeing that when splitting searches at the root only. One thread will be busy calculating by itself when all the other root moves are already searched, and then after a while this thread will announce a new best move.
In my case it didn't mean it was the last move in the array, it just meant that this move took quite long to search (which makes sense considering the "many nodes" = "hard to refute" = " good move" heuristic that many are discussing here).
If the move sorted last at the root is best, a significant part of the time, that would suggest _major_ problems in ordering those moves.
As I mentioned before, we had an aggressive forward pruning heuristic that created the situation. This pruning would reduce the search depth of many moves by a full ply. Sometimes this would mean that a move that had already been searched to depth 10 in the previous iteration of deepening (when it wasn't reduced, because it looked promising) will now have to be searched to depth 10 again. Hash tables kick in, and the move is refuted in a single node.
Sorting by node count was pushing this move all the way to the end. By only allowing a move to be pushed back a maximum of 3 positions, the order didn't suffer from this.
-
- Posts: 408
- Joined: Sat Mar 06, 2010 9:28 am
Re: root move ordering
I have not analyzed yet why it is better, but I would assume a better load factor for the history table. Unknown non-capture moves will recieve a history score earlier than before and this may help in later move orderings.mcostalba wrote: Regarding your change, well it is interesting, our is tiny, but not so tiny
Anyhow, it seems the move ordering alchemy has still room for good improvements.
What is your change? Or is it secret because of competition considerations?
-
- Posts: 2684
- Joined: Sat Jun 14, 2008 9:17 pm
Re: root move ordering
Sorry, you'll see in next releaseRalph Stoesser wrote:I have not analyzed yet why it is better, but I would assume a better load factor for the history table. Unknown non-capture moves will recieve a history score earlier than before and this may help in later move orderings.mcostalba wrote: Regarding your change, well it is interesting, our is tiny, but not so tiny
Anyhow, it seems the move ordering alchemy has still room for good improvements.
What is your change? Or is it secret because of competition considerations?
P.S: Very far away in the future, I add this to avoid annoying questions on planned next release date.
-
- Posts: 408
- Joined: Sat Mar 06, 2010 9:28 am
Re: root move ordering
The little secrets of open source kick in again.mcostalba wrote:Sorry, you'll see in next releaseRalph Stoesser wrote:I have not analyzed yet why it is better, but I would assume a better load factor for the history table. Unknown non-capture moves will recieve a history score earlier than before and this may help in later move orderings.mcostalba wrote: Regarding your change, well it is interesting, our is tiny, but not so tiny
Anyhow, it seems the move ordering alchemy has still room for good improvements.
What is your change? Or is it secret because of competition considerations?
P.S: Very far away in the future, I add this to avoid annoying questions on planned next release date.
Instead of *very far away in the future* you could avoid to tell publicly about +10 Elo changes regarding move ordering of non-captures in the present. Maybe this could help on annoying questions *in the present*?
-
- Posts: 10280
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: root move ordering
Sorry but I do not understand what do you earn from keeping your improvements as secret.mcostalba wrote:Sorry, you'll see in next releaseRalph Stoesser wrote:I have not analyzed yet why it is better, but I would assume a better load factor for the history table. Unknown non-capture moves will recieve a history score earlier than before and this may help in later move orderings.mcostalba wrote: Regarding your change, well it is interesting, our is tiny, but not so tiny
Anyhow, it seems the move ordering alchemy has still room for good improvements.
What is your change? Or is it secret because of competition considerations?
P.S: Very far away in the future, I add this to avoid annoying questions on planned next release date.
It may be better if you release every new version(even if the improvement is only 1 elo)
Maybe in this case more people can help in testing and you make a bigger improvement(when part of the help may be finding cases when the changes that you believe to be good are bad at slower time control or with more games or against other opponents).
Uri
-
- Posts: 2684
- Joined: Sat Jun 14, 2008 9:17 pm
Re: root move ordering
Releasing each 4-5 month only help testers and avoids caos. You can already experience the few weeks of pseudo-forks that spurs at every release, normaly this is a decay process so that there is a peak just after release time then things calm down, in case we open our repository (because that's what you are asking for) I think the confusion would be overhelming and the originated noise would cover the little signal of an actually new release.Uri Blass wrote: Sorry but I do not understand what do you earn from keeping your improvements as secret.
It may be better if you release every new version(even if the improvement is only 1 elo)
Maybe in this case more people can help in testing and you make a bigger improvement(when part of the help may be finding cases when the changes that you believe to be good are bad at slower time control or with more games or against other opponents).
Uri
I am quite scared by the idea of a couple of "new" SFxxx compiles every week that materialize out of the blue. In this way your project quickly disappears in the garbage.
If people is seriously interested in developing (as can be Vratko, just to make a name) there are plenty of ways to contribute with patches _and_ serious tests. We have published this small ELO increase / big code change release just for this only reason.
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: root move ordering
Uri,Uri Blass wrote:Sorry but I do not understand what do you earn from keeping your improvements as secret.mcostalba wrote:Sorry, you'll see in next releaseRalph Stoesser wrote:I have not analyzed yet why it is better, but I would assume a better load factor for the history table. Unknown non-capture moves will recieve a history score earlier than before and this may help in later move orderings.mcostalba wrote: Regarding your change, well it is interesting, our is tiny, but not so tiny
Anyhow, it seems the move ordering alchemy has still room for good improvements.
What is your change? Or is it secret because of competition considerations?
P.S: Very far away in the future, I add this to avoid annoying questions on planned next release date.
It may be better if you release every new version(even if the improvement is only 1 elo)
Maybe in this case more people can help in testing and you make a bigger improvement(when part of the help may be finding cases when the changes that you believe to be good are bad at slower time control or with more games or against other opponents).
Uri
The process of making a release is very stressful - and also involved a flurry of emails and other distractions that you have to deal with. I would say that each release slows down the development process a little. They can also help the development process if they are not done too frequently.
One could just open up the development repository of course, but then there would be mass confusion about which version to use and start testing and again this would lead to a lot of extra communication and distraction for the developers.
This might work if the developers can avoid these distractions and basically declare the code to be what you see is what you get, use at your own risk, etc.
But do you honestly believe this would reduce the amount of questions that they would receive?
-
- Posts: 408
- Joined: Sat Mar 06, 2010 9:28 am
Re: root move ordering
I cannot find the name Vratko Polák in the 1.8 sources. Either he has not contributed much or it was one-side trade. Others contribute patches, bug fixes, ideas and you put your name under it. Maybe this your understanding of "open source"?mcostalba wrote:If people is seriously interested in developing (as can be Vratko, just to make a name) there are plenty of ways to contribute with patches _and_ serious tests.
To open up the git repo for public read access would be appropriate. People who contribute to the SF development should know what's going on.