Pondering in CCRL

Discussion of computer chess matches and engine tournaments.

Moderator: Ras

niel5946
Posts: 174
Joined: Thu Nov 26, 2020 10:06 am
Full name: Niels Abildskov

Pondering in CCRL

Post by niel5946 »

Hi.

For some time now, I have been thinking about pondering, and why it isn't allowed in CCRL, and I can't really seem to find a reason for the latter. I understand that engines that do not use pondering will be at a disadvantage, but so is engines that don't allow for adjustments to their hash-table sizes, and this is allowed to be configured by the tester.

Wouldn't pondering 1) Allow for more "realistic" games? A big part of chess games is (for humans at least) spent during the opponent's turn, while thinking about possible responses to their move. 2) Let engines save time on _obvious_ moves, like recaptures when exchanging pieces? This would in turn (IMO) lead to better gameplay, since the engines would be able to use more time on the interesting parts of the games, like for example key moments that _nearly_ decides the outcome singlehandedly.

I am sure there is a reason why pondering is not allowed, but as I said, I can't seem to think of any. Can anybody elaborate on this? And if my two statements are erroneous, explain?

Thanks in advance :D
Author of Loki, a C++ work in progress.
Code | Releases | Progress Log |
User avatar
Ras
Posts: 2758
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Pondering in CCRL

Post by Ras »

niel5946 wrote: Tue Mar 23, 2021 7:01 pmFor some time now, I have been thinking about pondering, and why it isn't allowed in CCRL, and I can't really seem to find a reason for the latter.
It's because an engine that ponders takes computing power from the engine whose turn it is, given that they run on the same machine., which also blurs the time controls. For forced recaptures, you don't need pondering, and "easy move detection" is something that any engine programmer can implement.
Rasmus Althoff
https://www.ct800.net
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Pondering in CCRL

Post by mvanthoor »

niel5946 wrote: Tue Mar 23, 2021 7:01 pm I am sure there is a reason why pondering is not allowed, but as I said, I can't seem to think of any. Can anybody elaborate on this? And if my two statements are erroneous, explain?
Even if for nothing else, pondering lowers the number of engines that can be tested simultaneously, in CuteChess for example.

If you have an 8 core CPU, you can run 8 games at once, between 16 different engines, because in each game, the engines share the same core: first one engine, then the other. If you enable pondering, one engine must have one core at all times, so you can only load 8 engines, and thus run only 4 games at the same time. This becomes even worse if you want to enable pondering for multi-threaded engines. On an 8 core system, you can run two 4-core engines at the same time; so two games, with four engines. If you enable pondering, you can only run two engines, and one game at a time.

With the hash table it's different: there are many engines that either have no hash table, or they have a limit that can be set. CCRL uses either 128 or 256 MB per core, and if 256 isn't possible they use the maximum the engine allows, which can be no hash table at all if it doesn't have any.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL