Greetings and new Eubos chess engine

Questions and comments related to CCRL testing study
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Mon Mar 09, 2020 10:19 pmI don't know what the ettiquette is regarding asking for a new version to be tested,
Hi Chris,

There is no particular etiquette, you have done perfectly well by announcing news here. Although, if you do your announcements at CCC as well, you could make even more publicity.
Of course you can't rely on all your versions to be tested, there are so many engines out there. But we appreciate your efforts and do our best ourselves.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Hi Gabor and Sergio,

Thanks as ever for your support! i have found the CCRL rankings really useful for improving my chess engine. I used to test it exclusively on Lichess (which required manually selecting rematches and also problems finding suitably strong engines to test against), but over the last month using this resource and Arena I have been able to focus on code improvements and optimisations whilst knowing that I am always testing the engines on a level playing field. It is proving very addictive!

I found another possible optimisation this morning, given it yields a 5 to 10% search speed improvement (I can't believe i previously missed it!), I thought it best to bump the release version, so there are some new v1.0.6 binaries on github: https://github.com/cjbolt/EubosChess/releases/tag/v106.

I'm now going to take a chess programming holiday (for a few weeks :wink: )
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

I found quite a bad bug in the code (which has been in all the releases). When starting a new ply to search, if the move timing engine caused the search to be cut off at that ply (e.g. depth 7), Eubos would return a previously searched move as the best move, which may not represent the best score at the ply. An annoying defect, as I had scrutinised the search algorithm a great deal, and this defect was actually in the wrapper surrounding it. At least it is fixed now.

The latest version is v1.0.7 and available on github: https://github.com/cjbolt/EubosChess/re ... tag/v1.0.7
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Sat Mar 14, 2020 12:24 pm I found quite a bad bug in the code (which has been in all the releases). When starting a new ply to search, if the move timing engine caused the search to be cut off at that ply (e.g. depth 7), Eubos would return a previously searched move as the best move, which may not represent the best score at the ply. An annoying defect, as I had scrutinised the search algorithm a great deal, and this defect was actually in the wrapper surrounding it. At least it is fixed now.

The latest version is v1.0.7 and available on github: https://github.com/cjbolt/EubosChess/re ... tag/v1.0.7
Chris,

I'm in the middle of 1.06 testing. What do you think the bug fix means in terms of playing strength?

Cheers,
Gabor
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Hi Gabor, I'm very sorry for the inconvenience. I have been testing all day, this is what I have so far:
Opponent Op ELO Points NGames % Points Enxadrista 1199 61 75 81 Gladiator 0.0.7 1331 37 50 74 Nanook 0.17 1389 25.5 51 50
So I think the fix improves strength by about 50 ELO.
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Sat Mar 14, 2020 8:46 pm Hi Gabor, I'm very sorry for the inconvenience. I have been testing all day, this is what I have so far:
Opponent Op ELO Points NGames % Points Enxadrista 1199 61 75 81 Gladiator 0.0.7 1331 37 50 74 Nanook 0.17 1389 25.5 51 50
So I think the fix improves strength by about 50 ELO.
Never mind. I'm glad you've managed to get rid of that bug. Anyway, I am going to stick with 1.0.6 for the moment as it seems a big improvement over 1.0.2 which I tested previously and I would not like to lose the games I've played since yesterday.
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

Chris, is Eubos supposed to work with Java 8 only or Java 14 is OK as well?
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Hi Gabor, I've not actually tested with Java 14. I would have thought that the JVM in Java 14 should support full compatability to Java 8, but I'm not sure. If you are thinking of doing some more testing with Eubos I can certainly try it out locally for you.
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Mon Jun 01, 2020 10:45 am Hi Gabor, I've not actually tested with Java 14. I would have thought that the JVM in Java 14 should support full compatability to Java 8, but I'm not sure. If you are thinking of doing some more testing with Eubos I can certainly try it out locally for you.
I asked this because something went wrong with Eubos recently. I tested it before wihout problems but now I only have Java 14 on my machine and Eubos makes its moves very slowly even when it should move instantly because of the external book.
And it does not matter whether I use the bat file or use java with the -jar... command line parameter.

And yes, I haven't given up with Eubos and I hope you are preparing something for us.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Hi Gabor,

It works for me with Java 14. Details follow:

I uninstalled all my Java 8 JRE and JDKs. I then installed the following link https://adoptopenjdk.net/installation.h ... 64_win-jre

The only step I did after extracting the zip file to C:\Program Files\Java was to add the bin folder to the path environment variable i.e. add the path C:\Program Files\Java\jdk-14.0.1+7-jre\bin.

I then tested the version on the default system path by opening a powershell and typing 'java -version', which generated the expected ouput:

> java -version openjdk version "14.0.1" 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7, mixed mode, sharing)

