Not logged inRybka Chess Community Forum
Up Topic The Rybka Lounge / Computer Chess / Honey, Bluefish, Black Diamond XI
- By MrKris (***) Date 2020-02-27 06:24 Edited 2020-02-27 07:30 Upvotes 3
Honey XI http://talkchess.com/forum3/viewtopic.php?f=2&t=73038

https://github.com/MichaelB7/Stockfish/releases
(also Bluefish, Black Diamond & Weakfish: source, Win & Mac execs.)

Latest: https://github.com/MichaelB7/Stockfish/tree/honey
https://github.com/MichaelB7/Stockfish/tree/honey/src/BleedingEdgeBinaries *

None of the pop/modern worked on my 'real' popcnt/modern cpu the AMD Phenom II X6.
Strange because those from asmFish, CFish, Corchess, ShashChess, Stockfish and Sugar are all fine.


So I compared x64/win64 versions here.
I probably should have used the latest, * above, below Stockfish is slightly newer than the offical XI's:


G/90 secs + 1 sec  1-core Syzygy-6 amdphIIx6
Each engine: same Hert 250 LDS reversed
                          ELO  +-     Games   Score   Draws
0 Stockfish_20022221_x64   11   9  773.0/1500  52%     72%
1 Honey-XI win64            7  15  255.0/500   51%     76%
2 Blue-Honey-XI win64      -8  15  244.0/500   49%     75%
3 Bluefish-XI win64       -31  18  228.0/500   46%     66%


The games, draws filtered out, sorted shortest to longest: Stockfish lost all of the 35 shortest non-draws!

The nice 13.Nxg7 won in only 6 more moves. [Event "90"]
[Site "Hert LDS"]
[Date "2020.02.25"]
[Round "1"]
[White "Bluefish-XI win64"]
[Black "Stockfish_20022221_x64"]
[Result "1-0"]
[ECO "C18"]
[Opening "French"]
[Variation "Winawer, 6...Qa5"]
[TimeControl "90+1"]
[Termination "adjudication"]
[PlyCount "38"]
[WhiteType "human"]
[BlackType "human"]

1. e4 {book} e6 {book} 2. d4 {book} d5 {book} 3. Nc3 {book} Bb4 {book} 4.
e5 {book} c5 {book} 5. a3 {book} Bxc3+ {book} 6. bxc3 {book} Qa5 {book} 7.
Bd2 {+0.36/21 6.4s} Qa4 {+0.07/23 9.6s} 8. Nh3 {+0.31/23 11s} Ne7 {+0.52/17
0.80s} 9. Nf4 {+0.29/22 4.5s} b6 {+0.59/21 3.8s} 10. Nh5 {+0.43/18 0.98s}
O-O {+0.59/22 1.8s} 11. Qg4 {+1.29/23 4.8s} Ng6 {-0.20/22 3.5s} 12. h4
{+1.27/21 1.2s} Kh8 {-1.71/25 18s} 13. Nxg7 {+1.29/20 1.5s} Nxe5 {-1.47/22
1.1s} 14. Qh5 {+1.38/20 1.7s} cxd4 {-1.44/21 1.3s} 15. Qxe5 {+1.47/22 1.9s}
Nd7 {-1.56/22 2.4s} 16. Qd6 {+2.09/23 2.1s} Kxg7 {-1.56/20 1.4s} 17. Rh3
{+3.54/24 1.6s} Kh8 {-7.93/25 11s} 18. Rg3 {+4.42/22 1.5s} Ba6 {-8.07/23
3.0s} 19. Bxa6 {+5.18/22 3.0s} Rg8 {-7.62/22 1.1s, White wins by
adjudication} 1-0

