Skip to content

Commit

Permalink
Update readme for release 3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
bagaturchess committed Feb 6, 2023
1 parent 5b6e5d8 commit ce88b64
Show file tree
Hide file tree
Showing 9 changed files with 630 additions and 533 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public abstract class RootSearchConfig_BaseImpl_SMP extends RootSearchConfig_Bas
+ " min 1"
+ " max " + MAX_CountTranspositionTables
),

new UCIOptionSpin_Integer(UCIOptions.OPTION_NAME_SMP_Threads , DEFAULT_SMP_Threads,
"type spin default " + DEFAULT_SMP_Threads
+ " min 1"
Expand Down
8 changes: 5 additions & 3 deletions Sources/Resources/doc/engine/txt/backlog_BagaturEngine.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@


This is the Bagatur's to-do list (a.k.a the backlog) of features requested by users (or needed to be implemented, because of technical reasons).
Feel free to contribute http://sourceforge.net/projects/bagaturchess/develop

1. Improve the parallel algorithm to scale on many CPU cores
2. Continuous tuning of the Evaluation function based on the currently best engines
1. Improve the parallel algorithm to scale batter on many CPU cores
2. NNUE implementation of the evaluation function. More info: https://www.chessprogramming.org/NNUE, https://en.wikipedia.org/wiki/Efficiently_updatable_neural_network
3. Continuous tuning of the Evaluation function based on the currently best engines

You are more than welcome to contribute.
56 changes: 10 additions & 46 deletions Sources/Resources/doc/engine/txt/readme_distro_BagaturEngine.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@

As a chess player,
you want to play chess against a computer program (chess engine) which is able to be integrated inside UCI compliant user interfaces (like Arena).
This distribution is exactly what you want.
Short Description:
As a chess player, I want to play chess against a computer program (chess engine) using UCI compatible graphical user interfaces (GUI), like Arena or CuteChess, on my PC/Laptop.

Here are the steps necessary to run the engine:
1. Download an arbitrary UCI user interface. For example the most popular one is Arena - http://www.playwitharena.com/
How-to:
1. Download an arbitrary UCI user interface. For example the most popular one is Arena - http://www.playwitharena.com/, https://cutechess.com/
2. Install the UCI user interface on your computer.
3. Ensure that the Java Runtime Environment (JRE) 1.6 or later is installed on your computer (it should be the case nowadays but if not, have in mind that JRE is required, only JDK doesn't work). It could be downloaded from java.com.
4. Unpack this distribution somewhere (Arena has a sub-folder called 'engines', you can extract it there).
6. Open the UCI user interface and register the engine inside (You should become familiar with the installed UCI user interface anyway). You may use win32 or win64 version depending on your choice.
7. E2-E4 and enjoy :-)
3. Ensure that the Java Runtime Environment (JRE) 1.8 or later is installed on your computer (it should be the case nowadays but if not, have in mind that JRE is required, only JDK doesn't work). It could be downloaded from java.com.
4. Download and unpack this Bagatur's distribution somewhere (Arena has a sub-folder called 'engines', you can extract it there).
6. Open the UCI user interface and register the engine inside (You should become familiar with the installed UCI user interface anyway). There is still win32 version, but migrating to and using win64 is recommended.
7. Enjoy the match(s) :-)

Hints:
1. Bagatur needs at least 64M of memory to run.
1. Bagatur needs at least 128M of memory to run.
By default it runs with 1024M of memory, but uses only 70% of it (30% are for transposition table and the rest of 40% is used for other caches).
Because of java programming language specifics, changes in memory could lead to bad performance, anyway if necessary it could be changed by editing the corresponding *.ini or *.bat file.

Expand All @@ -25,43 +24,8 @@ Hints:

4.2 Under Windows, if for some reason the EXE files do not work as expected, then there are 2 options:
A) Edit the corresponding INI file. Find the option 'vm.location', remove semicolons (';' symbol) from the beginning of the line, and set the property to point out the wanted jvm.dll.
jvm.dll could be found in JRE's 'bin/client' or 'bin/server' directory. For example, something like 'C:\jdk1.6.0_07\jre\bin\client\jvm.dll'
jvm.dll could be found in JRE's 'bin/client' or 'bin/server' directory. For example, the path on your disk should be similar to 'C:\jdk1.6.0_07\jre\bin\client\jvm.dll'
B) (Not recommended) Use the BAT files inside the 'bin' sub-directory: Bagatur_1core.bat and Bagatur_mcore.bat
They can be edited so that the full path to java.exe is valid (it is also enough to add the java.exe to the system path variable)

Fortunately, in this project I am not alone - without the ideas, support and help from many people and web sites, Bagatur would not be as it is now!

If you are interested in the story "How was the idea of Bagatur Chess Engine application born?", than this YouTube video will be most probably interesting for you: https://youtu.be/_rNBxbUAbS0

