Page 1 of 2

Koivisto 3.0 (Including binaries)

Posted: Sat Oct 17, 2020 9:28 pm
by Koivisto
Koivisto 3.0

We released 2.0 over a month ago, and it is finally time for another release :). In addition to all the elo gainers, we have also fixed a couple bugs related to hash table usage and principal variation printing, so Koivisto should be a much better analysis tool now.

Our testing has shown considerable elo gain over Koivisto 2.0:

Code: Select all

ELO   | 175.73 +- 33.35 (95%)
SPRT  | 60.0+0.6s Threads=1 Hash=64MB
LLR   | 3.03 (-2.94, 2.94) [0.00, 5.00]
Games | N: 300 W: 163 L: 23 D: 114
Changes:
- Added Eugenio Bruno as an author
- changed singular extension conditions
- adjusted null move pruning conditions
- adjusted lmp counts
- limit threads depending on hardware
- full formatting
- Added aspiration windows
- Added simple tempo bonus
- Adjust lmr depending on countermove history
- Adjust lmr conditions
- Added castling rights eval term
- Added blocked pawn eval term
- Added passer rank eval term
- Changed check extension conditions
- Added draw evaluation (no mating material)
- Linearised evaluation functions
- changed futility pruning conditions
- no more floats in eval (mostly)
- Bugfixes

Release:
https://github.com/Luecx/Koivisto/releases/tag/v3.0

