ChessGUI 0.155 workaround for a Hiarcs bug
Strange behaviour of Hiarcs MP engines under ChessGUI has cost me not less than 15 unpaid hours of bughunting.
Hiarcs MP engines under ChessGUI were simply ignoring the number of cores/threads defined in engine parameters. I have traced the problem to the fact Hiarcs MP engines react wrongly to UCI_LimitStrength.
According to protocol, if UCI_LimitStrength is true, engine should
limit strength to UCI_Elo. If UCI_LimitStrength is false, engine should just
ignore UCI_Elo. No more, no less !!!
Hiarcs MP engines overreact to UCI_LimitStrength=false, by using all cores/threads and possibly book, if UCI_LimitStrength=false is sent to engine _after_ cores/threads (and book options) are defined.
The workaround is to change the order in which Hiarcs sent its parameters to GUI and let UCI_LimitStrength _precede_ cores/threads (and book options) in reply to engine.
In ChessGUI 0.155, the workaround sends all "UCI_..." parameters to engines first, before all other parameters. I now see that this may cause problems for some engines, so there shall be a special option "has UCI_LimitStrength bug" in next ChessGUI, so that the workaround affects only engines that need it.
Matthias.
ChessGUI workaround for a Hiarcs bug
Moderator: Ras
-
Matthias Gemuh
- Posts: 3245
- Joined: Thu Mar 09, 2006 9:10 am
ChessGUI workaround for a Hiarcs bug
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
http://www.chess.hylogic.de
-
Spock
Re: ChessGUI workaround for a Hiarcs bug
Thanks Matthias. The problems with Hiarcs were certainly strange, I'm glad you got to the bottom of it. No other UCI engine I've tried had the same issue. So basically, as it stood, running on a quad, you sent the threads parameter to the engine, let's say 2 threads, then sending UCI_LimitStrength=false after that re-set the threads back to the maximum of 4 ? Certainly not right. Maybe Mark will fix that bug in the next release of Hiarcs now he is aware if it.
-
Matthias Gemuh
- Posts: 3245
- Joined: Thu Mar 09, 2006 9:10 am
Re: ChessGUI workaround for a Hiarcs bug
Spock wrote: So basically, as it stood, running on a quad, you sent the threads parameter to the engine, let's say 2 threads, then sending UCI_LimitStrength=false after that re-set the threads back to the maximum of 4 ?
That's it.
According to protocol, UCI_LimitStrength should interact only with UCI_Elo.
Cores/Threads, Book options, etc. should remain as defined by user or GUI.
Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
http://www.chess.hylogic.de