petero2 wrote:Thanks. This confirms my suspicion. The following code seems to be compiled incorrectly:Jim Ablett wrote:http://dl.dropbox.com/u/5047625/cuckooc ... -d2-ja.zippetero2 wrote:The difference is in evaluation and happens first in this position:Jim Ablett wrote:http://dl.dropbox.com/u/5047625/cuckooc ... bug-ja.zippetero2 wrote:Hi Jim and thanks for these compilations.Jim Ablett wrote:
Here are my windows executables. I can't update my website at the moment so I'll put the download links here.
As well as the usual 32 bit Excelsior Jet standalone compile, I have included a JExecutable compile which is basically
the .jar file wrapped up as an executable & still uses the Java Runtime Environment installed on your system.
http://dl.dropbox.com/u/5047625/cuckoochess-112-ja.zip
Mirror:
http://cl.ly/BH1I/cuckoochess-112-ja.zip
Thank you for the update Peter.
Jim.
I did some speed measurements:So it seems like the JExecutable is running the 32-bit JVM even though both 32- and 64-bit version are installed on this computer. Maybe that is expected.Code: Select all
Version N/s 32-bit JVM 548313 64-bit JVM 1058576 JExecutable 554771 Excelsior 523160
A bigger concern is that the Excelsior compile doesn't produce the same search tree as the other versions. The code is supposed to be deterministic, so this needs some investigation to figure out if the difference could also affect playing strength. (It also means that the Excelsior nps value can't be directly compared to the other versions.)
When searching from the start position, the difference is seen for depth >= 14. I tried two different hash sizes and got 14 in both cases.
Could you please compile this debug version that dumps search tree information to a file during search? The jar file is here: http://web.comhem.se/petero2home/javach ... _debug.jar
Jim.
[d]
The java version evaluates this position to 165 and the Excelsior version evaluates it to 185. This exactly matches the bonus for having more than 1 rook on the 7:th rank. To confirm this suspicion, can you please compile this new debug version that adds some logging in the evaluation code: http://web.comhem.se/petero2home/javach ... 112_d2.jar
Jim.Can you please compile this simplified test case to see if it has the same bug:Code: Select all
long r7 = pos.pieceTypeBB[Piece.WROOK] & 0x00ff000000000000L; if (((r7 & (r7 - 1)) != 0) && ((pos.pieceTypeBB[Piece.BKING] & 0xff00000000000000L) != 0)) score += 20; // Two rooks on 7:th rowl=18014398509481984 corresponds to the error in the chess position above.Code: Select all
public class JetBug { public static void main(String[] args) { long l = 0; if (args.length > 0) l = Long.parseLong(args[0]); long x = l & (l - 1); boolean b = (l & (l - 1)) != 0; System.out.printf("l:%d x:%d b:%d\n", l, x, b?1:0); } }
Code: Select all
test 18014398509481984
l:18014398509481984 x:0 b:0


