We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SelectMaxUcbChild()なのですが、子ノードがすべて引き分けの時に親ノードにそれを伝播していないです。😥 なので伝播していれば早い段階で引き分けだとわかる局面でも引き分けだと判明するのに時間がかかります。
DeepLearningShogi/usi/UctSearch.cpp
Line 1349 in 2ec875c
となるのですが、1),2)のIsWin,IsDrawはMove(指し手構造体)の上位bitを用いるので、bitwise andしていけば1),2)同時に求まります。 3)もその時についでにbitwise orしていけば求まります。
ついでに言うと、子ノードすべてのMoveだけの配列があれば、その配列に対して、AVX命令で8つずつまとめて上のbitwise and/orができます。 // なのでそういう構造になってほしい気はします。
さらに言うと、1,2,3)のケースにおいて、そのindexを返す必要はなくて(子ノードの訪問回数のincrementが不要なら)、indexを返さず、上のbitwise andした結果なり何なりを参照渡しされた引数などに返すほうが、すっきりしたコードになります。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
SelectMaxUcbChild()なのですが、子ノードがすべて引き分けの時に親ノードにそれを伝播していないです。😥
なので伝播していれば早い段階で引き分けだとわかる局面でも引き分けだと判明するのに時間がかかります。
DeepLearningShogi/usi/UctSearch.cpp
Line 1349 in 2ec875c
となるのですが、1),2)のIsWin,IsDrawはMove(指し手構造体)の上位bitを用いるので、bitwise andしていけば1),2)同時に求まります。
3)もその時についでにbitwise orしていけば求まります。
ついでに言うと、子ノードすべてのMoveだけの配列があれば、その配列に対して、AVX命令で8つずつまとめて上のbitwise and/orができます。
// なのでそういう構造になってほしい気はします。
さらに言うと、1,2,3)のケースにおいて、そのindexを返す必要はなくて(子ノードの訪問回数のincrementが不要なら)、indexを返さず、上のbitwise andした結果なり何なりを参照渡しされた引数などに返すほうが、すっきりしたコードになります。
The text was updated successfully, but these errors were encountered: