Answers.Body: <p>A simpler way to think about it might be to consider the engine's "strength" as a percentage of its maximum strength. Without pondering, each engine plays at 100% strength. With pondering, each engine plays at 100% strength during its turn <strong>and</strong> 25% strength during the other player's turn (assuming 25% accuracy in pondering guesses), but each turn is half as long (because only half the CPU time is available). So with pondering, the overall engine strength is only 62.5% of its maximum.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-25T19:30:26.347Z
Answers.Text: How about this scenario - my CPU is 5960X (8 physical cores) if i enable ponder 4 will be asigned to each engine. From my engine testing the predicted move ratio is much higher than 25% it is actually in the 50-60% range, most often 58-63% so lets make it 60%. Can you calculate the difference in performance between 4-core ponder and 100% CPU resource.
Answers.UserDisplayName: Nordlandia
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-26T20:01:04.573Z
Answers.Text: Assuming same engine, fixed time per turn, each engine able to use all cores at 100% if available, 0.5*100% + 0.5*60% = 80%
Answers.UserDisplayName: intx13
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-26T20:03:29.010Z
Answers.Text: In general you can estimate the new strength as 50% + 1/2 * (predicted move accuracy). But this becomes less relevant the more you move away from the theoretical scenario I described in my other answer. If you were running two different engines with no per-move time restriction and those engines might not use all cores to 100% during normal operation, this estimate is meaningless.
Answers.UserDisplayName: intx13
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-27T14:50:03.137Z
Answers.Text: If the overall playing strength is 80% with 60% ponder accuracy, would't the increased time as result of pondering outweights the -20% penalty?
Answers.UserDisplayName: Nordlandia
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-28T20:48:34.893Z
Answers.Text: If the two engines share CPU resources, then you never really get increased time. Half your time is spent handicapped to half the CPU, and the other half is spent handicapped to half the CPU *and* the penalty for having to guess at the opponent's move. You'll never do as well as having the *entire* CPU (and no guessing penalty) for half the length of time.
Answers.UserDisplayName: intx13
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-28T20:51:07.107Z
Answers.Text: If you could guess opponent's moves with 100% accuracy then pondering would be the same as just splitting CPU time. But anything less than 100% you are performing worse.
Answers.UserDisplayName: intx13
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-17T21:25:58.210Z
Answers.LastActivityDate: 2015-06-17T21:25:58.210Z
Answers.UserDisplayName: intx13
Answers.Body: <p>Consider a game in which each move must be made within 8 ns of real time. Two identical engines will play, sharing a single core. With pondering disabled, engine A gets 8 ns of CPU time and makes a move, engine B gets 8 ns of CPU time and makes a move, etc. Each move is the result of 8 ns of computation.</p>
  
  <p>With pondering enabled, on the very first move engine A has only had access to the CPU for 4 ns before 8 ns of real time expires. During this time, engine B has had 4 ns of pondering. When engine A makes its move, engine B realizes that most of its pondering was based on an incorrect guess of the move that engine A would make. Suppose that only 25% of engine B's pondering was applicable. Of the 4 ns that engine B spent pondering, only 1 ns was actually useful.</p>
  
  <p>Now it's engine B's turn. Like engine A, engine B only gets access to the CPU for 4 ns before 8 ns of real time expires. Counting the 1 ns of useful pondering, engine B has applied 5 ns of CPU time to its move. During this time engine A has had 4 ns of pondering, but again, only 25% (1 ns) is useful. On engine A's next turn it will also have applied 5 ns of CPU time to its move. With pondering, each move is the result of 5 ns of computation, except for the very first move, which is the result of only 4 ns of computation. You will get a better game (both engines performing more calculations per move) if you disable pondering.</p>
  
  <p>If the engines are <em>different</em> the results will depend on engine implementation. In the extreme case, imagine that engine A can compute the absolutely best move with exactly 8 ns of computation, but after 4 ns it has only a wild guess. Engine B's performance scales much smoother with the amount of time it has to think. In this silly example, with pondering disabled engine A will win every game, but with pondering enabled engine B will win every game. I suspect that in real life, between two real engines, pondering will decrease the quality of the game fairly evenly, without giving either engine an advantage.</p>
  
  <p>If the per-move time restriction is replaced with a total time restriction I <em>think</em> the results would be similar, except that the way in which engines decide how much time to commit to a move would have a greater effect. That is, I think that pondering would amplify the importance of deciding whether a move requires additional thinking time.</p>
  
  <p>Taking all that together: if you want a battle between engines performing at their peak but you only have one core, disable pondering.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-06-17T21:15:49.827Z
Answers.LastActivityDate: 2015-06-17T21:15:49.827Z
Answers.UserDisplayName: intx13
Body: <p>Is permanent brain any beneficial if they share same core?</p>
  
  <p>"In chess games between two computers, pondering makes sense only if the competing chess engines use separate processors or cores. If they share the same core, the pondering program steals half of the time from the program thinking in the normal way and uses the stolen time less effectively. "</p>
  
  <p>Pondering is less effective than normal thinking. For example, if the program guesses 25% of the opponent's moves correctly, the use of pondering is on average equivalent to increasing the normal calculating time by a factor of 1.25.</p>
  
  <p>In chess games between two computers, pondering makes sense only if the competing chess engines use separate processors or cores. If they share the same core, the pondering program steals half of the time from the program thinking in the normal way and uses the stolen time less effectively. For this reason, chess GUIs have an option to turn the permanent brain off.</p>
  
  <p>Can someone explain the last couple of sentenced for me.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2015-05-24T02:23:41.783Z
