I use one dimensional arrays for speed (to avoid a multiply by 21).  

Old Many Faces code uses arrays of 363 (361 points, pass, and null-point).
The smallest possible arrays were required to run under 500 KB total memory.
I avoided edge checks by having a set of small offset arrays (with 2, 3, or
4 offsets), chosen by the board.

My MCTS code uses single dimension arrays with size suggested by Mark Boon,
from Goliath, 20 * 21 + 2.  This is enough to have points off the edge on
all sides and diagonals.

David

> -----Original Message-----
> From: [email protected] [mailto:computer-go-
> [email protected]] On Behalf Of Carter Cheng
> Sent: Monday, July 13, 2009 8:36 AM
> To: [email protected]
> Subject: [computer-go] Basic question concerning the edges of the board
> 
> 
> Hi,
> 
> I have again been considering trying my hand at implementing a simple go
> program. The question I have pertains to checking for the edge of the
board
> in capture situations and so on. For a modern CPU (given what limited
> information I have on this) the extra branches might result in pipeline
> stalls if I am constantly checking if values are in range. Is it best to
> extend the size of the board to say 21x21 to somehow avoid these sorts of
> checks? Or are the relative cost of these branches negligible in the
scheme
> of things?
> 
> Thanks in advance,
> 
> Carter.
> 
> 
> 
> _______________________________________________
> computer-go mailing list
> [email protected]
> http://www.computer-go.org/mailman/listinfo/computer-go/

_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to