The sacrifice 17.Na4 allows white a faster attack on the kingside.
Stockfish gave itself an advantage while it was lost: 25. g6 {+2.93/21 0.89s} Rg8 {+0.76/23 2.4s} 26. g7+ {+3.74/24 1.3s} Rxg7 {+0.84/1 0s} 27. Rxg7 {+4.15/26 1.5s} Kxg7 {-5.15"now I see"/24 3.4s} [Event "90"]
[Site "Hert LDS"]
[Date "2020.02.25"]
[Round "1"]
[White "Bluefish-XI win64"]
[Black "Stockfish_20022221_x64"]
[Result "1-0"]
[ECO "B63"]
[Opening "Sicilian"]
[Variation "Richter-Rauzer, Podebrad Variation, 10.f3 Rd8 11.Kb1"]
[TimeControl "90+1"]
[Termination "adjudication"]
[PlyCount "60"]
[WhiteType "human"]
[BlackType "human"]

1. e4 {book} c5 {book} 2. Nf3 {book} d6 {book} 3. d4 {book} cxd4 {book} 4.
Nxd4 {book} Nf6 {book} 5. Nc3 {book} Nc6 {book} 6. Bg5 {book} e6 {book} 7.
Qd2 {book} Be7 {book} 8. O-O-O {book} O-O {book} 9. Nb3 {+0.14/23 14s} Qb6
{+0.14/22 4.1s} 10. f3 {+0.20/19 1.1s} Rd8 {+0.25/19 1.5s} 11. Kb1
{+0.03/27 20s} Qc7 {+0.27/21 2.5s} 12. h4 {+0.05/22 2.6s} a6 {+0.15/23
2.5s} 13. Qf2 {+0.10/21 0.94s} b5 {+0.41/23 4.2s} 14. Be3 {+0.35/20 1.3s}
Nd7 {+0.46/21 1.5s} 15. g4 {+0.25/20 2.4s} Nce5 {+0.63/20 1.8s} 16. g5
{+0.25/25 9.5s} b4 {+0.84/21 3.3s} 17. Na4 {+0.28/21 1.0s} Rb8 {+1.14/20
1.6s} 18. h5 {+0.58/23 5.3s} Qc6 {+1.99/26 4.3s} 19. Be2 {+0.50/22 3.0s}
Qxa4 {+0.09/22 5.4s} 20. f4 {+0.60/20 2.0s} Nc6 {+1.36/23 3.9s} 21. f5
{+0.91/20 1.5s} exf5 {+1.12/23 3.9s} 22. exf5 {+1.44/20 2.1s} Nce5
{+0.36/23 2.9s} 23. f6 {+0.89/22 4.2s} gxf6 {+0.59/23 1.4s} 24. Rdg1
{+1.09/25 6.2s} Kh8 {+0.87/24 7.7s} 25. g6 {+2.93/21 0.89s} Rg8 {+0.76/23
2.4s} 26. g7+ {+3.74/24 1.3s} Rxg7 {+0.84/1 0s} 27. Rxg7 {+4.15/26 1.5s}
Kxg7 {-5.15/24 3.4s} 28. Bh6+ {+4.30/27 3.4s} Kh8 {-6.80/26 4.9s} 29. Qg3
{+4.47/29 4.5s} Bf8 {-6.83/26 2.6s} 30. Rg1 {+4.44/26 1.9s} Ng6 {-6.92/25
1.7s, White wins by adjudication} 1-0

From the Najdorf Poisoned Pawn.
Stockfish said 0.00 for a few moves after 23.g5, sacrificing a knight after sacrificing 3 pawns, but it won quickly. [Event "90"]
[Site "Hert LDS"]
[Date "2020.02.26"]
[Round "1"]
[White "Blue-Honey-XI win64"]
[Black "Stockfish_20022221_x64"]
[Result "1-0"]
[ECO "B97"]
[Opening "Sicilian"]
[Variation "Najdorf, Poisoned Pawn, 10.e5"]
[TimeControl "90+1"]
[Termination "adjudication"]
[PlyCount "60"]
[WhiteType "human"]
[BlackType "human"]