Credits and many thanks to:
1. My wife and my family, because every now and then I have been stealing from our leisure time to work on this project.
2. My Employer, SAP, for the great colleagues, for the company values and the culture we have, for the opportunities to have a global impact and to get better in different topics, out of the assignments, roles and tasks I work on each day, and last but not least, for the flex work model we use.
3. Desislava Chocheva, for her hospitality and willingness to help. Without her support this video couldn't be a fact.
4. Ivo Zhekov, for motivating me to start this project as well as for accepting the challenge with such a strong opponent in front of the camera.
5. Simeon Stoichkov, for his general support, regarding chess topics in Bulgaria, as well as for the nice chess pieces and the chess clock, used in this video.
6. Varna Sound, for their willingness to support us and to participate with their great RAP music.
7. Iavor Stoimenov, for the endless discussions about Chess topics and Chess Engines.
8. Ivo Simeonov, for all the ideas, support, discussions, tests and contributed source code (e.g. initial version of pawn structure evaluation, C porting, exe launcher).
9. Graham Banks from Computer Chess Rating Lists (CCRL) website, https://ccrl.chessdom.com/ccrl/4040/ , https://www.computerchess.org.uk/ccrl/ , for all the chess engine tournaments he has been organizing and broadcasting over the Internet for many years as well.
10. Anton Mihailov, Aloril and Kan from Top Chess Engine Championship (TCEC) website, https://tcec-chess.com/ , for their invitations for Bagatur and its participation in chess engines tournaments for many seasons. Special thanks to Alroil, who contributed a lot in the testing of Bagatur�s Symmetric MultiProcessing (SMP) version, which runs under CentOS on more than 100 CPU cores on the used hardware. Thanks a lot for the support in case of engine issues/bugs!
11. Olivier Deville, for his great support during ChessWar XVII, http://www.open-aurec.com/chesswar/
12. Zoran Sevarac, author of Neuroph and co-author of Deep Netts, for his great support with the experiments with Neural Networks and Machine Learning in Java.
13. Roelof Berkepeis, for his testing, shared chess experience with me, and the great ideas described as issues on Bagatur�s page on github.com, https://github.com/bagaturchess/Bagatur/issues
14. Sameer Sehrawala, for the latest logo and for his general support.
15. Dusan Stamenkovic, http://www.chessmosaic.com/, for a few old Bagatur logos.
16. Internet, Global Web, for connecting us.
17. The Open Source Community!
18. MTD(f), https://en.wikipedia.org/wiki/MTD(f) , the parallel search of Bagatur is based on this idea.
19. winrun4j, http://winrun4j.sourceforge.net/ , for the windows executables.
20. All UCI compatible GUIs and UCI protocol itself.
21. REBEL, http://www.rebel13.nl/ , very helpful web page.
22. Glaurung chess engine, nice ideas inside the evaluation function (e.g. king safety).
23. Fruit, http://www.fruitchess.com/, legendary program, nice and simple design.
24. ChuckooChess, https://github.com/sauce-code/cuckoo , one of the first Java chess engines.
25. Chess22k, exciting java chess engine - strong and well written.
26. The source code of the strongest open-source Chess Engine � Stockfish, https://stockfishchess.org/
27. https://sourceforge.net/
28. https://github.com/
29. https://stackoverflow.com/
30. ... and many others!

42 changes: 39 additions & 3 deletions Sources/Resources/doc/engine/txt/readme_src_BagaturEngine.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@

As a chess programmer,
you want to have the sources of Bagatur chess engine as a part of the distribution so that you can easily compile and run them inside the Eclipse development environment.
This source distribution is exactly what you want. It is archived eclipse workspace with simple main method inside the EnginesRunner sub-project.

Short Description:
As a chess programmer, I want to have the Bagatur's sources in a distribution so that one could easily compile and run the code, inside the Java IDE (e.g. Eclipse development environment).
So this is archived eclipse workspace with source code. There is also main method, inside the EnginesRunner sub-project, which could be used as an entry point to start the Java program in the IDE.