I didn't rebuild Eubos, change the Jar file in anyway or change the Arena configuration of the engine. I then played a game against Eubos, running with Java 14 in Arena.

All the information online suggests the JVM is completely backwards compatible. Can I suggest you try seeing what you get from the command prompt as to what Java version is running?

Hope that information helps a bit anyway, Chris
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Mon Jun 01, 2020 4:59 pm Hi Gabor,

It works for me with Java 14. Details follow:

I uninstalled all my Java 8 JRE and JDKs. I then installed the following link https://adoptopenjdk.net/installation.h ... 64_win-jre

The only step I did after extracting the zip file to C:\Program Files\Java was to add the bin folder to the path environment variable i.e. add the path C:\Program Files\Java\jdk-14.0.1+7-jre\bin.

I then tested the version on the default system path by opening a powershell and typing 'java -version', which generated the expected ouput:

> java -version openjdk version "14.0.1" 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7, mixed mode, sharing)

I didn't rebuild Eubos, change the Jar file in anyway or change the Arena configuration of the engine. I then played a game against Eubos, running with Java 14 in Arena.

All the information online suggests the JVM is completely backwards compatible. Can I suggest you try seeing what you get from the command prompt as to what Java version is running?

Hope that information helps a bit anyway, Chris
Thanks Chris for your help.

Java 14 works for me for all other engines so I'll have to see what I do wrong.

I don't remember how I installed java 14, I have downloaded 3 different files then chose one of them, I guess it was jdk-14.0.1_windows-x64_bin.exe.
Now I am getting a slightly different output than you:
>java -version java version "14.0.1" 2020-04-14 Java(TM) SE Runtime Environment (build 14.0.1+7) Java Hotspot(TM) 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)
I wonder if this can be the reason.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Disclaimer: I am in no way that clued up on Java, it isn't my day-job. However... it looks to me from that output like you might have not installed the Java Development Kit (JDK), just the Java Runtime Environment (JRE). That should be completely sufficient - the end user shouldn't need a JDK, that is just for compiling the source code and development activities like debugging etc.

If it is still not working for you, then I will try and install only the JRE and see how that goes.
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

Now, this is what I did:

1. Uninstalled java.
2. Ran OpenJDK14U-jdk_x64_windows_hotspot_14.0.1_7.msi. This is practically the same what you did, only it installed java in c:\Program Files\AdoptOpenJDK\ (which I don't like and was not given the choice of choosing a different target). But at least I did not have to set the path variable manually, it did it for me.
3. "java -version" now prints exactly the same messages as yours.

And after this I installed Eubos 1.0.7, by selecting the jar file in Arena. And it still does not work.

Since then I deleted this installation and returned to the previous one.

EDIT: Here is an Arena debug when starting the engine.
2020-06-02 17:04:18,522-->1:quit
2020-06-02 17:04:18,897*1*--------------------Starting engine 1 Eubos 1.0.7 64-bit--------------------
2020-06-02 17:04:18,897*1*Configured Engine 1 Type: UCI
2020-06-02 17:04:18,897*1*Engine 1 dir: C:\Program Files\Java\jdk-14.0.1\bin
2020-06-02 17:04:18,897*1*Engine 1 commandline: "C:\Program Files\Java\jdk-14.0.1\bin\java.exe" -jar E:\Sakk\UCI-engines\Eubos\Eubos1.0.7.jar
2020-06-02 17:04:19,007*1*Child Process Prio Adj: PID 8164 conhost.exe
2020-06-02 17:04:19,007*1*Engine 1 ProcessID: 14700
2020-06-02 17:04:19,007*1*Engine 1 Prio:32 ThreadPrio:0
2020-06-02 17:04:19,038<--1:Exception in thread "main" java.lang.NoClassDefFoundError: com/fluxchess/jcpi/AbstractEngine
2020-06-02 17:04:19,038-->1:uci
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.defineClass1(Native Method)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
2020-06-02 17:04:19,038<--1: at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
2020-06-02 17:04:19,038<--1: at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:514)
2020-06-02 17:04:19,038<--1: at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:422)
2020-06-02 17:04:19,038<--1: at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:416)
2020-06-02 17:04:19,038<--1: at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
2020-06-02 17:04:19,038<--1: at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:415)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.Class.forName0(Native Method)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.Class.forName(Class.java:427)
2020-06-02 17:04:19,038<--1: at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
2020-06-02 17:04:19,038<--1:Caused by: java.lang.ClassNotFoundException: com.fluxchess.jcpi.AbstractEngine
2020-06-02 17:04:19,038<--1: at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
2020-06-02 17:04:19,038<--1: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
2020-06-02 17:04:19,038<--1: ... 13 more
2020-06-02 17:04:27,059-->1:isready
That exception does not look good.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Yes, that's not good. Abstract Engine is a class from the JCPI package that should be included in the Eubos JAR file. I had another person run into this issue independent of you, they raised a bug about it on the GitHub page. But it doesn't seem to affect the majority of users.

There must be something wrong with the classpaths in the Jar file on certain PCs or in certain curcumstances, but exactly what the issue is I don't know!

Do you find that 1.0.6 works ok, still? I'll look at what differences I made between the two versions. I'm wondering if it could be the path you are using to the engine is incorrect Engine 1 dir: in your output below. That is the path of the Java executable. My arena is using the batch file to run a development version of Eubos (actually v1.0.7) and Arena gives me:
2020-06-02 16:41:28.511*1*------------------------Starting engine 1 Eubos Dev------------------------- 2020-06-02 16:41:28.527*1*Configured Engine 1 Type: UCI 2020-06-02 16:41:28.527**Loading book: C:\Program Files (x86)\Arena\Books\Titus2.4.abk 2020-06-02 16:41:28.527*1*Engine 1 dir: C:\Users\Chris\lichess-bot-master\engines 2020-06-02 16:41:28.527*1*Engine 1 commandline: C:\Users\Chris\lichess-bot-master\engines\runEubos.bat

The Engine 1 dir is the folder containing the runEubos.bat and the JAR file in my case.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

I mentioned above that another user had the same exception. I provided a build for him to try and he didn't get any further problems, it worked ok (with Java 8 at least). You can find the link to the build I gave him at the bottom of the thread on the bug: https://github.com/cjbolt/EubosChess/issues/2

It might be worth trying that Jar file. I haven't built any further releases since this, but I may rebuild it and role the version number if you find that that JAR file works for you.
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

That file works for me as well.

BTW, are you not abandoning Eubos, are you?
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

I have added an official Eubos v1.0.8 release which has the dependencies repackaged in the JAR file as discussed. Otherwise it is functionally exactly the same as v1.0.7.

After taking a holiday from Eubos programming, I'm probably more inclined to program an engine in C or C++, as I don't think I can take my Java implementation much further in terms of optimisation, and unfortunately that seems to be the determining factor in strength (though I suppose I could try experimenting with pruning). I'll see what the next few months bring.

Covid 19 has rather altered my parental responsibilities, giving less development opportunities!
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Tue Jun 02, 2020 7:38 pmI don't think I can take my Java implementation much further in terms of optimisation, and unfortunately that seems to be the determining factor in strength (though I suppose I could try experimenting with pruning)
3109 is the rating of the currently best java engine so I am sure you could take Eubos much further.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

