Do more aggressive pruning for some node types

This patch allows more aggressive futility/see based pruning for PV nodes with low delta and non-pv nodes.

Fixes some white space issues.

Passed STC
https://tests.stockfishchess.org/tests/view/61a5ed33d16c530b5dcc27cc
LLR: 2.95 (-2.94,2.94) <0.00,2.50>
Total: 182088 W: 47121 L: 46584 D: 88383
Ptnml(0-2): 551, 20687, 48037, 21212, 557

Passed LTC
https://tests.stockfishchess.org/tests/view/61a74dfdbd5c4360bcded0ac
LLR: 2.94 (-2.94,2.94) <0.50,3.00>
Total: 87136 W: 22494 L: 22103 D: 42539
Ptnml(0-2): 38, 8918, 25272, 9295, 45

closes https://github.com/official-stockfish/Stockfish/pull/3828
closes https://github.com/official-stockfish/Stockfish/pull/3829

bench 4332259
This commit is contained in:
Michael Chaly
2021-12-02 23:41:23 +03:00
committed by Joost VandeVondele
parent c9977aa0a8
commit e4b7403f12
3 changed files with 7 additions and 5 deletions

View File

@@ -515,7 +515,7 @@ int best_node(size_t idx) {
if (!fun1) if (!fun1)
return -1; return -1;
// First call to GetLogicalProcessorInformationEx() to get returnLength. // First call to GetLogicalProcessorInformationEx() to get returnLength.
// We expect the call to fail due to null buffer. // We expect the call to fail due to null buffer.
if (fun1(RelationAll, nullptr, &returnLength)) if (fun1(RelationAll, nullptr, &returnLength))
return -1; return -1;
@@ -589,13 +589,13 @@ void bindThisThread(size_t idx) {
if (!fun2 || !fun3) if (!fun2 || !fun3)
return; return;
if (!fun4 || !fun5) if (!fun4 || !fun5)
{ {
GROUP_AFFINITY affinity; GROUP_AFFINITY affinity;
if (fun2(node, &affinity)) // GetNumaNodeProcessorMaskEx if (fun2(node, &affinity)) // GetNumaNodeProcessorMaskEx
fun3(GetCurrentThread(), &affinity, nullptr); // SetThreadGroupAffinity fun3(GetCurrentThread(), &affinity, nullptr); // SetThreadGroupAffinity
} }
else else
{ {
// If a numa node has more than one processor group, we assume they are // If a numa node has more than one processor group, we assume they are
// sized equal and we spread threads evenly across the groups. // sized equal and we spread threads evenly across the groups.

View File

@@ -141,7 +141,7 @@ private:
/// sigmoid(t, x0, y0, C, P, Q) implements a sigmoid-like function using only integers, /// sigmoid(t, x0, y0, C, P, Q) implements a sigmoid-like function using only integers,
/// with the following properties: /// with the following properties:
/// ///
/// - sigmoid is centered in (x0, y0) /// - sigmoid is centered in (x0, y0)
/// - sigmoid has amplitude [-P/Q , P/Q] instead of [-1 , +1] /// - sigmoid has amplitude [-P/Q , P/Q] instead of [-1 , +1]
/// - limit is (y0 - P/Q) when t tends to -infinity /// - limit is (y0 - P/Q) when t tends to -infinity

View File

@@ -1065,6 +1065,8 @@ moves_loop: // When in check, search starts here
history += thisThread->mainHistory[us][from_to(move)]; history += thisThread->mainHistory[us][from_to(move)];
lmrDepth = std::max(0, lmrDepth - (beta - alpha < thisThread->rootDelta / 4));
// Futility pruning: parent node (~5 Elo) // Futility pruning: parent node (~5 Elo)
if ( !ss->inCheck if ( !ss->inCheck
&& lmrDepth < 8 && lmrDepth < 8