Stockfish 1.2

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 9:17 pm

Stockfish 1.2

Post by mcostalba »

This is Stockfish 1.2, an UCI engine derived from Glaurung


In one line,

Code: Select all


Stockfish 1.2 =   Stockfish 1.1
                + merge of Glaurung 2.2 evaluation enhancements
                + new tricks in the search
                - some bugs

This time we have two versions.

Stockfish 1.2 Optimistic is probably the strongest and has an aggressive play but sometime it is weak with lower rated engines.

Stockfish 1.2 Default is my favorite, it has a more solid play and makes less mistakes and my guess is that at longer time controls should be good.


Please Jim, could you be so kind to make a really SUPER-SUPER FAST-FAST compile? I have expectations on this puppy. Thanks in advance.


Known issues

- As the original Glaurung, this engine is endian sensitive. Please read the README if you have a PowerPC Mac and you want to compile yourself.


- On 32 bit systems code must be compiled with -fno-strict-aliasing option, both under gcc and Intel C++ compiler, to avoid random crashes due to a pop_1st_bit() optimization. MSVC does not seem to have this problem.


Download

You can download sources from:

Stockfish 1.2 Default
http://www.mediafire.com/?drit1zi901g


Stockfish 1.2 Optimistic
http://www.mediafire.com/?2bt01ijj4v2


Special thanks to Tord Romstad for his beautiful engine. It's a wonderful base to start from. If this engine will demonstrate stronger then Glaurung it is mostly because of the very high quality of the original one.


Thanks and happy new year to everybody !
Marco



P.S: I think this will be the last for a while, I say this to relax the worried testers, two versions in a few weeks I understand is too much :-)
Spock

Re: Stockfish 1.2

Post by Spock »

Does this play chess960, as Glaurung does ?
mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 9:17 pm

Re: Stockfish 1.2

Post by mcostalba »

Spock wrote:Does this play chess960, as Glaurung does ?
Yes. There are only few parts of the code customized for 960, mainly the castling rules and few other things. I didn't touch them.
Spock

Re: Stockfish 1.2

Post by Spock »

mcostalba wrote:
Spock wrote:Does this play chess960, as Glaurung does ?
Yes. There are only few parts of the code customized for 960, mainly the castling rules and few other things. I didn't touch them.
Thanks. I'll await the windows compiles.
User avatar
Graham Banks
Posts: 41412
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Stockfish 1.2

Post by Graham Banks »

mcostalba wrote:I think this will be the last for a while, I say this to relax the worried testers, two versions in a few weeks I understand is too much :-)
Thanks. :wink:
gbanksnz at gmail.com
Tord Romstad
Posts: 1808
Joined: Wed Mar 08, 2006 9:19 pm
Location: Oslo, Norway

Re: Stockfish 1.2

Post by Tord Romstad »

Hello Marco,

What a nice gift to receive tonight after coming home from my Christmas holiday! Thanks a lot for the new Stockfish. I think Stockfish 1.1 and Glaurung 2.2 are of comparable strength. Because they are both based on Glaurung 2.1, while the improvements in the two programs are almost completely different, combining the best from the two with some added improvements on top of it all should give a really strong program. I have very high expectations for Stockfish 1.2, and I hope I will soon have the chance to give your program a closer look and look for things I can steal.
:wink:

For now, I have a few small questions:

Is it correct that the only difference between "Default" and "Optimistic" is the razoring conditions?

Is your new formula for futilityValue in search() really correct? It looks a little fishy (no pun intended) to me:

Code: Select all

                  futilityValue =  evaluate(pos, ei, threadID)
                                 + FutilityMargins[int(depth)/2 - 1]
                                 + 32 * (depth & 1);
The term "32 * (depth & 1)" looks very strange. You add 32 to futilityValue when the remaining search depth is an odd number. Is this really what you intended? If yes, what's the idea behind the formula? If the formula is correct, I would suggest simplifying the code by indexing FutilityMargins[] by depth-2 rather than depth/2-1, remove the term 32*(depth&1), and adjust the contents and size of the FutilityMargins[] array accordingly.

Tord
User avatar
Jim Ablett
Posts: 1383
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: Stockfish 1.2

Post by Jim Ablett »

Image
Stockfish 1.2 by Marco Costalba

Windows x64/win32 pgo builds.

http://www.mediafire.com/?5z2iyoznijm

Jim.
User avatar
Graham Banks
Posts: 41412
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Stockfish 1.2

Post by Graham Banks »

Tord Romstad wrote: Is your new formula for futilityValue in search() really correct? It looks a little fishy (no pun intended) to me:

Code: Select all

                  futilityValue =  evaluate(pos, ei, threadID)
                                 + FutilityMargins[int(depth)/2 - 1]
                                 + 32 * (depth & 1);
The term "32 * (depth & 1)" looks very strange. You add 32 to futilityValue when the remaining search depth is an odd number. Is this really what you intended? If yes, what's the idea behind the formula? If the formula is correct, I would suggest simplifying the code by indexing FutilityMargins[] by depth-2 rather than depth/2-1, remove the term 32*(depth&1), and adjust the contents and size of the FutilityMargins[] array accordingly.

Tord
Does this mean I should wait for a Stockfish 1.2a? :wink:
gbanksnz at gmail.com
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Stockfish 1.2

Post by Dann Corbit »

Graham Banks wrote:
Tord Romstad wrote: Is your new formula for futilityValue in search() really correct? It looks a little fishy (no pun intended) to me:

Code: Select all

                  futilityValue =  evaluate(pos, ei, threadID)
                                 + FutilityMargins[int(depth)/2 - 1]
                                 + 32 * (depth & 1);
The term "32 * (depth & 1)" looks very strange. You add 32 to futilityValue when the remaining search depth is an odd number. Is this really what you intended? If yes, what's the idea behind the formula? If the formula is correct, I would suggest simplifying the code by indexing FutilityMargins[] by depth-2 rather than depth/2-1, remove the term 32*(depth&1), and adjust the contents and size of the FutilityMargins[] array accordingly.

Tord
Does this mean I should wait for a Stockfish 1.2a? :wink:
I think that testing strange ideas is the best way to find out if they are good ones.
User avatar
Dr.Wael Deeb
Posts: 9773
Joined: Wed Mar 08, 2006 8:44 pm
Location: Amman,Jordan

Re: Stockfish 1.2

Post by Dr.Wael Deeb »

Graham Banks wrote:
Tord Romstad wrote: Is your new formula for futilityValue in search() really correct? It looks a little fishy (no pun intended) to me:

Code: Select all

                  futilityValue =  evaluate(pos, ei, threadID)
                                 + FutilityMargins[int(depth)/2 - 1]
                                 + 32 * (depth & 1);
The term "32 * (depth & 1)" looks very strange. You add 32 to futilityValue when the remaining search depth is an odd number. Is this really what you intended? If yes, what's the idea behind the formula? If the formula is correct, I would suggest simplifying the code by indexing FutilityMargins[] by depth-2 rather than depth/2-1, remove the term 32*(depth&1), and adjust the contents and size of the FutilityMargins[] array accordingly.

Tord
Does this mean I should wait for a Stockfish 1.2a? :wink:
Foxy :lol:
_No one can hit as hard as life.But it ain’t about how hard you can hit.It’s about how hard you can get hit and keep moving forward.How much you can take and keep moving forward….