Page 1 of 7

IvanHoe 999946 Beta

Posted: Tue Nov 01, 2011 6:20 am
by kingliveson
IvanHoe 999946 Beta source code released. Along is also updated RobboBase Library and Comrade GUI... Glad to see work is still being done on the project.
diff -abBdEHrw IvanHoe-Beta-999947c/evaluation.c IvanHoe-Beta-999946a/evaluation.c
164c164
<       if ((wBitboardP & ~FILEh) == 0
---
>       if (!(wBitboardP & ~FILEh)
167c167,171
<       if ((wBitboardP & ~FILEa) == 0
---
>       if (!(wBitboardP & ~FILEa)
> 	  && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[A8])
> 	POSITION->DYN->Value = 0;
>       if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP
> 	  && !(wBitboardP & ~FILEb)
169a174,177
>       if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP
> 	  && !(wBitboardP & ~FILEg)
> 	  && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[H8])
> 	POSITION->DYN->Value = 0;
190a199,206
>       if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP
> 	  && !(bBitboardP & ~FILEb)
> 	  && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[A1])
> 	POSITION->DYN->Value = 0;
>       if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP
> 	  && !(bBitboardP & ~FILEg)
> 	  && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[H1])
> 	POSITION->DYN->Value = 0;
304a321,328
>       if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP
> 	  && !(wBitboardP & ~FILEb)
> 	  && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[A8])
> 	POSITION->DYN->Value = 0;
>       if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP
> 	  && !(wBitboardP & ~FILEg)
> 	  && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[H8])
> 	POSITION->DYN->Value = 0;
325a350,357
>       if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP
> 	  && !(bBitboardP & ~FILEb)
> 	  && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[A1])
> 	POSITION->DYN->Value = 0;
>       if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP
> 	  && !(bBitboardP & ~FILEg)
> 	  && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[H1])
> 	POSITION->DYN->Value = 0;
364a397
>   boolean STORE_EVAL_HASH = TRUE;
389a423,428
> 	  if (!(wBitboardOcc ^ (wBitboardBL | wBitboardK | wBitboardP)) ||
> 	      !(wBitboardOcc ^ (wBitboardBD | wBitboardK | wBitboardP)))
> 	    POSITION->DYN->flags |= 32;
> 	  if (!(bBitboardOcc ^ (bBitboardBL | bBitboardK | bBitboardP)) ||
> 	      !(bBitboardOcc ^ (bBitboardBD | bBitboardK | bBitboardP)))
> 	    POSITION->DYN->flags |= 64;
417,418c456
<       int va;
<       /* boolean PROBING_WEAK = (HEIGHT (POSITION) >= TRIPLE_WEAK_HEIGHT); */
---
>       int va, v;
420,421c458,460
<       if (TRIPLE_VALUE (POSITION, &va, depth < TRIPLE_DEFINITE_PROBE_DEPTH &&
< 			HEIGHT (POSITION) > TRIPLE_DEFINITE_PROBE_HEIGHT, FALSE))
---
>       if ((v = TRIPLE_VALUE
> 	   (POSITION, &va, depth < TRIPLE_DEFINITE_PROBE_DEPTH &&
> 	    HEIGHT (POSITION) > TRIPLE_DEFINITE_PROBE_HEIGHT, FALSE)) == TRUE)
439a479,480
>       if (v == FALSE) /* mere */
> 	STORE_EVAL_HASH = FALSE;
465,466c506,507
< #define WHITE_MINOR_ONLY (8 << 2)
< #define BLACK_MINOR_ONLY (16 << 2)
---
> #define WHITE_MINOR_ONLY (POSITION->DYN->flags & 32)
> #define BLACK_MINOR_ONLY (POSITION->DYN->flags & 64)
468,469c509
<   if ((POSITION->DYN->flags & WHITE_MINOR_ONLY
<        || POSITION->DYN->flags & BLACK_MINOR_ONLY)
---
>   if ((WHITE_MINOR_ONLY || BLACK_MINOR_ONLY)
473,476c513,514
<   if ((POSITION->DYN->flags & WHITE_MINOR_ONLY
<        && PAWN_INFO->wPfile_count <= 1)
<       || (POSITION->DYN->flags & BLACK_MINOR_ONLY
< 	  && PAWN_INFO->bPfile_count <= 1)
---
>   if ((WHITE_MINOR_ONLY && PAWN_INFO->wPfile_count <= 1)
>       || (BLACK_MINOR_ONLY && PAWN_INFO->bPfile_count <= 1)
1351,1352c1389
<       if ((OpenFileB & POSITION->DYN->
< 	   wAtt & ~POSITION->DYN->bAtt) == 0)
---
>       if ((OpenFileB & POSITION->DYN->wAtt & ~POSITION->DYN->bAtt) == 0)
1415d1451
< #define WHITE_HAS_PIECE (POSITION->DYN->flags & 2)
1417c1453,1468
< #define BLACK_HAS_PIECE (POSITION->DYN->flags & 1)
---
> #define WHITE_HAS_PIECE (wBitboardOcc ^ (wBitboardK | wBitboardP))
> #define BLACK_HAS_PIECE (bBitboardOcc ^ (bBitboardK | bBitboardP))
> #define BitBoard3(x, y, z) ((1ULL << (x)) | (1ULL << (y)) | (1ULL << (z)))
> #define BitBoard4(w, x, y, z) ((1ULL << (w)) | (1ULL << (x)) | (1ULL << (y)) | (1ULL << (z)))
> #define A7A8B8 BitBoard3 (A7, A8, B8)
> #define F8G8H8 BitBoard3 (F8, G8, H8)
> #define E8F8G8H8 BitBoard4 (E8, F8, G8, H8)
> #define H7G8H8 BitBoard3 (H7, G8, H8)
> #define A8B8C8D8 BitBoard4 (A8, B8, C8, D8)
> #define A8B8C8 BitBoard3 (A8, B8, C8)
> #define A1B1A2 BitBoard3 (A1, B1, A1)
> #define F1G1H1 BitBoard3 (F1, G1, H1)
> #define E1F1G1H1 BitBoard4 (E1, F1, G1, H1)
> #define G1H1H2 BitBoard3 (G1, H1, H2)
> #define A1B1C1D1 BitBoard4 (A1, B1, C1, D1)
> #define A1B1C1 BitBoard3 (A1, B1, C1)
1427c1478
< 	Value = 0;
---
> 	Value = 0; /* patt */
1455c1506,1532
< 	  if (!wBitboardP)
---
> 	  if (wBitboardBL)
> 	    {
> 	      if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP
> 		  && !(wBitboardP & ~SqSet[B6]) && !(bBitboardP & ~FILEb)
> 		  && !((bBitboardP >> 8) & ~POSITION->OccupiedBW)
> 		  && !(wBitboardBL & (wBitboardBL - 1)) /* one bit */
> 		  && (bBitboardK & B8C8D8) && !(wBitboardK & A7A8B8))
> 		Value = 0;
> 	      if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP
> 		  && !((wBitboardP | bBitboardP) & ~FILEg)
> 		  && (bBitboardK & E8F8G8H8) && !(wBitboardK & H7G8H8))
> 		Value = 0;
> 	    }
> 	  if (wBitboardBD)
> 	    {
> 	      if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP
> 		  && !((wBitboardP | bBitboardP) & ~FILEb)
> 		  && (bBitboardK & A8B8C8D8) && !(wBitboardK & A7A8B8))
> 		Value = 0;
> 	      if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP
> 		  && !(wBitboardP & ~SqSet[G6]) && !(bBitboardP & ~FILEg)
> 		  && !((bBitboardP >> 8) & ~POSITION->OccupiedBW)
> 		  && !(bBitboardBL & (bBitboardBL - 1)) /* one bit */
> 		  && (bBitboardK & F8G8H8) && !(wBitboardK & H7G8H8))
> 		Value = 0;
> 	    }
> 	  if (!wBitboardP) /* valid ? */
1468c1545
< 	Value = 0;
---
> 	Value = 0; /* patt */
1496c1573,1599
< 	  if (!bBitboardP)
---
> 	  if (bBitboardBL)
> 	    {
> 	      if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP
> 		  && !((bBitboardP | wBitboardP) & ~FILEb)
> 		  && (wBitboardK & A1B1C1D1) && !(bBitboardK & A1B1A2))
> 		Value = 0;
> 	      if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP
> 		  && !(bBitboardP & ~SqSet[G3]) && !(wBitboardP & ~FILEg)
> 		  && !((wBitboardP << 8) & ~POSITION->OccupiedBW)
> 		  && !(bBitboardBL & (bBitboardBL - 1)) /* one bit */
> 		  && (wBitboardK & F1G1H1) && !(bBitboardK & G1H1H2))
> 		Value = 0;
> 	    }
> 	  if (bBitboardBD)
> 	    {
> 	      if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP
> 		  && !(bBitboardP & ~SqSet[B3]) && !(wBitboardP & ~FILEb)
> 		  && !((wBitboardP << 8) & ~POSITION->OccupiedBW)
> 		  && !(bBitboardBD & (bBitboardBD - 1)) /* one bit */
> 		  && (wBitboardK & A1B1C1) && !(bBitboardK & A1B1A2))
> 		Value = 0;
> 	      if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP
> 		  && !((bBitboardP | wBitboardP) & ~FILEg)
> 		  && (wBitboardK & E1F1G1H1) && !(bBitboardK & G1H1H2))
> 		Value = 0;
> 	    }
> 	  if (!bBitboardP) /* valid ? */
1523a1627
>   if (STORE_EVAL_HASH)


