Computer Chess Club Archives


Search

Terms

Messages

Subject: Bitboards and Evaluation

Author: Vincent Diepeveen

Date: 05:09:52 05/31/01


Hello i had in mind comparing assembly output of 2 things
but now i look in crafty 18.9 i see the pattern is not even
in crafty 18.9, though it's a basic pattern. so it's hard
to compare things.

But i'm pretty amazed by that every thing is
getting referenced as
   tree->pos.board[sq]

If i would be roman catholic i would now make a cross and say
"lucky i'm multiprocessor",

because what i would be using there is
   board[sq]

And i'm using that everywhere in my evaluation. Bob
however smartly got rid of the thing by using a define
that however translatest to it PcOnSq() it's called.

But in the assembly code you still see it!

Also what i see is the general problem of bitboards:
  if( (something[indexed]&bitmask) == pattern )

Where i can do
  if( something[indexed] == pattern )

So i save an AND there.

Also i'm pretty amazed by 'signed char bval_w[64]'.

First of all in DIEP i am happy to announce that i threw out all
8 bits arrays.

I didn't know crafty is still using 8 bits arrays!
I thought it was a mixture of 32 bits with 64 bits!

The second thing i wonder about is why this is getting done *every*
evaluation. bval_w gives a piece square table value which is constant
for bishops.

You can do that incremental in makemove/unmakemove !!

This is a pure waste of system time!

Note in DIEP i would do that in my makemove as:
  int *p;
  global int tablescore;
  p = psq[piece];

  tablescore += p[to_square]-p[from_square];

Crafty does it every evaluation!!!

Bob something to improve in your evaluation!

Overall i'm amazed crafty plays that strong with so little evaluation!

Probably tuning of it has been done at a very professional level!

Best Regards,
Vincent




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.