Rebel 16.2: Impressive!

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
mclane
Posts: 18901
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: Rebel 16.2: Impressive!

Post by mclane »

The idea behind this limit was, that people do not play 16 cores each with permanent brain on a 16 core machine.
Or 4 core each with permanent brain on an 4 core machine.

The engine should get the number of cores that exist, not hyperthread virtual cores.
On my best system this is 8 cores each with PB because it is 16 core machine.

Both rebel EAS and cstal2 Nnue are strong.
Very strong. Depending on the participants list they are at least under top 10 engines.
What seems like a fairy tale today may be reality tomorrow.
Here we have a fairy tale of the day after tomorrow....
Jouni
Posts: 3621
Joined: Wed Mar 08, 2006 8:15 pm
Full name: Jouni Uski

Re: Rebel 16.2: Impressive!

Post by Jouni »

In Fritz GUI and 6 cores CPU CSTal uses only 1 core even if display says 6 cores! This is idiotic. Let the user decide how many cores are used not engine :wink: . CSTal is strong engine and fix is needed immediately.
Jouni
chrisw
Posts: 4630
Joined: Tue Apr 03, 2012 4:28 pm
Location: Midi-Pyrénées
Full name: Christopher Whittington

Re: Rebel 16.2: Impressive!

Post by chrisw »

these people who keep claiming one core have not answered what happens when they type "mem" into the UCI command line. Maybe they prefer whingeing to solutions.

It's all in the documentation:

