Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A question about speed and bitboard

Author: Sean Empey

Date: 15:35:49 09/19/04

Go up one level in this thread


On September 19, 2004 at 11:38:10, Uri Blass wrote:

>On September 19, 2004 at 10:36:20, Robert Hyatt wrote:
>
>>On September 18, 2004 at 14:16:03, Stuart Cracraft wrote:
>>
>>>On September 17, 2004 at 20:52:19, Robert Hyatt wrote:
>>>
>>>>On September 16, 2004 at 21:20:50, Uri Blass wrote:
>>>>
>>>>>What is faster doing a loop on the 1's of a bitboard or doing a loop on array of
>>>>>integers
>>>>>
>>>>>I simply consider to change my knight move generator to bitboards
>>>>>
>>>>>Today I have array
>>>>>int knightmove[64][8] and the question is if getting
>>>>>knightmove[c3][0],...knightmove[c3][7] is faster or slower than getting the same
>>>>>squares by calculating the 1's of knightoption[c3] in order to get the squares
>>>>>that the knight can go.
>>>>>
>>>>>I also consider to have bitboard knightcapturewhite[64] knightcaptureblack[64]
>>>>>and knightquietmoves[64] that are going to be updated incrementally after every
>>>>>move and the question is what is the price of this in speed.
>>>>>
>>>>>Do people who use bitboards have experience with it?
>>>>>
>>>>>Uri
>>>>
>>>>
>>>>You are asking the wrong question.  Bitboards are simply a way of doing
>>>>_everything_ differently from array-based board representations.  There are
>>>>gains and losses (of course you should ignore the naysayers like you-know-who as
>>>>bitboards can and do work fine).  But when you start to mix things, the only way
>>>>to see if it is faster is to simply implement and test.  That's what I did with
>>>>rotated bitboards when I first thought of the idea.  It seemed like a good idea,
>>>>but there were issues to overcome...  It takes time and testing...
>>>
>>>If one doesn't want to go full bitboard for everything,
>>>then partial bitboard for evaluation...
>>>
>>>Speed of evaluation without the hassle of rotation...
>>>
>>>Stuart
>>
>>Then you have to convert mailbox to bitboard at _every_ q-search position.  That
>>won't be fast...
>
>In my case I have no mailbox and my board is simply 0-63
>
>I know that bitboard do not beat mailbox in generating moves but I hoped that it
>may beat my method of generating moves.
>
>Here is my function for generating knight moves(assuming the knight is not
>pinned and I check if the knight is pinned first by my pin array that is updated
>after every move so there is no illegal move)
>
>color(target) is defined to be info[target]>>3;
>
>static void generatesimpleknights(int square)
>{
>	int i,target;
>	for (i=0;i<knightnumber[square];i++)
>		{
>			target=knightmove[square][i];
>			if (info[target]==EMPTA)
>				gen_quietnopawns(square,target);
>			else
>			if (color(target)!=side)
>				gen_push(square,target);
>		}
>}
>
>for generating moves in bishop direction I have today functions like the
>following function
>leftup[x]=x-9 when x-9 is in bishop direction relative to x.
>rightdown[x]=x+9 or -1 and is defined in the same way
>
>
>static void generate7(int square)
>{
>	int target;
>	target=leftup[square];
>	while ((target!=-1)&&(info[target]==EMPTA))
>	{
>		gen_quietnopawns(square,target);
>		target=leftup[target];
>	}
>	if ((target!=-1)&& (color(target)!=side))
>		gen_push(square,target);
>	target=rightdown[square];
>	while ((target!=-1)&&(info[target]==EMPTA))
>	{
>		gen_quietnopawns(square,target);
>		target=rightdown[target];
>	}
>	if ((target!=-1)&& (color(target)!=side))
>		gen_push(square,target);
>
>}
>
>I wonder if I can have things faster


pre-compute your moves and generating knight moves would be extremely fast.
something like this for generating them.

/*
 * Function: GenWNM
 *  Purpose: Generates suedo legal moves for white knights
 *	  Usage: N/A
 *  Version: See ExtVerInfo
 */

int GenWNM( BoardInfo* cBoard, int sq ) {
	int *v, u, i = 0;
	v = KNPreGen[1][sq];
    u = *v++;
    do {
		if( cBoard->Color[u] != WHITE ) {
			AddMove( cBoard, sq, u, 0 ), i++;
        }
	} while( (u=*v++) != STOP );
   	return i;
}

Hope it helps you so if at all

-Sean



This page took 0 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.