うらおいよいよ世界コンピューター将棋選手権の季節がやって参りました。注目のソフトについて少しずつ解説記事を書いていこうかと思います。たこっとのアピール文書たこっとのアピール文書http://www.computer-shogi.org/wcsc26/appeal/takotto/appeal.htmlByteBoardを採用しAVX2命令を使いまくって高速化してあるようです。評価関数の差分計算をせずに3駒で1スレッドにて1Mnpsも出ているのは超速いです。世界最速の指し手生成ルーチンを搭載している、やねうら王2015とくらべても1,2割速いです。いうか、指し手生成の速度自体で負けています。私の「世界最速」とは何だったのか...。そんなわけで私の「世界最速」が破られたのだとしたら、黙ってはおれません。このへんを解明するためにもたこっとのアプローチが成立しうるのかどうか考えていきたいと思います。ByteBoard::Pack()たこっとの肝は、以下のPack関数です。1)));}};盤面自体はAVX2の256ビットレジスタ(__m256i)、3本とみなされています。これがByteBoardの正体です。このPack()関数は、盤面上の任意の升の値を指定された順番を保ったまま16升分一気に取ってこれます。_mm256_shuffle_epi8()でその対象となる16升の順番の並び替えをしていて、そのあとの_mm256_xor_si256()は、それらの重ねあわせをしているだけですね。このPack()関数自体がうまく設計されていて、設計能力および実装能力において達人級の技だと言えるでしょう。PieceBit次にByteBoardに何のデータを持たせるのかという点についてですが、たこっとで示されている定数のビット表記は次のようになっています。00000x70DRAGON*/bit0がP(Pawn:歩)、bit1がN(knight:桂)、bit2がL(Lance:香)、bit3がB(Bishop:角)、bit4がR(Rook:飛)、bit5がS(Silver:銀)、bit6がG(Gold:金)、bit7がE(Enemy:後手の駒)という表現です。