[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [computer-go] Computer Go hardware
> Plugg the FPGA card in the DIMM sorcket is interesting, but more is
needed.
If you need more bandwidth than that, perhaps it's a much better idea to
give the FPGA a bit more to do.
For example, you can let it calculate life/death status for a handful of
groups.
For ex. every L/D calculation takes a few sec. and they are all done in
parallel.
This is not so hard as it sounds, neither does it take too many gates when
you design the system right. It sound a bit like a broken record but I
designed my "chain engine" for FPGA implementation. It is stack-based and
most data structures are bitboards. When a group is captured, a flag is set
to inactivate that slot on the stack. When an undo is done, the stack
pointer is decremented etc.
When you implement bitboards on a FPGA, you use 361-bit registers of course.
You can put an eyeshape library in the FPGA and match them in 4 rotations
and 2 mirrorings in parallel with a bitboard as a single operation.
This kind of stuff in a loop that tries a few moves in a tree can give you
L/D guesstimates 100 times faster than anything on the main PC and bandwidth
issues are irrelevant.
When you let the FPGA do this in parallel with the main CPU calculating
something entirely different (like, deciding what data to send to the FPGA
next time + doing something with the data from the FPGA :) you are making
good use of the FPGA.
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/