1. e4 {book} c5 {book} 2. Nf3 {book} d6 {book} 3. d4 {book} cxd4 {book} 4.
Nxd4 {book} Nf6 {book} 5. Nc3 {book} a6 {book} 6. Bg5 {book} e6 {book} 7.
f4 {book} Qb6 {book} 8. Qd2 {book} Qxb2 {book} 9. Rb1 {book} Qa3 {book} 10.
e5 {book} h6 {book} 11. Bh4 {book} dxe5 {book} 12. fxe5 {book} Nfd7 {book}
13. Ne4 {0.00/24 8.2s} Qxa2 {+1.19/25 3.1s} 14. Rd1 {+0.33/23 1.7s} Qd5
{+0.82/23 4.0s} 15. Qe3 {+0.12/25 4.7s} Qxe5 {+0.70/23 1.9s} 16. Be2
{+0.07/24 3.4s} Bc5 {+1.12/24 3.8s} 17. Bg3 {-0.04/25 3.3s} Qd5 {+0.23/28
10s} 18. c4 {-0.02/24 2.0s} Bxd4 {+0.69/21 1.1s} 19. Rxd4 {0.00/24 2.9s}
Qa5+ {+0.81/24 2.6s} 20. Rd2 {+0.09/24 2.4s} O-O {+0.60/22 2.0s} 21. Bd6
{+0.08/25 2.6s} Rd8 {+0.62/23 1.8s} 22. g4 {+0.64/24 6.5s} f5 {+0.53/21
3.5s} 23. g5 {+1.34/24 3.4s} fxe4 {0.00/23 4.3s} 24. gxh6 {+1.52/23 3.5s}
Ne5 {0.00/24 1.1s} 25. O-O {+2.86/22 1.8s} Rxd6 {0.00/23 3.3s} 26. Rxd6
{+3.13/23 2.1s} Nbc6 {-1.56/25 5.5s} 27. Qg3 {+3.72/22 2.0s} g6 {-5.93/25
11s} 28. Bh5 {+7.31/22 2.1s} Ne7 {-12.19/23 11s} 29. Rd8+ {+8.66/23 2.4s}
Kh7 {-11.20/21 1.0s} 30. Rff8 {+9.34/23 2.2s} Qa1+ {-15.97/23 10s, White
wins by adjudication} 1-0

After 18...O-O black sacrificed a pawn, offered a knight, sacrificed a 2nd pawn and was soon winning.   [Event "90"]
[Site "Hert LDS"]
[Date "2020.02.26"]
[Round "1"]
[White "Stockfish_20022221_x64"]
[Black "Honey-XI win64"]
[Result "0-1"]
[ECO "B33"]
[Opening "Sicilian"]
[Variation "Pelikan, 7.Nd5"]
[TimeControl "90+1"]
[Termination "adjudication"]
[PlyCount "61"]
[WhiteType "human"]
[BlackType "human"]

