Computer Chess Club Archives


Search

Terms

Messages

Subject: bitboards and incrementally updated attack tables.

Author: Eric Oldre

Date: 10:51:13 06/30/04


I got the new version of my engine to a working state late last week. By
"working" I mean it would actually play a game of chess in winboard and arena.

I implemented a perft function and it ran a perft 6 in 24 seconds on my athlon64
3200+. This was much better than I expected.

I thought the next step i would take would be to add bitboards, and have
incrementally updated attack tables. So sunday/monday night i threw together
some code.

//added to the board struct
U64 bb_pieces[13];
U64 bb_players[3];
U64 bb_all;
U64 bb_attacks_from[64];
U64 bb_attacks_to[64];

I updated the attack tables in move_apply() by using a technique which i later
found was similar to the technique mr. Hyatt describes in his paper at:
http://www.cis.uab.edu/info/faculty/hyatt/bitmaps.html
I'm talking about what he calls "Computing attacks_from[64] using normal
bitmaps.". Not the rotated bitmap approach.

I knew my perft test would take a hit since i wasn't yet using the
attacks_from[] in my move generator. But I thought I would probably be able to
make that up with the increased speed of my move generator, Once my attack_table
code was optimized.

I typed in "perft 6", hit enter, and 127 seconds later I realized that
incrementally updated attack tables might be more work than I at first thought.

So now I'm back to the drawing board, I figure that if I start using the rotated
bitboard approach i should be able to shave a large chunck of that time off, and
there is still plenty more i could have done with my code as it stands, It was
really more of a proof of concept.

I'd really like to use incrementally updated attack tables if possible. even if
they are slower in a perft test than generating the attacks in move_gen and
throwing them away, I figure that my engine will spend most of it's time in eval
anyway, and if having attack information there pre-computed speeds eval up or
allows a more detailed eval in the same time, then that is worth the cost in
making a move.

What are other peoples thoughts on incrementally updated attack tables?

Who else uses them? any with available source to study?

Those people that do use them? are they bitboard or array based?

What do people think about keeping both attacks_to and attacks_from updated, or
just one or the other?

Eric Oldre



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.