Time permitting, a build should be available soon...

Re: IvanHoe 999946 Beta

Posted: Wed Nov 02, 2011 1:55 am
by kingliveson

Code: Select all

1 IvanHoe version 999946a-RobboLib: 2801  300 (+ 54,=193,- 53), 50.2 %

IvanHoe 9.47b x64             : 300 (+ 54,=193,- 53), 50.2 %

2 IvanHoe 9.47b x64         : 2799  300 (+ 53,=193,- 54), 49.8 %

IvanHoe version 999946a-RobboLib: 300 (+ 53,=193,- 54), 49.8 %
Ponder on, 1 core test...

Re: IvanHoe 999946 Beta

Posted: Wed Nov 02, 2011 1:57 am
by Jeremy Bernstein
kingliveson wrote:

Code: Select all

1 IvanHoe version 999946a-RobboLib: 2801  300 (+ 54,=193,- 53), 50.2 %

IvanHoe 9.47b x64             : 300 (+ 54,=193,- 53), 50.2 %

2 IvanHoe 9.47b x64         : 2799  300 (+ 53,=193,- 54), 49.8 %

IvanHoe version 999946a-RobboLib: 300 (+ 53,=193,- 54), 49.8 %
Ponder on, 1 core test...
== no difference, but at least they didn't break anything. ;)

