タグ

bitboardに関するsugyanのブックマーク (2)

  • SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ

    自作Rust将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん💯 (@sugyan) July 2, 2022 ということでSIMDでの高速化のメモ。 SIMDとは 実装 x86_64 基演算 飛び利き計算 AArch64 同値判定、ゼロ値判定 飛び利き計算 Iterator WebAssembly Benchmark x86_64 AArch64 WebAssembly 感想 SIMDとは ja.wikipedia.org の通り、複数のデータを1命令で同時に演算する、というもの。 将棋Bitboardは81マスのデータを表現する

    SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ
  • reversi/othello - bitboard tricks

    (†は外部サイトへのリンク) Population count - 現時点の石数 Mirroring - 鏡像 Mobility - 着手可能位置 Get full lines - 埋まっている列を求める Count Last Flip - 最終手での返る石数 Flip - 返る石を求める (Move Generator) Flip AVX2/neon - AVX2/neon で返る石を求める リバーシの盤面は 8×8 の 64 マスで、石の有無をビットで表せるので、ビットボードへの納まりは非常に良い。 以下盤面の A1 を bit 0 (LSB), H8 を bit 63 (MSB) とする。(盤面とビットの並びが逆になる。) 自分の石 P と相手の石 O の 2 つの 64 ビット変数で盤面を表す。(文中で O (オー) と 0 (ゼロ) の両方が使われているので注意。) SSE2 で

  • 1