I have created a couple of new versions of Eubos recently. The engine is now running in a hosted capacity on the Heroku cloud platform, connected to Lichess. To facilitate this I had to make a number of memory footprint optimisations. I no longer cache the MoveList in the hash table, which means that I had to make more performance improvements to counteract the need to constantly regenerate the MoveList (like a more typical engine, I suppose).

I would be interested if you could include Eubos 1.1.2 in a 2+1 tournament and give it a rating. I have tested extensively with Tarrasch Toy Engine, StAndersson and a couple of others and it holds its own. I therefore reckon ELO is improved by 50 to 60 points.

Thanks a lot,
Chris
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Tue Sep 22, 2020 11:14 am I have created a couple of new versions of Eubos recently. The engine is now running in a hosted capacity on the Heroku cloud platform, connected to Lichess. To facilitate this I had to make a number of memory footprint optimisations. I no longer cache the MoveList in the hash table, which means that I had to make more performance improvements to counteract the need to constantly regenerate the MoveList (like a more typical engine, I suppose).

I would be interested if you could include Eubos 1.1.2 in a 2+1 tournament and give it a rating. I have tested extensively with Tarrasch Toy Engine, StAndersson and a couple of others and it holds its own. I therefore reckon ELO is improved by 50 to 60 points.

Thanks a lot,
Chris
Hi Chris,

I have put it in my testing queue but it will have to wait a little. Sergio might beat me to it I guess.

Gabor
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

c_j_bolt wrote: Tue Sep 22, 2020 11:14 am I would be interested if you could include Eubos 1.1.2 in a 2+1 tournament and give it a rating. I have tested extensively with Tarrasch Toy Engine, StAndersson and a couple of others and it holds its own. I therefore reckon ELO is improved by 50 to 60 points.
Gauntlet started.
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Hi CCRL,

I released a new version of Eubos last week (v1.1.6).

Over the last few months I have worked hard on optimisations to the move generation and reworked the move ordering. There was a defect where, if a move was a losing capture with check, it would be searched before a winning capture. This had a significant detrimental impact on alpha-beta pruning efficiency and hence fixing it yielded a performance improvement.

I have now implemented a version of the Killer heuristic and ranked captures according to MVV LVA.

I have still kept a few of Eubos' idiosyncacies (quiescence implementation including checks and promotions as well as captures), I don't want to make it too generic. I know my alpha-beta implementation is sub-optimal, maybe I will look at that in the future.

I'd be very grateful if one of you could include the latest version in a tournament. I recognise that there hasn't been much improvement in the last couple of versions, but I have done a reasonable amount of testing and it is definetly better than the previous best version (v1.0.8 ). I estimate it at about 1490 ELO, I give my testing to date below, note 300 games against TTE:

Code: Select all

Opponent                Opponent ELO    Eubos Points    Number Games    Win %
Nanook 0.17             1389            64.5            100             64.5
Jchess1.0               1402            46              100             46
Nero61                  1446            68              100             68
Eubos 1.0.8             1447            65              100             65
Piranha 0.5             1498            81              108             75
Pentagon 1.2            1484            112             200             56
StandersonX64           1485            87.5            190             56.5
TarraschToyEngine0906   1489            168.5           300             57
Yawce016                1512            41              100             41
HokusPokus063           1549            49.5            100             49.5
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

Hi Chris,

The work you invested and the expected improvement certainly justifies a new test. I have put Eubos in my testing queue and I expect it to appear in next week's update (with a faint chance of reaching this week's update but don't hold your breath).
c_j_bolt
Posts: 42
Joined: Mon Jan 27, 2020 2:44 pm
Sign-up code: 10159
Location: UK
Contact:

Re: Greetings and new Eubos chess engine

Post by c_j_bolt »

Thanks Gabor, I will check back with interest!
User avatar
Gabor Szots
Posts: 12849
Joined: Sat Dec 09, 2006 6:30 am
Sign-up code: 10159
Location: Szentendre, Hungary

Re: Greetings and new Eubos chess engine

Post by Gabor Szots »

It seems that my Eubos 1.1.6 games will reach tomorrow's deadline.

I noticed something, though: Eubos seems to use 30-40 % of CPU instead of the normal 25 % (4-core CPU). I can't tell the reason, can you?
Post Reply