jb

Re: IvanHoe 999946 Beta

Posted: Wed Nov 02, 2011 7:05 pm
by kingliveson
This release was geared towards general library for tablebases access -- and to make integration easier for other engines/GUIs . I am just glad to see the project is at least still on going.

x64 Linux/Windows binaries/libraries attached. The rest of the builds will come later. oh, I believe this only works with the newer RobboBases.

Code: Select all

0d6400001c2e577696c0aece00a4d74e  Linux/IvanHoe999946a
aa5bbfc9923f0d06bc31d4478d13dd13  Linux/RobboBaseLib.so
702dfc0062d0673646c75b5cce4d9e9e  Windows/IvanHoe999946a.exe
957d2342294598497ad840af296c09a3  Windows/RobboBaseLib.dll

Re: IvanHoe 999946 Beta

Posted: Thu Nov 03, 2011 4:18 pm
by kingliveson
Per RobboBases usage with this IvanHoe build:

RobboBaseDynamicLibraryFile field is for libraries .so (Linux) and .dll (Windows). It should be left untouched in most cases because the engine will look in the current working directory for these files.

I dont think it works with older RobboTripleBase found here. I have tested the newer ones and it works. Some time before end of the year, the newer RobboBases (up to 5 men) should be uploaded to chess.cygnitec.com.

Edit: If the engine wont load for some reason, it could be due to not having Microsoft Visual C++ 2010 Redistributable Package (x64) installed. Correction will be made on the final build.

Re: IvanHoe 999946 Beta

Posted: Fri Nov 04, 2011 3:34 am
by Prima
By the way Kingliveson, thanks for your usual stable, multi-platform build/s.

Re: IvanHoe 999946 Beta

