今回はスレッド周りです。
探索を並列化するために並列数だけスレッドの生成が必要です。あと思考時間を監視して、時間になったときに思考を打ち切る判定をするためのスレッドも必要です。
GitHubのC++11用のコードだとスレッド生成はstd::threadを使って実装されています。なお、ここで紹介しているのはC++11用のブランチです。
今回はスレッド周りです。
探索を並列化するために並列数だけスレッドの生成が必要です。あと思考時間を監視して、時間になったときに思考を打ち切る判定をするためのスレッドも必要です。
GitHubのC++11用のコードだとスレッド生成はstd::threadを使って実装されています。なお、ここで紹介しているのはC++11用のブランチです。
やっとつよインフルが治りまして、今日から平常運転です。
CODE VS 4.0のほうは、 あのあとcommitしなおしたら、47点(前回44点)と、3点伸ばしたものの、順位を見ると60位。また、現在、上位9位までが満点。extra modeとは何だったのか…。
前回の電王戦出場バージョンのやねうら王との対局だけかと思っていたら、今回の電王戦FINALバージョンのやねうら王との1分将棋での対局がありました。「そこまで見せちゃうんですか?」と思うのですが、見せちゃうみたいです。
続きを読む
CODE VS 4.0に私が参加してるって言っても、紹介記事書こうと思って、ちょっと軽い気持ちでやってみただけだったのですが、ツイッターを見たら、思わぬ事態に発展しております。
このブログでは普通に『乞食』とか書いていますが、言うまでもなく放送禁止用語です。私は探索の枝刈りは賛成派でありますが、言葉狩りには反対派でありまして、今後もなりふり構わず放送禁止用語を連発していこうと思っております。(そのうちニコファーレ出入り禁止になると思います。)
先日、CODE VS 4.0の紹介記事を書いたついでに、AIをサクっと実装してsubmitしてみました。
結果。44点 48位。超即席のAIとは言え、まさかこの天才プログラマーの私が20位にすら入れないとは…。ちょっとCODE VSを舐めてました。まあ、それぞれの敵AIとは個別に対戦できる機能が用意されているのでそれぞれのAIに対してチューンしていけばもう少し順位は上がるとは思いますが。
ブラウザで動くBonanzaを作られた方がおられるので紹介させていただきます。
C/C++のソースコード → コンパイルしてLLVMのバイトコード → EmscriptenでJavaScriptのソースコードに変換という手順で動かしてあるようです。
今回はmisc.h/cppの解説です。このmisc.cppで実装されているロギング機構はなかなか興味深いhackによって実現されています。
ロギングのためにstd::cin/coutに対する入出力をファイルにリダイレクトしたいことがあるわけですが、既存のコード部分には手を加えずに、これを簡単に実装する方法があるのです。
Bonanzaを代表格とするbitboard型の将棋ソフトと、GPS将棋やなのはを代表格とする非bitboard型の将棋ソフトとで、一般的には前者のほうが全体的に見て速いと私は思うのですが、利きを活かした評価関数にするなら、話は違ってきます。今回は、どんな評価関数が考えられるか考えてみます。
続きを読む