How to run the engine:
1. extract the archive in a new directory
Expand All @@ -16,3 +17,38 @@ How to build a distribution from the sources:
4. copy w.ob and b.ob files (they are packed in the Bagatur engine distribution, inside 'data' sub directory) to the 'Resources\bin\engine\ob' directory (it is inside your workspace, if it isn't presented than create it)
5. run the ant script Ants/engine/build_BagaturEngine_distro.xml from Ants/ directory either from eclipse or command line
6. the distribution archive file will be generated in the WorkDir directory

Fortunately, in this project I am not alone - without the ideas, support and help from many people and web sites, Bagatur would not be as it is now!
Credits and many thanks to:
1. My wife and my family, because every now and then I have been stealing from our leisure time to work on this project.
2. My Employer, SAP, for the great colleagues, for the company values and the culture we have, for the opportunities to have a global impact and to get better in different topics, out of the assignments, roles and tasks I work on each day, and last but not least, for the flex work model we use.
3. Desislava Chocheva, for her hospitality and willingness to help. Without her support this video couldn't be a fact.
4. Ivo Zhekov, for motivating me to start this project as well as for accepting the challenge with such a strong opponent in front of the camera.
5. Simeon Stoichkov, for his general support, regarding chess topics in Bulgaria, as well as for the nice chess pieces and the chess clock, used in this video.
6. Varna Sound, for their willingness to support us and to participate with their great RAP music.
7. Iavor Stoimenov, for the endless discussions about Chess topics and Chess Engines.
8. Ivo Simeonov, for all the ideas, support, discussions, tests and contributed source code (e.g. initial version of pawn structure evaluation, C porting, exe launcher).
9. Graham Banks from Computer Chess Rating Lists (CCRL) website, https://ccrl.chessdom.com/ccrl/4040/ , https://www.computerchess.org.uk/ccrl/ , for all the chess engine tournaments he has been organizing and broadcasting over the Internet for many years as well.
10. Anton Mihailov, Aloril and Kan from Top Chess Engine Championship (TCEC) website, https://tcec-chess.com/ , for their invitations for Bagatur and its participation in chess engines tournaments for many seasons. Special thanks to Alroil, who contributed a lot in the testing of Bagatur’s Symmetric MultiProcessing (SMP) version, which runs under CentOS on more than 100 CPU cores on the used hardware. Thanks a lot for the support in case of engine issues/bugs!
11. Olivier Deville, for his great support during ChessWar XVII, http://www.open-aurec.com/chesswar/
12. Zoran Sevarac, author of Neuroph and co-author of Deep Netts, for his great support with the experiments with Neural Networks and Machine Learning in Java.
13. Roelof Berkepeis, for his testing, shared chess experience with me, and the great ideas described as issues on Bagatur’s page on github.com, https://github.com/bagaturchess/Bagatur/issues
14. Sameer Sehrawala, for the latest logo and for his general support.
15. Dusan Stamenkovic, http://www.chessmosaic.com/, for a few old Bagatur logos.
16. Internet, Global Web, for connecting us.
17. The Open Source Community!
18. MTD(f), https://en.wikipedia.org/wiki/MTD(f) , the parallel search of Bagatur is based on this idea.
19. winrun4j, http://winrun4j.sourceforge.net/ , for the windows executables.
20. All UCI compatible GUIs and UCI protocol itself.
21. REBEL, http://www.rebel13.nl/ , very helpful web page.
22. Glaurung chess engine, nice ideas inside the evaluation function (e.g. king safety).
23. Fruit, http://www.fruitchess.com/, legendary program, nice and simple design.
24. ChuckooChess, https://github.com/sauce-code/cuckoo , one of the first Java chess engines.
25. Chess22k, exciting java chess engine - strong and well written.
26. The source code of the strongest open-source Chess Engine – Stockfish, https://stockfishchess.org/
27. https://sourceforge.net/
28. https://github.com/
29. https://stackoverflow.com/
30. ... and many others!


17 changes: 17 additions & 0 deletions Sources/Resources/doc/engine/txt/release_notes_BagaturEngine.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
Version 3.7 (07 February 2023)
*
* SMP version:
* 1. On https://tcec-chess.com/ S24, there is still NPS sclaing issue, because the achieved value is 5-10M nps and the expected is 30M nps.
* 2. The issue is reproducable on CentOS Stream release 8 and Java OpenJDK 1.8.0.
* 3. The tests show that with up to 64 cores (128 logical porcessors) it still achieves more stable and deeper depth, for a fixed time, with only 1 Transposition Table, although the NPS is between 3 and 6 times smaller.
* 4. A new UCI option is introduced for SMP version - CountTranspositionTables.
* 5. On CentOS Stream release 8 and Java OpenJDK 1.8.0, with 8 Transposition Tables the SMP search achieves similar depth and time, so there is sense to set it not to be 1, only when there is a NPS sclaing issue. In such cases it could be set up to SQRT(THREADS_COUNT) Transposition Tables.
* 6. More details about the tests of the SMP version, could be found here: https://github.com/bagaturchess/Bagatur/tree/master/Sources/Search#readme
* 7. Bug fixing and optimizations inside the bagaturchess.search.impl.rootsearch.parallel.SearchersInfo class.
* 8. SMP version: Code clean up and simplification
*
* Single Core version
* 1. Randomize the non-attacking moves, before moves' ordering and sorting, in order to benefit from the search's undeterminism and minimize error.
*


Version 3.6b (04 September 2022)
* TBs: DTZ or DTM check improved. Still not 100% accurate - alone king condition used. Still direct DTM from native syzygy lib is not used, because of JNI/C types related issues, which need more time.
* TBs: Syzygy native lib changes and JNI integration code adoption - methods time are incorrect. How Value has to be converted to int?
Expand Down
Loading

0 comments on commit ce88b64

Please sign in to comment.