1. e4 {book} c5 {book} 2. Nf3 {book} Nc6 {book} 3. d4 {book} cxd4 {book} 4.
Nxd4 {book} Nf6 {book} 5. Nc3 {book} e5 {book} 6. Ndb5 {book} d6 {book} 7.
Nd5 {book} Nxd5 {book} 8. exd5 {book} Ne7 {book} 9. c4 {+0.37/22 3.4s} Ng6
{-0.31/24 11s} 10. Qa4 {+0.48/20 1.8s} Bd7 {0.00/21 1.1s} 11. Qb4 {+0.55/20
1.3s} Bf5 {0.00/22 2.2s} 12. Qa4 {+0.71/21 4.3s} Bd7 {0.00/25 3.1s} 13. Qb4
{+0.47/20 2.0s} Bf5 {0.00/25 1.8s} 14. g3 {+0.54/22 6.0s} Be7 {+0.20/20
3.5s} 15. h4 {+0.29/20 2.6s} a6 {-0.07/24 11s} 16. Nc3 {+0.43/18 1.7s} h5
{0.00/23 3.6s} 17. Be2 {0.00/24 13s} e4 {+0.08/18 1.2s} 18. O-O {-0.01/19
1.2s} O-O {0.00/22 3.3s} 19. Qxb7 {0.00/23 2.4s} Bf6 {+0.48/23 7.0s} 20.
Bxh5 {0.00/23 2.6s} Nxh4 {+0.64/20 1.4s} 21. Re1 {-0.75/26 17s} Bg6
{+0.94/23 4.0s} 22. Bg4 {-0.54/23 2.2s} Bd4 {+1.46/20 1.0s} 23. Be3
{-1.69/25 14s} Rb8 {+2.00/23 3.9s} 24. Qxa6 {-1.85/23 6.8s} Be5 {+2.70/18
1.1s} 25. Nb5 {-1.98/19 1.0s} f5 {+2.52/23 4.3s} 26. Bh3 {-2.22/23 2.6s}
Bh5 {+3.03/19 1.5s} 27. f4 {-2.23/21 1.0s} exf3 {+3.51/25 2.8s} 28. Bf2
{-4.89/23 3.7s} Bxg3 {+5.35/24 1.9s} 29. Bxg3 {-7.09/24 5.0s} Qg5 {+5.91/21
1.6s} 30. Kh1 {-9.39/25 12s} Qxg3 {+6.35/21 1.6s} 31. Qxd6 {-8.85/22 0.71s,
Black wins by adjudication} 0-1
Attachment: Blues-Honey.pgn - Games (3760k)
- - By MrKris (***) Date 2020-03-06 10:30

Honey XI http://talkchess.com/forum3/viewtopic.php?f=2&t=73038

https://github.com/MichaelB7/Stockfish/releases
(also Bluefish, Black Diamond & Weakfish: source, Win & Mac execs.)

Latest: https://github.com/MichaelB7/Stockfish/tree/honey
Win & Mac: https://github.com/MichaelB7/Stockfish/tree/honey/src/BleedingEdgeBinaries

Compiling Honey, Bluefish etc. for Linux and AMD Phenon

(1) Stockfish-official uses -msse3 for 'modern' ('popcnt'), this allows it to run on the AMD Phenom (generation just before the 'FX'/'Bulldozer')

Honey's own Makefile, help 'echo' section says this:
     @echo "x86-64-modern           > x86 64-bit with popcnt support (also enables SSE3)

Honey Makefile, code section, change -msse4 to -msse3 for Linux or Windows:
### 3.6 popcnt
ifeq ($(popcnt),yes)
  ifeq ($(largepages),yes)
    CXXFLAGS += -DLargePages
  endif
  ifeq ($(arch),ppc64)
    CXXFLAGS += -DUSE_POPCNT
  else ifeq ($(comp),icc)
    CXXFLAGS += -msse4 -DUSE_POPCNT change to: {this one is for icc, but I changed both to not worry}
    CXXFLAGS += -msse3 -DUSE_POPCNT
  else
    CXXFLAGS += -msse4 -mpopcnt -DUSE_POPCNT change to: {for gcc}
    CXXFLAGS += -msse3 -mpopcnt -DUSE_POPCNT
  endif
endif