Note that we strongly recommend that you build the binaries yourself for best performance (https://github.com/Luecx/Koivisto#compiling)

We have received immense help from other community members/engine authors and they deserve a shoutout:
- Andrew Grant https://github.com/AndyGrant/Ethereal
- Mk-Chan https://github.com/Mk-Chan
- Terje Kirstihagen https://github.com/TerjeKir
- kz04px https://github.com/kz04px
- bobsquared https://github.com/bobsquared/Mr_Bob_Chess

We enjoyed seeing Koivisto 1.0 on CCRL's rating list, and we'd really like to see how our new release stacks up against the other engines, especially in multiple thread configurations. We estimate Koivisto 3.0 1cpu to be rated above 3000 elo cclr, but we haven't done enough testing to be very accurate.

Previous release thread:
http://talkchess.com/forum3/viewtopic.php?f=2&t=75052

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 3:56 am
by CMCanavessi
Nice! I will surely test it in my leagues. Do you have plans to add ponder? I run my games with ponder on and engines without ponder are at a slight disadvantage.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 10:35 am
by Koivisto
CMCanavessi wrote: Sun Oct 18, 2020 3:56 am Nice! I will surely test it in my leagues. Do you have plans to add ponder? I run my games with ponder on and engines without ponder are at a slight disadvantage.
Well for sure add pondering eventually, idk when tho.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 11:55 am
by Gabor Szots
For me the source code compiles as Koivisto 0.0...

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 1:22 pm
by Luecx
Gabor Szots wrote: Sun Oct 18, 2020 11:55 am For me the source code compiles as Koivisto 0.0...
It compiles as Koivisto 0.0 if cmake is used and not the makefile.
We prefer tto use the makefile. We havent worked on the cmakelists.txt for a while.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 2:00 pm
by Gabor Szots
Luecx wrote: Sun Oct 18, 2020 1:22 pm
Gabor Szots wrote: Sun Oct 18, 2020 11:55 am For me the source code compiles as Koivisto 0.0...
It compiles as Koivisto 0.0 if cmake is used and not the makefile.
We prefer tto use the makefile. We havent worked on the cmakelists.txt for a while.
The makefile does not work for me. I get these error messages:
eval.cpp: In member function 'bb::Score Evaluator::evaluate(Board*)':
eval.cpp:765:15: warning: declaration of 'hangingEval' shadows a global declaration [-Wshadow]
765 | EvalScore hangingEval = computeHangingPieces(b);
| ^~~~~~~~~~~
eval.cpp:165:11: note: shadowed declaration is here
165 | EvalScore hangingEval[5]{
| ^~~~~~~~~~~
eval.cpp:766:15: warning: declaration of 'pinnedEval' shadows a global declaration [-Wshadow]
766 | EvalScore pinnedEval = computePinnedPieces(b);
| ^~~~~~~~~~
eval.cpp:173:11: note: shadowed declaration is here
173 | EvalScore pinnedEval[15]{
| ^~~~~~~~~~
eval.cpp:422:11: warning: unused variable 'earlyPSTScalar' [-Wunused-variable]
422 | float earlyPSTScalar = earlyWeightScalar / 100;
| ^~~~~~~~~~~~~~
eval.cpp:423:11: warning: unused variable 'latePSTScalar' [-Wunused-variable]
423 | float latePSTScalar = lateWeightScalar / 100;
| ^~~~~~~~~~~~~
eval.cpp: In member function 'float* Evaluator::getPSQT(bb::Piece, bool)':
eval.cpp:938:45: warning: unused parameter 'early' [-Wunused-parameter]
938 | float* Evaluator::getPSQT(Piece piece, bool early) {
| ~~~~~^~~~~
search.cpp: In function 'bb::Score pvSearch(Board*, bb::Score, bb::Score, bb::Depth, bb::Depth, ThreadData*, move::Move)':
search.cpp:718:30: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
718 | || isCapture(m) && staticExchangeEval >= 0
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
search.cpp:719:29: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
719 | || isPromotion && (promotionPiece(m) % 6 == QUEEN)
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file ../bin/Koivisto_2.2: No such file or directory
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [makefile:26: openbench] Error 1

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 2:06 pm
by Luecx
Gabor Szots wrote: Sun Oct 18, 2020 2:00 pm
Luecx wrote: Sun Oct 18, 2020 1:22 pm
Gabor Szots wrote: Sun Oct 18, 2020 11:55 am For me the source code compiles as Koivisto 0.0...
It compiles as Koivisto 0.0 if cmake is used and not the makefile.
We prefer tto use the makefile. We havent worked on the cmakelists.txt for a while.
The makefile does not work for me. I get these error messages:
eval.cpp: In member function 'bb::Score Evaluator::evaluate(Board*)':
eval.cpp:765:15: warning: declaration of 'hangingEval' shadows a global declaration [-Wshadow]
765 | EvalScore hangingEval = computeHangingPieces(b);
| ^~~~~~~~~~~
eval.cpp:165:11: note: shadowed declaration is here
165 | EvalScore hangingEval[5]{
| ^~~~~~~~~~~
eval.cpp:766:15: warning: declaration of 'pinnedEval' shadows a global declaration [-Wshadow]
766 | EvalScore pinnedEval = computePinnedPieces(b);
| ^~~~~~~~~~
eval.cpp:173:11: note: shadowed declaration is here
173 | EvalScore pinnedEval[15]{
| ^~~~~~~~~~
eval.cpp:422:11: warning: unused variable 'earlyPSTScalar' [-Wunused-variable]
422 | float earlyPSTScalar = earlyWeightScalar / 100;
| ^~~~~~~~~~~~~~
eval.cpp:423:11: warning: unused variable 'latePSTScalar' [-Wunused-variable]
423 | float latePSTScalar = lateWeightScalar / 100;
| ^~~~~~~~~~~~~
eval.cpp: In member function 'float* Evaluator::getPSQT(bb::Piece, bool)':
eval.cpp:938:45: warning: unused parameter 'early' [-Wunused-parameter]
938 | float* Evaluator::getPSQT(Piece piece, bool early) {
| ~~~~~^~~~~
search.cpp: In function 'bb::Score pvSearch(Board*, bb::Score, bb::Score, bb::Depth, bb::Depth, ThreadData*, move::Move)':
search.cpp:718:30: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
718 | || isCapture(m) && staticExchangeEval >= 0
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
search.cpp:719:29: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
719 | || isPromotion && (promotionPiece(m) % 6 == QUEEN)
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file ../bin/Koivisto_2.2: No such file or directory
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [makefile:26: openbench] Error 1

Hi Gabor,
sorry it's a bit confusing, but we added building instructions to the readme. The error you're getting is due to no bin folder present. To build:

git clone https://github.com/Luecx/Koivisto.git
cd Koivisto/

mkdir bin/
cd src_files
make native


As you can see we manually do the mkdir bin for now, though in the future we should probably move that to the makefile.

Thanks for your help with testing.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 2:16 pm
by Gabor Szots
Luecx wrote: Sun Oct 18, 2020 2:06 pmHi Gabor,
sorry it's a bit confusing, but we added building instructions to the readme. The error you're getting is due to no bin folder present. To build:

git clone https://github.com/Luecx/Koivisto.git
cd Koivisto/

mkdir bin/
cd src_files
make native


As you can see we manually do the mkdir bin for now, though in the future we should probably move that to the makefile.

Thanks for your help with testing.
Hi Finn,

Placing a bin folder outside of the sources did help, only the created file displays Koivisto 2.2. And I had to extend it to ...exe manually.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 2:47 pm
by Luecx
Gabor Szots wrote: Sun Oct 18, 2020 2:16 pm
Luecx wrote: Sun Oct 18, 2020 2:06 pmHi Gabor,
sorry it's a bit confusing, but we added building instructions to the readme. The error you're getting is due to no bin folder present. To build:

git clone https://github.com/Luecx/Koivisto.git
cd Koivisto/

mkdir bin/
cd src_files
make native


As you can see we manually do the mkdir bin for now, though in the future we should probably move that to the makefile.

Thanks for your help with testing.
Hi Finn,

Placing a bin folder outside of the sources did help, only the created file displays Koivisto 2.2. And I had to extend it to ...exe manually.
Hi Gabor,
Thanks again for all the help testing the build process. It seems like we based the release on the wrong commit, before we updated the makefile to correctly show the version. We fixed the release to point to the right commit, with tag 3.0.1. You can try building from master or from this new tag. Thanks for your patience! Hopefully our next release will go smoother.

Re: Koivisto 3.0 (Including binaries)

Posted: Sun Oct 18, 2020 2:51 pm
by Gabor Szots
Luecx wrote: Sun Oct 18, 2020 2:47 pm
Gabor Szots wrote: Sun Oct 18, 2020 2:16 pm
Luecx wrote: Sun Oct 18, 2020 2:06 pmHi Gabor,
sorry it's a bit confusing, but we added building instructions to the readme. The error you're getting is due to no bin folder present. To build:

git clone https://github.com/Luecx/Koivisto.git
cd Koivisto/

mkdir bin/
cd src_files
make native


As you can see we manually do the mkdir bin for now, though in the future we should probably move that to the makefile.

Thanks for your help with testing.
Hi Finn,

Placing a bin folder outside of the sources did help, only the created file displays Koivisto 2.2. And I had to extend it to ...exe manually.
Hi Gabor,
Thanks again for all the help testing the build process. It seems like we based the release on the wrong commit, before we updated the makefile to correctly show the version. We fixed the release to point to the right commit, with tag 3.0.1. You can try building from master or from this new tag. Thanks for your patience! Hopefully our next release will go smoother.
Latest release still points to v2.0.