Hash, Threads, Ponder
setoption name Hash value N to set Hash table size
setoption name Threads value N to set Threads (limited to max(1, cores/2), some UI programs and Windows can't cope with high core count)

For Power Users
Windows and some UI's can become unstable if threads are set too high, use at your own risk
setoption name RelaxThreadLimit value N (set yourself as a power user)

Diagnostics
"mem" generates memory diagnostics
"cpu" gives CPU performance information
chrisw
Posts: 4630
Joined: Tue Apr 03, 2012 4:28 pm
Location: Midi-Pyrénées
Full name: Christopher Whittington

Re: Rebel 16.2: Impressive!

Post by chrisw »

Jouni wrote: Fri Sep 01, 2023 2:10 pm In Fritz GUI and 6 cores CPU CSTal uses only 1 core even if display says 6 cores! This is idiotic. Let the user decide how many cores are used not engine :wink: . CSTal is strong engine and fix is needed immediately.
Great idea. Then some users will overset the thread count and report the engine crashes all over all the newsgroups. I prefer whingeing about thread count to whingeing about crashes.
carldaman
Posts: 2285
Joined: Sat Jun 02, 2012 2:13 am

Re: Rebel 16.2: Impressive!

Post by carldaman »

Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
peter
Posts: 3400
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Rebel 16.2: Impressive!

Post by peter »

carldaman wrote: Sat Sep 02, 2023 4:43 am Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
One more thing you could give a try also, would be to fill the command
setoption name RelaxThreadLimit value true
not only in input field "Init string" ("Details"- "Special") as told, but also in the one listed under menu "General" named "Command Line Parameters".
Had tried that exclusively at first without success, then changed to Init string, which worked for Arena 3.5.1, it won't hurt having it set at both options.
In Shredder 13 GUI it's enough to give a line
RelaxThreadLimit=true
in .eng- file.
And of course you have to set the number of threads in corresponding UCI- parameter yet still also. If your CPU has 4 physical cores, 4 threads is the maximum the engine uses anyhow, regardless setting hyperthreading on or off, and 4 only if RelaxThreadLimit is true.
Give it a try in console first, there you see engine's reaction at once without interference of GUI. If there isn't any output as answer to your commands, that means, that the engine doesn't react at all, if it does acknowledge them, there will be a corresponding output as feedback.
Peter.
carldaman
Posts: 2285
Joined: Sat Jun 02, 2012 2:13 am

Re: Rebel 16.2: Impressive!

Post by carldaman »

peter wrote: Sat Sep 02, 2023 11:32 am
carldaman wrote: Sat Sep 02, 2023 4:43 am Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
One more thing you could give a try also, would be to fill the command
setoption name RelaxThreadLimit value true
not only in input field "Init string" ("Details"- "Special") as told, but also in the one listed under menu "General" named "Command Line Parameters".
Had tried that exclusively at first without success, then changed to Init string, which worked for Arena 3.5.1, it won't hurt having it set at both options.
In Shredder 13 GUI it's enough to give a line
RelaxThreadLimit=true
in .eng- file.
And of course you have to set the number of threads in corresponding UCI- parameter yet still also. If your CPU has 4 physical cores, 4 threads is the maximum the engine uses anyhow, regardless setting hyperthreading on or off, and 4 only if RelaxThreadLimit is true.
Give it a try in console first, there you see engine's reaction at once without interference of GUI. If there isn't any output as answer to your commands, that means, that the engine doesn't react at all, if it does acknowledge them, there will be a corresponding output as feedback.

Thanks again, Peter, I did all that, but it's a no go for me. I guess I should just be happy that I've got the engine and it's working with 2 cores...
In console it won't accept any commands except uci.

I also tried adding the line RelaxThreadLimit=true to the engine's (chessbase) .uci file, as well as ArenaENG.ctg, but it made no difference.
The .exe's I downloaded seem to be hardwired to use no more than 2 cores.
User avatar
Eelco de Groot
Posts: 4663
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Rebel 16.2: Impressive!

Post by Eelco de Groot »

carldaman wrote: Sun Sep 03, 2023 2:29 am
peter wrote: Sat Sep 02, 2023 11:32 am
carldaman wrote: Sat Sep 02, 2023 4:43 am Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
One more thing you could give a try also, would be to fill the command
setoption name RelaxThreadLimit value true
not only in input field "Init string" ("Details"- "Special") as told, but also in the one listed under menu "General" named "Command Line Parameters".
Had tried that exclusively at first without success, then changed to Init string, which worked for Arena 3.5.1, it won't hurt having it set at both options.
In Shredder 13 GUI it's enough to give a line
RelaxThreadLimit=true
in .eng- file.
And of course you have to set the number of threads in corresponding UCI- parameter yet still also. If your CPU has 4 physical cores, 4 threads is the maximum the engine uses anyhow, regardless setting hyperthreading on or off, and 4 only if RelaxThreadLimit is true.
Give it a try in console first, there you see engine's reaction at once without interference of GUI. If there isn't any output as answer to your commands, that means, that the engine doesn't react at all, if it does acknowledge them, there will be a corresponding output as feedback.

Thanks again, Peter, I did all that, but it's a no go for me. I guess I should just be happy that I've got the engine and it's working with 2 cores...
In console it won't accept any commands except uci.
The 'mem' command works here, when I doubleclick on my REBEL-EAS.exe at least:

info string Chess-System-Tal-2.00
info string Release version
info string (C) Chris Whittington 2003-2023
info string NNUE development Ed Schroeder 2023
info string ==================================

uci
id name Chess-System-Tal-2.00
id author id author Chris Whittington (C) 2003-2023
option name Hash type spin default 256 min 16 max 131072
option name Threads type spin default 1 min 1 max 64
option name Evalcorrect type spin default 202 min 1 max 256
option name Ponder type check default false
option name Rep2_Draw_Trolling type check default true
option name TC_Move_Overhead type spin default 7 min 1 max 25
option name TC_Aggression type spin default 100 min 50 max 200
option name Bookfile type string default book.bin
option name Bookdepth type spin default 0 min 0 max 200
option name Bookrandom type spin default 0 min 0 max 100
uciok
mem
info string Hash=256 Mb
info string Globals=199 Kb
info string Threads=1
info string Cores=2

(I have a four core CPU, no hyperthreading so should Rebel not detect four? Or is it using two cores.)
I also tried adding the line RelaxThreadLimit=true to the engine's (chessbase) .uci file, as well as ArenaENG.ctg, but it made no difference.
The .exe's I downloaded seem to be hardwired to use no more than 2 cores.
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
mclane
Posts: 18901
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: Rebel 16.2: Impressive!

Post by mclane »

carldaman wrote: Sun Sep 03, 2023 2:29 am
peter wrote: Sat Sep 02, 2023 11:32 am
carldaman wrote: Sat Sep 02, 2023 4:43 am Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
One more thing you could give a try also, would be to fill the command
setoption name RelaxThreadLimit value true
not only in input field "Init string" ("Details"- "Special") as told, but also in the one listed under menu "General" named "Command Line Parameters".
Had tried that exclusively at first without success, then changed to Init string, which worked for Arena 3.5.1, it won't hurt having it set at both options.
In Shredder 13 GUI it's enough to give a line
RelaxThreadLimit=true
in .eng- file.
And of course you have to set the number of threads in corresponding UCI- parameter yet still also. If your CPU has 4 physical cores, 4 threads is the maximum the engine uses anyhow, regardless setting hyperthreading on or off, and 4 only if RelaxThreadLimit is true.
Give it a try in console first, there you see engine's reaction at once without interference of GUI. If there isn't any output as answer to your commands, that means, that the engine doesn't react at all, if it does acknowledge them, there will be a corresponding output as feedback.

Thanks again, Peter, I did all that, but it's a no go for me. I guess I should just be happy that I've got the engine and it's working with 2 cores...
In console it won't accept any commands except uci.

I also tried adding the line RelaxThreadLimit=true to the engine's (chessbase) .uci file, as well as ArenaENG.ctg, but it made no difference.
The .exe's I downloaded seem to be hardwired to use no more than 2 cores.
This is not true. The relax thread thing as parameter in arena changes the core usage.
What seems like a fairy tale today may be reality tomorrow.
Here we have a fairy tale of the day after tomorrow....
chrisw
Posts: 4630
Joined: Tue Apr 03, 2012 4:28 pm
Location: Midi-Pyrénées
Full name: Christopher Whittington

Re: Rebel 16.2: Impressive!

Post by chrisw »

Eelco de Groot wrote: Sun Sep 03, 2023 11:46 am
carldaman wrote: Sun Sep 03, 2023 2:29 am
peter wrote: Sat Sep 02, 2023 11:32 am
carldaman wrote: Sat Sep 02, 2023 4:43 am Thanks, Peter, it sure sounds like good advice and I tried following it, but it's still using only 2 cores in Arena. :oops:
One more thing you could give a try also, would be to fill the command
setoption name RelaxThreadLimit value true
not only in input field "Init string" ("Details"- "Special") as told, but also in the one listed under menu "General" named "Command Line Parameters".
Had tried that exclusively at first without success, then changed to Init string, which worked for Arena 3.5.1, it won't hurt having it set at both options.
In Shredder 13 GUI it's enough to give a line
RelaxThreadLimit=true
in .eng- file.
And of course you have to set the number of threads in corresponding UCI- parameter yet still also. If your CPU has 4 physical cores, 4 threads is the maximum the engine uses anyhow, regardless setting hyperthreading on or off, and 4 only if RelaxThreadLimit is true.
Give it a try in console first, there you see engine's reaction at once without interference of GUI. If there isn't any output as answer to your commands, that means, that the engine doesn't react at all, if it does acknowledge them, there will be a corresponding output as feedback.

Thanks again, Peter, I did all that, but it's a no go for me. I guess I should just be happy that I've got the engine and it's working with 2 cores...
In console it won't accept any commands except uci.
The 'mem' command works here, when I doubleclick on my REBEL-EAS.exe at least:

info string Chess-System-Tal-2.00
info string Release version
info string (C) Chris Whittington 2003-2023
info string NNUE development Ed Schroeder 2023
info string ==================================

uci
id name Chess-System-Tal-2.00
id author id author Chris Whittington (C) 2003-2023
option name Hash type spin default 256 min 16 max 131072
option name Threads type spin default 1 min 1 max 64
option name Evalcorrect type spin default 202 min 1 max 256
option name Ponder type check default false
option name Rep2_Draw_Trolling type check default true
option name TC_Move_Overhead type spin default 7 min 1 max 25
option name TC_Aggression type spin default 100 min 50 max 200
option name Bookfile type string default book.bin
option name Bookdepth type spin default 0 min 0 max 200
option name Bookrandom type spin default 0 min 0 max 100
uciok
mem
info string Hash=256 Mb
info string Globals=199 Kb
info string Threads=1
info string Cores=2

(I have a four core CPU, no hyperthreading so should Rebel not detect four? Or is it using two cores.)
I also tried adding the line RelaxThreadLimit=true to the engine's (chessbase) .uci file, as well as ArenaENG.ctg, but it made no difference.
The .exe's I downloaded seem to be hardwired to use no more than 2 cores.
There are various possibilities depending on version. If you have a version compiled by Ed (eg from the Rebel site with Rebel in name somewhere), I don't have his source code, so I can't speak for that entirely accurately.

This is what CSTal downloaded from my Github page does:

int n_cores = std::thread::hardware_concurrency() / 2;
// This code doesn't always work on all systems, it might return 0, in which I set n_cores=1 and that's it. Only one core. Get another PC or something.
// hardware concurrency returns (at least on all my AMDs and Intels) the count of logical processors.
// cores is half logical processors.

// let's suppose you have 6 cores
// if you typed mem into uci command line it will:
// if you are a power_user, tell you n_cores = 6
// if you're not a power user, tell you n_cores = 3

// n_cores is your thread limit.

RelaxThreadLimit is the UserOption way to become a power user.

So, if you have 1 core displayed, but think you have more cores, well, you're stuffed, one core is all you get to use. Hardware issue.
If you have half the number of cores displayed, you have the option to become a power user.

By the time you worked all this out, if you didn't know already, you'll understand the issue of high concurrency, threads and crashing with system overload. Think of it as an education.