Posted: Fri Nov 04, 2011 6:53 pm
by robbolito
Intel(R) Core(TM)2 Quad Q9550 2.83GHz4x @3.5 GHz 4,096 MB Memory
Microsoft Windows XP.x64 Professional Service Pack 2 (Build 3790)
Fritz Benchmark:
Speed: 20.90
KNS: 10032
GUI: CB Rybka 3
Book: Perfect 2009-10 moves
Hash: 256
GTB and RB: ON
Ponder: OFF
Blitz:5' 0

Code: Select all

1   Houdini 1.5a x64   3195  +40/-17/=73 58.85%   76.5/130
2   IvanHoe 9.46b x64  3190  +17/-40/=73 41.15%   53.5/130
No more crashes using RBs.
Full RBs ( 125 GB)

Re: IvanHoe 999946 Beta

Posted: Fri Nov 04, 2011 7:04 pm
by robbolito
Intel(R) Core(TM) i5 Q- 750 @2.67 GHz 6.00 GB Memory
Windows 7.x64 Professional (Build 7600)
Fritz Benchmarks:
Speed:16.84
KNS: 8082
GUI: CB Rybka 3
Hash: 256
Book: Perfect 2009-10 moves
GTB and RB: ON
Blitz:5' 0

Code: Select all

1   Houdini 1.5a x64   3195  +43/-15/=82 60.00%   84.0/140
2   IvanHoe 9.46b x64  3190  +15/-43/=82 40.00%   56.0/140


Re: IvanHoe 999946 Beta

Posted: Fri Nov 04, 2011 7:55 pm
by robbolito
AMD Phenom(tm) II X6 1090T Processor x6 @ 3.20 GHz - 8.00MB Memory
Windows 7 Home Premium Edition (Build 7600)
Fritz Benchmark:
Speed: 23.33
KNS: 11196
GUI: CB Rybka 3
Book: Rybka 4- 10 moves
Hash: 256
RB and GTB: ON
Ponder: ON
Blitz:5' 0

Code: Select all

1   Houdini 1.5a x64   3195  +53/-13/=74 64.29%   90.0/140
2   IvanHoe 9.46b x64  3190  +13/-53/=74 35.71%   50.0/140

In total 410 games and not a single crash using new RBs.If only the strength of the engine could be improved.


Re: IvanHoe 999946 Beta

Posted: Sat Nov 05, 2011 7:06 am
by kingliveson
IvanHoe 999946a Linux/Windows 32/64 bit builds are available @ http://chess.cygnitec.com/engine/ivanhoe/.

The included pdf files answer many usage questions; eg: UCI options, RobboBases, perft, montecarlo, benchmark, etc. Some features are only available in Mode_Analysis. All I did was extracted/converted documentation the authors provided.

2071de8463a5310ff521fc6d479500d7 IvanHoe999946a.7z

Code: Select all

ace20fb4fbab7e9e8fc8c60a72bf6198  ./Linux/Mode_Analysis/x86-64/IvanHoe999946a
808dc322f4bf3aabc896ef42fafcd920  ./Linux/Mode_Analysis/x86-32/IvanHoe999946a
aa5bbfc9923f0d06bc31d4478d13dd13  ./Linux/Mode_Game_Play/x86-64/RobboBaseLib.so
b46601e45712633da57e745c1aeb3964  ./Linux/Mode_Game_Play/x86-64/IvanHoe999946a
aa5bbfc9923f0d06bc31d4478d13dd13  ./Linux/Mode_Game_Play/x86-32/RobboBaseLib.so
dcf1c658748993ca3de248a53f29929d  ./Linux/Mode_Game_Play/x86-32/IvanHoe999946a
92208e2933c1eb15bba82ebe31f299b3  ./Windows/Mode_Analysis/x86-64/IvanHoe999946a.exe
064c4c61a3304dd3dca9e69bbe8a5b3c  ./Windows/Mode_Analysis/x86-32/IvanHoe999946a.exe
958edeb0651932431a0e060da76e5403  ./Windows/Mode_Game_Play/x86-64/RobboBaseLib.dll
b550dc86f6f877fe5e78784ce32115fa  ./Windows/Mode_Game_Play/x86-64/IvanHoe999946a.exe
d7b614dbce7f160a26599828a13fe4ab  ./Windows/Mode_Game_Play/x86-32/RobboBaseLib.dll
7d1ca3f84f7851cdbcf9f710ed86345e  ./Windows/Mode_Game_Play/x86-32/IvanHoe999946a.exe
Thanks to the developers for this update!