mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-25 11:36:51 +08:00
Implemented the logic to update Eval List and Dirty Pieces.
This commit is contained in:
69
src/uci.cpp
69
src/uci.cpp
@@ -177,6 +177,73 @@ namespace {
|
||||
<< "\nNodes/second : " << 1000 * nodes / elapsed << endl;
|
||||
}
|
||||
|
||||
// check sum<75><6D><EFBFBD>v<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۑ<EFBFBD><DB91><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>Ă<EFBFBD><C482>ƂŎ<C682><C58E><EFBFBD><EFBFBD>ȍ~<7E>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>s<EFBFBD>Ȃ<EFBFBD><C882>B
|
||||
uint64_t eval_sum;
|
||||
|
||||
// is_ready_cmd()<29><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD><EFBFBD><EFBFBD>悤<EFBFBD>ɂ<EFBFBD><C982>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B(bench<63>R<EFBFBD>}<7D><><EFBFBD>h<EFBFBD>Ȃǂ<C882><C782><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
// <20>ǖʂ͏<CA82><CD8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>̂Œ<CC82><C592>ӁB
|
||||
void is_ready(Position& pos, istringstream& is, StateListPtr& states)
|
||||
{
|
||||
// "isready"<22><><EFBFBD><EFBFBD><F382AF8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA"readyok"<22><><EFBFBD>Ԃ<EFBFBD><D482>܂<EFBFBD>5<EFBFBD>b<EFBFBD><62><EFBFBD>Ƃɉ<C682><C989>s<EFBFBD>𑗂<EFBFBD><F0919782>悤<EFBFBD>ɏC<C98F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B(keep alive<76>I<EFBFBD>ȏ<EFBFBD><C88F><EFBFBD>)
|
||||
// USI2.0<EFBFBD>̎d<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
// -"isready"<22>̂<EFBFBD><CC82>Ƃ<EFBFBD>time out<75><74><EFBFBD>Ԃ́A30<33>b<EFBFBD><62><EFBFBD>x<EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F092B482>āA<C481>]<5D><><EFBFBD><EFBFBD><D690>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ahash<73>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD>̊m<CC8A>ۂ<EFBFBD><DB82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꍇ<EFBFBD>A
|
||||
// <20>v<EFBFBD>l<EFBFBD>G<EFBFBD><47><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>ɉ<EFBFBD><C989>炩<EFBFBD>̃<EFBFBD><CC83>b<EFBFBD>Z<EFBFBD>[<5B>W(<28><><EFBFBD>s<EFBFBD><73>)<29>𑗂<EFBFBD><F0919782>ׂ<EFBFBD><D782>ł<EFBFBD><C582><EFBFBD><EFBFBD>B
|
||||
// -ShogiGUI<55>ł͂<C582><CD82>łɂ<C582><C982><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482><EFBFBD><EFBFBD>̂ŁAMyShogi<67><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɒǐ<C992><C790><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
// -<2D>܂<EFBFBD><DC82>A<EFBFBD><41><EFBFBD>˂<EFBFBD><CB82>牤<EFBFBD>̃G<CC83><47><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>́A"isready"<22><><EFBFBD><EFBFBD><F382AF8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA"readyok"<22><><EFBFBD>Ԃ<EFBFBD><D482>܂<EFBFBD>5<EFBFBD>b<EFBFBD><62><EFBFBD>Ƃɉ<C682><C989>s<EFBFBD>𑗂<EFBFBD><F0919782>悤<EFBFBD>ɏC<C98F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
auto ended = false;
|
||||
auto th = std::thread([&ended] {
|
||||
int count = 0;
|
||||
while (!ended)
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
if (++count >= 50 /* 5<>b */)
|
||||
{
|
||||
count = 0;
|
||||
sync_cout << sync_endl; // <20><><EFBFBD>s<EFBFBD>𑗐M<F0919790><4D><EFBFBD><EFBFBD><EFBFBD>B
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// <20>]<5D><><EFBFBD><EFBFBD><D690>̓ǂݍ<C782><DD8D>݂Ȃǎ<C882><C78E>Ԃ̂<D482><CC82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>낤<EFBFBD><EB82A4><EFBFBD><EFBFBD><EFBFBD>͂<EFBFBD><CD82>̃^<5E>C<EFBFBD>~<7E><><EFBFBD>O<EFBFBD>ōs<C58D>Ȃ<EFBFBD><C882>B
|
||||
// <20>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ɏ<EFBFBD><C98E>Ԃ̂<D482><CC82><EFBFBD><EFBFBD>鏈<EFBFBD><E98F88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>Ə<EFBFBD><C68F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD><43><EFBFBD>A<EFBFBD>E<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>āA<C481>v<EFBFBD>l<EFBFBD>G<EFBFBD><47><EFBFBD>W<EFBFBD><57><EFBFBD>Ƃ<EFBFBD><C682>Ă̔F<CC94><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD>A<EFBFBD><41><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B
|
||||
if (!UCI::load_eval_finished)
|
||||
{
|
||||
// <20>]<5D><><EFBFBD><EFBFBD><D690>̓ǂݍ<C782><DD8D><EFBFBD>
|
||||
Eval::load_eval();
|
||||
|
||||
// <20>`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD>̌v<CC8C>Z<EFBFBD>ƕۑ<C695>(<28><><EFBFBD>̌<EFBFBD><CC8C>̃<EFBFBD><CC83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>̃`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>̂<EFBFBD><CC82><EFBFBD>)
|
||||
eval_sum = Eval::calc_check_sum();
|
||||
|
||||
// <20>\<5C>t<EFBFBD>g<EFBFBD><67><EFBFBD>̕\<5C><>
|
||||
Eval::print_softname(eval_sum);
|
||||
|
||||
UCI::load_eval_finished = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><F382B382>Ă<EFBFBD><C482>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>ׂ邽<D782>߂Ƀ`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD>ׂ<F192B282><D782>B
|
||||
// <20><><EFBFBD>Ԃ<EFBFBD><D482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>邪.. 0.1<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>炢<EFBFBD>̂<EFBFBD><EFBFBD>ƂȂ̂ŗǂ<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
if (eval_sum != Eval::calc_check_sum())
|
||||
sync_cout << "Error! : EVAL memory is corrupted" << sync_endl;
|
||||
}
|
||||
|
||||
// isready<64>ɑ<C991><CE82>Ă<EFBFBD>readyok<6F><6B><EFBFBD>Ԃ<EFBFBD><D482>܂Ŏ<DC82><C58E>̃R<CC83>}<7D><><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>Ƃ͖<CD96><F191A982><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>̂<EFBFBD>
|
||||
// <20><><EFBFBD>̃^<5E>C<EFBFBD>~<7E><><EFBFBD>O<EFBFBD>Ŋe<C58A><65><EFBFBD>ϐ<EFBFBD><CF90>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B
|
||||
|
||||
TT.resize(Options["Hash"]);
|
||||
Search::clear();
|
||||
Time.availableNodes = 0;
|
||||
|
||||
Threads.stop = false;
|
||||
|
||||
// keep alive<76>𑗐M<F0919790><4D><EFBFBD>邽<EFBFBD>߂ɐ<DF82><C990><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>b<EFBFBD>h<EFBFBD><68><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ҋ@<40><><EFBFBD><EFBFBD><EFBFBD>B
|
||||
ended = true;
|
||||
th.join();
|
||||
|
||||
sync_cout << "readyok" << sync_endl;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -227,7 +294,7 @@ void UCI::loop(int argc, char* argv[]) {
|
||||
else if (token == "go") go(pos, is, states);
|
||||
else if (token == "position") position(pos, is, states);
|
||||
else if (token == "ucinewgame") Search::clear();
|
||||
else if (token == "isready") sync_cout << "readyok" << sync_endl;
|
||||
else if (token == "isready") is_ready(pos, is, states);
|
||||
|
||||
// Additional custom non-UCI commands, mainly for debugging
|
||||
else if (token == "flip") pos.flip();
|
||||
|
||||
Reference in New Issue
Block a user