Moderator: Andres Valverde
Reinhard Scharnagl wrote:There have been discussions switching to about this theme.
So by what could a good data structure be proved, without making the source code public? I always thought, the speed of generating legal moves with additional information whether the move is a check threat, capture, promotion or not could be a representative figure.
Reinhard.
Reinhard Scharnagl wrote:There have been discussions switching to about this theme.
So by what could a good data structure be proved, without making the source code public? I always thought, the speed of generating legal moves with additional information whether the move is a check threat, capture, promotion or not could be a representative figure.
... just implement both and use the most convenient one ...
Reinhard Scharnagl wrote:There have been discussions switching to about this theme.
So by what could a good data structure be proved, without making the source code public? I always thought, the speed of generating legal moves with additional information whether the move is a check threat, capture, promotion or not could be a representative figure.
Reinhard.
comparing to programs doing not that much and nonetheless being faster would establish a result.... Unless you happen to find a program that does exactly the same work that yours does, you have nothing to compare with. ...
It would be sufficient for me to believe in the autor's statement on that.Of course, you would need the source code to determine this.
Reinhard Scharnagl wrote:comparing to programs doing not that much and nonetheless being faster would establish a result.
I hope you will be not too sorry, when I cannot share this opinion that generally.... but the "generate all info all the time" method is never going to be the fastest in raw nps.
Reinhard Scharnagl wrote:Hi Sune,I hope you will be not too sorry, when I cannot share this opinion that generally.... but the "generate all info all the time" method is never going to be the fastest in raw nps.
I originally (when not working on a really playing engine) have started with a sequential move generator on demand, just because of very similar thoughts. But I have learned, that you cannot separate it from probability estimations. Creation of information could be cheaper doing it at once.
If it would cost 33% to generate all moves at once compared to do this sequentially and the probability to use that information (in this case the move) would be 50%, then 33%*100% < 100%*50%. In that example you would win by creating all moves at once, especially when additional information could lead to a better move preordering. Moreover it enables me to tune some pruning methods like nullmove by knowing the exact number of existing moves.
Reinhard Scharnagl wrote:A comparable situation is by the decision whether to sort preveluated moves at once or search the remaining optimum by demand. My decision has been now to sort at once using a performant shell sort derived method. Generating moves on demand will hardly create them all in a good order.
Always there, where a doing-all-at-once method is far more productive than the sequential task on demand, probability calculations should apply and, if the whole information at hand would additionally allow more heuristics to be applied.
that is your philosophy of applying nullmove cut offs, which of course is shared by others, not mine.I search the hash move and null killer move before even generating captures.
Even that move might be refusable by a nullmove or by other pruning methods. And one win of having a fast all move generator is to become able to make some decisions cheaper like having nullmove applied or not e.g. to avoid Zugzwang or a nullmove with probably bad (non pruning) result.I search the hash move and null killer move before even generating captures.
Reinhard Scharnagl wrote:Hi Sune,that is your philosophy of applying nullmove cut offs, which of course is shared by others, not mine.I search the hash move and null killer move before even generating captures.
Reinhard Scharnagl wrote:Some days again I have had a discussion with Vincent, who has been a little bit upset, when I tried to tell him, that double nullmove would not change that much in my engine concerning Zugzwang. But such wrong conclusions on other chess program's behaviour is proving me, that it is not easy to imagine that other programmers might do things in an other way.
And one win of having a fast all move generator is to become able to make some decisions cheaper like having nullmove applied or not e.g. to avoid Zugzwang or a nullmove with probably bad (non pruning) result.
So it is does not make sense to see those details isolated.
Reinhard.
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 33 guests