Comments.Text: In chess programming, there is something known as hashing. pondering helps it.
Comments.UserDisplayName: SmallChess
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2015-05-24T17:08:04.833Z
Comments.Text: My question is more like if it is any good idea to reduce the engine power to 50% each so it can in-directly gauge precalculated moves and gain more time as result.
Comments.UserDisplayName: Nordlandia
Tags: <engines>
Title: Permanent brain
ThreadText: # Permanent brain
  
  (Asked by: username_0 on 2015-05-23)
  
  Is permanent brain any beneficial if they share same core?
  
  "In chess games between two computers, pondering makes sense only if the competing chess engines use separate processors or cores. If they share the same core, the pondering program steals half of the time from the program thinking in the normal way and uses the stolen time less effectively. "
  
  Pondering is less effective than normal thinking. For example, if the program guesses 25% of the opponent's moves correctly, the use of pondering is on average equivalent to increasing the normal calculating time by a factor of 1.25.
  
  In chess games between two computers, pondering makes sense only if the competing chess engines use separate processors or cores. If they share the same core, the pondering program steals half of the time from the program thinking in the normal way and uses the stolen time less effectively. For this reason, chess GUIs have an option to turn the permanent brain off.
  
  Can someone explain the last couple of sentenced for me.
  
  **Tags:** engines
  
  > **Comments:**
  > **username_1**: In chess programming, there is something known as hashing. pondering helps it.  
  > **username_0**: My question is more like if it is any good idea to reduce the engine power to 50% each so it can in-directly gauge precalculated moves and gain more time as result.  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2015-06-17. Score: 2
  
  A simpler way to think about it might be to consider the engine's "strength" as a percentage of its maximum strength. Without pondering, each engine plays at 100% strength. With pondering, each engine plays at 100% strength during its turn **and** 25% strength during the other player's turn (assuming 25% accuracy in pondering guesses), but each turn is half as long (because only half the CPU time is available). So with pondering, the overall engine strength is only 62.5% of its maximum.
  
  > **Comments:**
  > **username_0**: How about this scenario - my CPU is 5960X (8 physical cores) if i enable ponder 4 will be asigned to each engine. From my engine testing the predicted move ratio is much higher than 25% it is actually in the 50-60% range, most often 58-63% so lets make it 60%. Can you calculate the difference in performance between 4-core ponder and 100% CPU resource.  
  > **username_2**: Assuming same engine, fixed time per turn, each engine able to use all cores at 100% if available, 0.5*100% + 0.5*60% = 80%  
  > **username_2**: In general you can estimate the new strength as 50% + 1/2 * (predicted move accuracy). But this becomes less relevant the more you move away from the theoretical scenario I described in my other answer. If you were running two different engines with no per-move time restriction and those engines might not use all cores to 100% during normal operation, this estimate is meaningless.  
  > **username_0**: If the overall playing strength is 80% with 60% ponder accuracy, would't the increased time as result of pondering outweights the -20% penalty?  
  > **username_2**: If the two engines share CPU resources, then you never really get increased time. Half your time is spent handicapped to half the CPU, and the other half is spent handicapped to half the CPU *and* the penalty for having to guess at the opponent's move. You'll never do as well as having the *entire* CPU (and no guessing penalty) for half the length of time.  
  > **username_2**: If you could guess opponent's moves with 100% accuracy then pondering would be the same as just splitting CPU time. But anything less than 100% you are performing worse.  
  
  ---
  
  ### Answer by username_2 on 2015-06-17. Score: 1
  
  Consider a game in which each move must be made within 8 ns of real time. Two identical engines will play, sharing a single core. With pondering disabled, engine A gets 8 ns of CPU time and makes a move, engine B gets 8 ns of CPU time and makes a move, etc. Each move is the result of 8 ns of computation.
  
  With pondering enabled, on the very first move engine A has only had access to the CPU for 4 ns before 8 ns of real time expires. During this time, engine B has had 4 ns of pondering. When engine A makes its move, engine B realizes that most of its pondering was based on an incorrect guess of the move that engine A would make. Suppose that only 25% of engine B's pondering was applicable. Of the 4 ns that engine B spent pondering, only 1 ns was actually useful.
  
  Now it's engine B's turn. Like engine A, engine B only gets access to the CPU for 4 ns before 8 ns of real time expires. Counting the 1 ns of useful pondering, engine B has applied 5 ns of CPU time to its move. During this time engine A has had 4 ns of pondering, but again, only 25% (1 ns) is useful. On engine A's next turn it will also have applied 5 ns of CPU time to its move. With pondering, each move is the result of 5 ns of computation, except for the very first move, which is the result of only 4 ns of computation. You will get a better game (both engines performing more calculations per move) if you disable pondering.
  
  If the engines are *different* the results will depend on engine implementation. In the extreme case, imagine that engine A can compute the absolutely best move with exactly 8 ns of computation, but after 4 ns it has only a wild guess. Engine B's performance scales much smoother with the amount of time it has to think. In this silly example, with pondering disabled engine A will win every game, but with pondering enabled engine B will win every game. I suspect that in real life, between two real engines, pondering will decrease the quality of the game fairly evenly, without giving either engine an advantage.
  
  If the per-move time restriction is replaced with a total time restriction I *think* the results would be similar, except that the way in which engines decide how much time to commit to a move would have a greater effect. That is, I think that pondering would amplify the importance of deciding whether a move requires additional thinking time.
  
  Taking all that together: if you want a battle between engines performing at their peak but you only have one core, disable pondering.
  
  
  ---
  
  