読者です 読者をやめる 読者になる 読者になる

オセロAI2

オセロ

進捗メモ。続くかな

置換表のバグが取れた。バグの原因は同じ局面かつ次に打つ色が異なる場合を同じ状態として持っていたため。このような状態で置換表がバグると考えてはいたけど、実際には起こりえないとして無視していたら実際に発生したっていう。去年の本番直前にバグに気付けてほんとよかった。

Boardの着手可能手の列挙と反転処理の実装にSIMD命令を使ってみたがあまり速くはならなかった。使い方が間違ってるのか、これが普通なのか分からない。FFO40でしかベンチマーク計測してないけど
具体的には、着手可能手の列挙の部分に手を加えると2秒程度の高速化、反転処理の部分に手を加えるとむしろ遅くなった。反転処理の部分は条件分岐を消すために必ず16回ループを回すようにしているのが原因で、SIMD命令を使わない方が速い結果になったんだろうと考えられるけど、着手可能手の列挙の部分は原因不明。

あと、SIMD命令で条件condが真ならbを、偽ならcをaに代入するには以下のようにすればいい

a = (b & cond) | (c & cond)

maskを使えば条件分岐を消せることを知った時は感動した