(2) Linux ONLY!
Near the end of the Honey Makefile, add "./" as shown:
  $(EXE) bench > /dev/null 2> $(EXE).bench && wait change to:
  ./$(EXE) bench > /dev/null 2> $(EXE).bench && wait
  rm -f *.o syzygy/*.o llvm-profdata
#  touch * syzygy/*
#  cp $(EXE) /opt/picochess/engines/armv7l
  @echo ""
  @echo "==================================="
  @echo "$(EXE) build completed..."
  @echo "==================================="
  @echo ""

(Note: all the other $(EXE)'s in the Makefile are okay for Linux, they are for the compiler or the text name, but here the user is launching the new exe directly, as in a terminal.
This line is his new idea of writing a text of the bench along with the new executable.)

_ _ _ _ _ _ _ _

His new 'build.sh' in the src folder worked great!
It is a script that compiles all the versions at once.
They appear correctly named in the src folder.

Near the top make sure that the one you want is the only one without the # in front (means comment):
#COMP=...
COMP="COMP=gcc"
#COMP=...

#ARCH=...
ARCH="ARCH=x86-64-modern"
#ARCH=


You can increase the threads/cores for the compiler:
make -j $BUILD $ARCH $COMP "$@" change to a number >1 after the j:
make -j10 $BUILD $ARCH $COMP "$@"


So, after changing the very few characters above in the Makefile and build.sh:
I opened a termainal, changed the directory to the /Stockfish-honey/src folder and ran the script:
$ cd {my location path}/Stockfish-honey/src
$ ./build.sh

My results:
Terminal output, R7 2700X, Ubuntu 19.10, default GCC 9.2, -j10 
{I added the ✔'s for here}

### Executables built 03/04/2020:
### ======================================================
### Black-Diamond-030220.bench:Nodes searched  : 8734439 ✔
### Black-Diamond-030220.bench:Nodes/second    : 2336036
### Bluefish-030220.bench:Nodes searched  : 4956705 ✔
### Bluefish-030220.bench:Nodes/second    : 2312974
### Bluefish-FD-030220.bench:Nodes searched  : 12164653 ✔
### Bluefish-FD-030220.bench:Nodes/second    : 2381024
### Blue-Honey-dev-030220.bench:Nodes searched  : 5097642 ✔
### Blue-Honey-dev-030220.bench:Nodes/second    : 2349143
### Blue-Honey-FD-dev-030220.bench:Nodes searched  : 10547395 ✔
### Blue-Honey-FD-dev-030220.bench:Nodes/second    : 2356959
### Honey-dev-030220.bench:Nodes searched  : 4987146 ✔
### Honey-dev-030220.bench:Nodes/second    : 2362456
### Honey-FD-dev-030220.bench:Nodes searched  : 10749677 ✔
### Honey-FD-dev-030220.bench:Nodes/second    : 2393071
### Stockfish-030220.bench:Nodes searched  : 4923286 ✔
### Stockfish-030220.bench:Nodes/second    : 2400431
### Stockfish-FD-030220.bench:Nodes searched  : 9915958 ✔
### Stockfish-FD-030220.bench:Nodes/second    : 2350867
### Weakfish-030220.bench:Nodes searched  : 7654842 ✔
### Weakfish-030220.bench:Nodes/second    : 3460597
### ======================================================
Processing time 128 seconds... {for all of them}

My Nodes searched matched the author's reference:
Original Makefile:

### Based on commits through 03/02/2020:
### ======================================================
### Black-Diamond-030220.exe.bench:Nodes searched  : 8734439
### Black-Diamond-030220.exe.bench:Nodes/second    : 2005611
### Bluefish-030220.exe.bench:Nodes searched  : 4956705
### Bluefish-030220.exe.bench:Nodes/second    : 2038118
### Bluefish-FD-030220.exe.bench:Nodes searched  : 12164653
### Bluefish-FD-030220.exe.bench:Nodes/second    : 2048266
### Blue-Honey-dev-030220.exe.bench:Nodes searched  : 5097642
### Blue-Honey-dev-030220.exe.bench:Nodes/second    : 2090054
### Blue-Honey-FD-dev-030220.exe.bench:Nodes searched  : 10547395
### Blue-Honey-FD-dev-030220.exe.bench:Nodes/second    : 2139431
### Honey-dev-030220.exe.bench:Nodes searched  : 4987146
### Honey-dev-030220.exe.bench:Nodes/second    : 2143165
### Honey-FD-dev-030220.exe.bench:Nodes searched  : 10749677
### Honey-FD-dev-030220.exe.bench:Nodes/second    : 1780632
### Stockfish-030220.exe.bench:Nodes searched  : 4923286
### Stockfish-030220.exe.bench:Nodes/second    : 2229749
### Stockfish-FD-030220.exe.bench:Nodes searched  : 9915958
### Stockfish-FD-030220.exe.bench:Nodes/second    : 2157049
### Weakfish-030220.exe.bench:Nodes searched  : 7654842
### Weakfish-030220.exe.bench:Nodes/second    : 2934013
### ======================================================
Parent - - By bob (Gold) Date 2020-03-12 19:13
One other solution, better than modifying the Makefile.  Add "." to your shell's default search path.  I use the C shell and use this:

set path = (. $path)

You add that to your .cshrc file and it will be set for every instance of a shell (say multiple windows) that is spawned once you save the file (only for you of course, other users won't see this change at all.

The advantage here is that the shell will always look in "./" first to find the executable.  And also that now you don't have to remember to modify the Makefile each time you download a new version.

If you use bash, which I don't, I think the syntax is different:

PATH=.:$path

that goes in your .bash_profile file (if that has not changed since the last time I used bash).
Parent - - By MrKris (***) Date 2020-03-12 23:08
Thank you very much for the info.!

For now I am too much of a non-programmer to make a system change that I need just for the single use, and it just takes seconds to add the 2 characters.
You provided an excellent explanation but I need to understand it in my own mind first.

It seems after fter your change I could "$ stockfish" instead of before, as I am used to  for Linux "$ ./stockfish".
But if I change the path, and then forget that, will my terminal interrupt "$ ./stockfish" as "$ ../stockfish" and look in the parent folder?

I am unlikely to forget to change his Makefile because I had to find the problem myself for Linux.
Then too, I have to change his Makefile's Popcnt to sse3 (from his non-official-Stockfish use of 4) for my AMD Phenom, though 4 works on my Ryzen.

But, it is very interesting that it could be done, thanks.

- Unrelated is I like to change his excellent 'build.sh': Date1 to the constant (no quotes) of the date of his source, otherwise it names the executables with the date I am compiling them.
Parent - - By bob (Gold) Date 2020-03-13 02:29 Upvotes 1
No.

Here's how this works.

When you type "stockfish" without the preceding directory spec (./) the shell will loop through your "path" variable directories, one at a time, in the order they appear in the list.  In each such directory it will try to execute "stockfish".  If it finds it, you are done.   If it goes through the entire list with no success, you get the usual stockfish: command not found.

So, if it exists in your path, it will find it.  You can ALWAY use specific paths with no problem.  IE ./stockfish skips the "path checks" given above and looks in the current directory ONLY.  ../stockfish always goes one level back and if it doesn't find stockfish, it fails. 

So, to answer your question above, if you type ./stockfish it will always work so long as stockfish exists in the current directory, else it fails.  It ignore the "path" directories completely since you explicitly told it where to look.  If you have no preceding "/" character, it will go through the path list looking for the executable.
Parent - By MrKris (***) Date 2020-03-15 05:52
Thank you very much for the idea (your post before) and your explanation!

Both helped me quite a lot in finding more information about it on the web (more or less what to look for).
I think that I understand my $PATH now. (It seems bash can change per disto so the folder you mentioned can vary.)

Frankly though, since you have been so helpful, I have to admit that I probably will not change it after all.
As an amateur if there is some weird way that  I can have something with the same name in . that conflicts with an installer or something I run in the terminal then I will probably eventually find it.

His philosophy in both the Makefile (if using it for just one executable) and build.sh (for compiler options) is "change as needed," so I do not particularly mind adding the ./ .
Up Topic The Rybka Lounge / Computer Chess / Honey, Bluefish, Black Diamond XI

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill