Discussion of chess software programming and technical issues.
Moderators: hgm , Rebel , chrisw
elcabesa
Posts: 855 Joined: Sun May 23, 2010 1:32 pm
Post
by elcabesa » Thu Jun 03, 2010 4:45 pm
looking at my engine performances I have found my move generator is very slow.
trying to evalutate his speed I enabled only knight move generation.
it looks like:
Code: Select all
public void generaMosseCavallo(ref List<mossa> m,color c,bool cattura)
{
ulong cavallo;
pezzo.piece p;
ulong tempAmici;
ulong tempNemici;
if (activeColor == c)
{
tempAmici = amici;
tempNemici = nemici;
}
else
{
tempAmici = nemici;
tempNemici = amici;
}
if (c == color.white)
{
p= pezzo.piece.whiteKnights;
cavallo = whiteKnightBitBoard;
}
else {
cavallo = blackKnightBitBoard;
p= pezzo.piece.blackKnights;
}
while(cavallo!=0){
ulong bb = bitboards.getBitboardLSB1(cavallo);// ritorna bitboard dell LSB1
ulong mosse = chesslib.generaMosse.tableMosseCavallo[bitboards.bitScanForward(cavallo)];
if (cattura)
{
mosse &= tempNemici;
}
else
{
mosse &= ~caseOccupate;
}
while (mosse != 0) {
ulong bm = bitboards.getBitboardLSB1(mosse);// ritorna bitboard dell LSB1
mossa mo = new mossa(p, bb, bm, false, false);
m.Add(mo);
mosse &= mosse - 1;// resettla LSB1
}
cavallo &=cavallo-1;// resettla LSB1
}
}
it set some variable, and then for every knight it get from bitboard it generate the moves using a lookup table, and then add the moves to the movelist.
I used refences everywhere it's possible.
this is a c# code!!!! so i can't use any assembler code to speedup the code.
ony my slow pc ( AMD sempron 2600+) i can only get a 300kn/s form this movegenerator. (i'm still not using any kind of hash)
am I doing some error in the programmation or do you think this will be the maximum speed i can reach with c# code? is this speed a good speed without hash?
elcabesa
Posts: 855 Joined: Sun May 23, 2010 1:32 pm
Post
by elcabesa » Thu Jun 03, 2010 4:48 pm
i'm sorry, but i posted this thread to the wrong forum, can someone move the thread to the right forum? (Computer Chess Club: Programming and Technical Discussions)
swami
Posts: 6640 Joined: Thu Mar 09, 2006 4:21 am
Post
by swami » Thu Jun 03, 2010 6:10 pm
Done.
elcabesa wrote: i'm sorry, but i posted this thread to the wrong forum, can someone move the thread to the right forum? (Computer Chess Club: Programming and Technical Discussions)
Dann Corbit
Posts: 12540 Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA
Post
by Dann Corbit » Thu Jun 03, 2010 6:58 pm
Your perft is quite slow. Have you tried a profiler? I suspect that the new operator might be causing the slow speed.
Most of these use hashing, but that will give only a constant speedup.
Code: Select all
c:\pgn\winboard-engines\iperft>i-perft.exe 6
i-perft 1.0 (c) 2006-2008 AJ Siemelink
+---+---+---+---+---+---+---+---+
8 |*r*|*n*|*b*|*q*|*k*|*b*|*n*|*r*|
+---+---+---+---+---+---+---+---+
7 |*p*|*p*|*p*|*p*|*p*|*p*|*p*|*p*|
+---+---+---+---+---+---+---+---+
6 | | | | | | | | |
+---+---+---+---+---+---+---+---+
5 | | | | | | | | |
+---+---+---+---+---+---+---+---+
4 | | | | | | | | |
+---+---+---+---+---+---+---+---+
3 | | | | | | | | |
+---+---+---+---+---+---+---+---+
2 |(P)|(P)|(P)|(P)|(P)|(P)|(P)|(P)|
+---+---+---+---+---+---+---+---+
1 |(R)|(N)|(B)|(Q)|(K)|(B)|(N)|(R)|
+---+---+---+---+---+---+---+---+
a b c d e f g h
perft 1 20 0.00s 1.$ mnps 1627.2 ticks/op
perft 2 400 0.00s 1.$ mnps 34.5 ticks/op
perft 3 8902 0.00s 1.$ mnps 23.7 ticks/op
perft 4 197281 0.00s 1.$ mnps 24.3 ticks/op
perft 5 4865609 0.03s 157.0 mnps 23.5 ticks/op
perft 6 119060324 0.95s 125.2 mnps 23.9 ticks/op
Code: Select all
c:\pgn\winboard-engines\oliperft>OliPerft.exe
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R
1:20:20
2:400:420
3:8902:9322
4:197281:206603
5:4865609:5072212
6:119060324:124132536
Nodes: 124132536 ms: 794 knps: 156338
Code: Select all
c:\pgn\winboard-engines\omniperft\x64\Release>omniperft.exe
OmniPerft 1.0 by Ilari Pihlajisto
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R
FEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
perft 6
Perft with 4 thread(s)
119060324
Elapsed time: 11 second(s)
Code: Select all
c:\pgn\winboard-engines\perft\x64\Release>perft 6
- - - - - - - - - - - -
- - - - - - - - - - - -
- - r n b q k b n r - -
- - p p p p p p p p - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - P P P P P P P P - -
- - R N B Q K B N R - -
- - - - - - - - - - - -
- - - - - - - - - - - -
Quick Perft by H.G. Muller
Perft mode: No hashing, bulk counting in horizon nodes
perft(1)=20 ( 0.000 sec)
perft(2)=400 ( 0.000 sec)
perft(3)=8902 ( 0.000 sec)
perft(4)=197281 ( 0.002 sec)
perft(5)=4865609 ( 0.042 sec)
perft(6)=119060324 ( 1.017 sec)
Code: Select all
c:\pgn\winboard-engines\perft_code_16_08\Release>movei-perft.exe
WARNING: Nalimov tablebase path incorrectly defined or tablebase files missing.
WARNING: Have you set the environmental variable NALIMOV_PATH correctly?
No endgame tables found
for perft on epd file you need to print perftepd and after it space andthe following list of 4 variables with spaces between themThe varaibles are the depth and the name of the input filethe name of t
he outfile and the frequency that you get input
the frequency needs to be some number 2^n-1for example 2^13-1=8191 means that you see output every 8192 positionsthe output is both in the screen and in the output filewaiting for xboard command
xboard
new
post
perft 6
no problem in allocating perft hash tables
a2a3 4463267
a2a4 5363555
b2b3 5310358
b2b4 5293555
c2c3 5417640
c2c4 5866666
d2d3 8073082
d2d4 8879566
e2e3 9726018
e2e4 9771632
f2f3 4404141
f2f4 4890429
g2g3 5346260
g2g4 5239875
h2h3 4463070
h2h4 5385554
b1a3 4856835
b1c3 5708064
g1f3 5723523
g1h3 4877234
telluser perft(6) = 119060324,time=1016
Dann Corbit
Posts: 12540 Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA
Post
by Dann Corbit » Fri Jun 04, 2010 1:45 am
Do a web search for "Distributed Perft" and you will find a really fast move generator in C#.
Compare what he did with what you are doing for insight.
Just a suggestion.
elcabesa
Posts: 855 Joined: Sun May 23, 2010 1:32 pm
Post
by elcabesa » Fri Jun 04, 2010 10:01 am
i lloked into "distribuited perft" is a c# program, but it uses "sharper" to compute the real perft work
Dann Corbit
Posts: 12540 Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA
Post
by Dann Corbit » Fri Jun 04, 2010 4:19 pm
elcabesa wrote: i lloked into "distribuited perft" is a c# program, but it uses "sharper" to compute the real perft work
Here are some dot net chess programs:
Code: Select all
c:\dotnetchess\CheckMate
c:\dotnetchess\chEngine\ChEngine
c:\dotnetchess\chEngine\ChEngine\Properties
c:\dotnetchess\chEngine\FelpoEngine
c:\dotnetchess\chEngine\FelpoEngine\Properties
c:\dotnetchess\chEngine\NetChEngine
c:\dotnetchess\chEngine\NetChEngine\Properties
c:\dotnetchess\chEngine\TestGen
c:\dotnetchess\chEngine\TestGen\Properties
c:\dotnetchess\chessengine
c:\dotnetchess\chessengine\Backup
c:\dotnetchess\ChessGameStarterKit\Chess
c:\dotnetchess\ChessGameStarterKit\Chess\Components
c:\dotnetchess\ChessGameStarterKit\Chess\Forms
c:\dotnetchess\ChessGameStarterKit\Chess\Properties
c:\dotnetchess\ChessGameStarterKit\Chess\Source
c:\dotnetchess\ChessGameStarterKit\ChessAIEngine\Engine
c:\dotnetchess\ChessGameStarterKit\ChessAIEngine\Properties
c:\dotnetchess\chesstools
c:\dotnetchess\Connect4
c:\dotnetchess\cs-chess\Backup\Chess
c:\dotnetchess\cs-chess\Backup\ChessGui
c:\dotnetchess\cs-chess\Chess
c:\dotnetchess\cs-chess\ChessGui
c:\dotnetchess\csboard-0.9\csboard
c:\dotnetchess\csboard-0.9\csboard\Backup
c:\dotnetchess\csboard-0.9\csboard\Backup\Properties
c:\dotnetchess\csboard-0.9\csboard\Properties
c:\dotnetchess\csboard-0.9\pgnlib
c:\dotnetchess\csboard-0.9\pgnlib\Properties
c:\dotnetchess\csboard-0.9\src
c:\dotnetchess\csboard-0.9\src\game
c:\dotnetchess\csboard-0.9\src\ics
c:\dotnetchess\csboard-0.9\src\mono_i18n\custom.catalog
c:\dotnetchess\csboard-0.9\src\mono_i18n\gnu.gettext
c:\dotnetchess\csboard-0.9\src\mono_i18n\mono.unix.catalog
c:\dotnetchess\csboard-0.9\src\parser
c:\dotnetchess\csboard-0.9\src\viewer
c:\dotnetchess\csboard-0.9\src\viewer\plugins\ecodb
c:\dotnetchess\csboard-0.9\src\viewer\plugins\gamedb
c:\dotnetchess\csboard-0.9\src\viewer\plugins\printer
c:\dotnetchess\csboard-0.9\src\viewer\plugins\urlloader
c:\dotnetchess\csboard-0.9\src\viewer\Widgets
c:\dotnetchess\cseng
c:\dotnetchess\cseng\Backup
c:\dotnetchess\cseng\Backup\Properties
c:\dotnetchess\cseng\cs
c:\dotnetchess\cseng\cs\Backup
c:\dotnetchess\cseng\cs\Backup\SrcChess
c:\dotnetchess\cseng\cs\Backup\SrcChess\Properties
c:\dotnetchess\cseng\cs\SrcChess
c:\dotnetchess\cseng\cs\SrcChess\Properties
c:\dotnetchess\cseng\Properties
c:\dotnetchess\csharp-chess\Backup\Chess
c:\dotnetchess\csharp-chess\Backup\ChessGui
c:\dotnetchess\csharp-chess\Chess
c:\dotnetchess\csharp-chess\ChessGui
c:\dotnetchess\csharp\Backup\Valil.Chess
c:\dotnetchess\csharp\Backup\Valil.Chess.Engine
c:\dotnetchess\csharp\Backup\Valil.Chess.Engine\Properties
c:\dotnetchess\csharp\Backup\Valil.Chess.Model
c:\dotnetchess\csharp\Backup\Valil.Chess.Model\Properties
c:\dotnetchess\csharp\Backup\Valil.Chess.Opponents
c:\dotnetchess\csharp\Backup\Valil.Chess.Opponents\Properties
c:\dotnetchess\csharp\Backup\Valil.Chess.Opponents\Web References\ChessEngineWebService
c:\dotnetchess\csharp\Backup\Valil.Chess.VisualElements
c:\dotnetchess\csharp\Backup\Valil.Chess.VisualElements\Properties
c:\dotnetchess\csharp\Backup\Valil.Chess.WinBoardEngine
c:\dotnetchess\csharp\Backup\Valil.Chess.WinBoardEngine\Properties
c:\dotnetchess\csharp\Backup\Valil.Chess\Properties
c:\dotnetchess\csharp\CheckMate
c:\dotnetchess\csharp\CheckMate\Backup
c:\dotnetchess\csharp\chess
c:\dotnetchess\csharp\chess\Backup\Chess
c:\dotnetchess\csharp\chess\Backup\ChessGui
c:\dotnetchess\csharp\chess\Chess
c:\dotnetchess\csharp\chess\ChessGui
c:\dotnetchess\csharp\ChessBoardCtrl
c:\dotnetchess\csharp\ChessBoardCtrl\Backup
c:\dotnetchess\csharp\ChessBoardCtrl\Chess\Chess
c:\dotnetchess\csharp\ChessDemo
c:\dotnetchess\csharp\ChessDemo\Backup
c:\dotnetchess\csharp\Huo Chess 0.6 cs
c:\dotnetchess\csharp\Huo Chess 0.6 cs\Properties
c:\dotnetchess\csharp\SharpChess
c:\dotnetchess\csharp\SharpChess\Backup
c:\dotnetchess\csharp\SharpChess\Backup1
c:\dotnetchess\csharp\srcChess
c:\dotnetchess\csharp\srcChess\Backup
c:\dotnetchess\csharp\srcChess\Backup\Properties
c:\dotnetchess\csharp\srcChess\Properties
c:\dotnetchess\csharp\Valil.Chess
c:\dotnetchess\csharp\Valil.Chess.Engine
c:\dotnetchess\csharp\Valil.Chess.Engine\Properties
c:\dotnetchess\csharp\Valil.Chess.Model
c:\dotnetchess\csharp\Valil.Chess.Model\Properties
c:\dotnetchess\csharp\Valil.Chess.Opponents
c:\dotnetchess\csharp\Valil.Chess.Opponents\Properties
c:\dotnetchess\csharp\Valil.Chess.Opponents\Web References\ChessEngineWebService
c:\dotnetchess\csharp\Valil.Chess.VisualElements
c:\dotnetchess\csharp\Valil.Chess.VisualElements\Properties
c:\dotnetchess\csharp\Valil.Chess.WinBoardEngine
c:\dotnetchess\csharp\Valil.Chess.WinBoardEngine\Properties
c:\dotnetchess\csharp\Valil.Chess\Properties
c:\dotnetchess\DistributedPerft2\Chess
c:\dotnetchess\DistributedPerft2\Chess\Backup
c:\dotnetchess\DistributedPerft2\Client
c:\dotnetchess\DistributedPerft2\Client\Backup
c:\dotnetchess\DistributedPerft2\PerftService
c:\dotnetchess\DistributedPerft2\PerftService\Backup
c:\dotnetchess\DistributedPerft2\Server
c:\dotnetchess\DistributedPerft2\Server\Backup
c:\dotnetchess\dotnet\ace
c:\dotnetchess\dotnet\ace\ACE
c:\dotnetchess\dotnet\ace\ACE\Board
c:\dotnetchess\dotnet\ace\ACE\Engine
c:\dotnetchess\dotnet\ace\Backup
c:\dotnetchess\dotnet\ace\Backup\ACE
c:\dotnetchess\dotnet\ace\Backup\ACE\Board
c:\dotnetchess\dotnet\ace\Backup\ACE\Engine
c:\dotnetchess\dotnet\alchess
c:\dotnetchess\dotnet\alchess\ALChess
c:\dotnetchess\dotnet\alchess\ALChess\My
c:\dotnetchess\dotnet\alchess\ALChess\My\Resources
c:\dotnetchess\dotnet\alchess\Backup
c:\dotnetchess\dotnet\alchess\Backup\ALChess
c:\dotnetchess\dotnet\alchess\Backup\ALChess\My
c:\dotnetchess\dotnet\alchess\Backup\ALChess\My\Resources
c:\dotnetchess\dotnet\chengine
c:\dotnetchess\dotnet\chengine\Backup
c:\dotnetchess\dotnet\chengine\Backup\ChEngine
c:\dotnetchess\dotnet\chengine\ChEngine
c:\dotnetchess\dotnet\Chess
c:\dotnetchess\dotnet\Chess\Backup
c:\dotnetchess\dotnet\Chess\Backup\Chess
c:\dotnetchess\dotnet\Chess\Backup\Chess\com\danmarinescu\www
c:\dotnetchess\dotnet\Chess\Backup\ChessAIEngine
c:\dotnetchess\dotnet\Chess\Backup\ChessWebService
c:\dotnetchess\dotnet\Chess\Backup\MsnImPpcLib
c:\dotnetchess\dotnet\Chess\Chess
c:\dotnetchess\dotnet\Chess\Chess\com\danmarinescu\www
c:\dotnetchess\dotnet\Chess\ChessAIEngine
c:\dotnetchess\dotnet\Chess\ChessWebService
c:\dotnetchess\dotnet\Chess\MsnImPpcLib
c:\dotnetchess\dotnet\chessengine
c:\dotnetchess\dotnet\chessengine\Backup
c:\dotnetchess\dotnet\chessengine\Backup\ChessEngine
c:\dotnetchess\dotnet\chessengine\ChessEngine
c:\dotnetchess\dotnet\consoleapplication1
c:\dotnetchess\dotnet\consoleapplication1\Backup
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Board
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Engine
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Evaluation
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Protocol
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Protocol\Commands
c:\dotnetchess\dotnet\consoleapplication1\Backup\Fusch\Protocol\Requests
c:\dotnetchess\dotnet\consoleapplication1\Fusch
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Board
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Engine
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Evaluation
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Protocol
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Protocol\Commands
c:\dotnetchess\dotnet\consoleapplication1\Fusch\Protocol\Requests
c:\dotnetchess\dotnet\counter
c:\dotnetchess\dotnet\Counter.BitBoards
c:\dotnetchess\dotnet\Counter.BitBoards\Counter\BitBoards
c:\dotnetchess\dotnet\counter\Backup
c:\dotnetchess\dotnet\counter\Backup\Counter
c:\dotnetchess\dotnet\counter\Backup\Counter\Model
c:\dotnetchess\dotnet\counter\Backup\Counter\Searching
c:\dotnetchess\dotnet\counter\Counter
c:\dotnetchess\dotnet\counter\Counter\Model
c:\dotnetchess\dotnet\counter\Counter\Searching
c:\dotnetchess\dotnet\darkfusch2
c:\dotnetchess\dotnet\darkfusch2\Backup
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\DarkFusch
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\Manager
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\Manager\Commands
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\Manager\Requests
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\Utilities
c:\dotnetchess\dotnet\darkfusch2\Backup\Fusch\Visualisation
c:\dotnetchess\dotnet\darkfusch2\Fusch
c:\dotnetchess\dotnet\darkfusch2\Fusch\DarkFusch
c:\dotnetchess\dotnet\darkfusch2\Fusch\Manager
c:\dotnetchess\dotnet\darkfusch2\Fusch\Manager\Commands
c:\dotnetchess\dotnet\darkfusch2\Fusch\Manager\Requests
c:\dotnetchess\dotnet\darkfusch2\Fusch\Utilities
c:\dotnetchess\dotnet\darkfusch2\Fusch\Visualisation
c:\dotnetchess\dotnet\fafis
c:\dotnetchess\dotnet\fafis\Backup
c:\dotnetchess\dotnet\fafis\Backup\fafis
c:\dotnetchess\dotnet\fafis\fafis
c:\dotnetchess\dotnet\felpoengine
c:\dotnetchess\dotnet\felpoengine\Backup
c:\dotnetchess\dotnet\felpoengine\Backup\FelpoEngine
c:\dotnetchess\dotnet\felpoengine\FelpoEngine
c:\dotnetchess\dotnet\fsharpchess
c:\dotnetchess\dotnet\fsharpchess\_StartupCode$FSharpChess_
c:\dotnetchess\dotnet\fsharpchess\FSharpChess
c:\dotnetchess\dotnet\fsharpchesscode
c:\dotnetchess\dotnet\fsharpchesscode\_StartupCode$FsharpChessCode_
c:\dotnetchess\dotnet\fsharpchesscode\FSharpChess
c:\dotnetchess\dotnet\fsharpchessui
c:\dotnetchess\dotnet\fsharpchessui\_StartupCode$FSharpChessUI_
c:\dotnetchess\dotnet\fsharpchessui\FSharpChess
c:\dotnetchess\dotnet\fsharpchesswb
c:\dotnetchess\dotnet\fsharpchesswb\_StartupCode$FSharpChessWB_
c:\dotnetchess\dotnet\fsharpchesswb\FSharpChess
c:\dotnetchess\dotnet\fusch
c:\dotnetchess\dotnet\fusch\Backup
c:\dotnetchess\dotnet\fusch\Backup\Fusch
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Board
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Engine
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Evaluation
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Import
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Manager
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Manager\Commands
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Manager\Requests
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Neuro
c:\dotnetchess\dotnet\fusch\Backup\Fusch\Utilities
c:\dotnetchess\dotnet\fusch\Fusch
c:\dotnetchess\dotnet\fusch\Fusch\Board
c:\dotnetchess\dotnet\fusch\Fusch\Engine
c:\dotnetchess\dotnet\fusch\Fusch\Evaluation
c:\dotnetchess\dotnet\fusch\Fusch\Import
c:\dotnetchess\dotnet\fusch\Fusch\Manager
c:\dotnetchess\dotnet\fusch\Fusch\Manager\Commands
c:\dotnetchess\dotnet\fusch\Fusch\Manager\Requests
c:\dotnetchess\dotnet\fusch\Fusch\Neuro
c:\dotnetchess\dotnet\fusch\Fusch\Utilities
c:\dotnetchess\dotnet\fuschv1_08
c:\dotnetchess\dotnet\fuschv1_08\Fusch
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Board
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Engine
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Evaluation
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Protocol
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Protocol\Commands
c:\dotnetchess\dotnet\fuschv1_08\Fusch\Protocol\Requests
c:\dotnetchess\dotnet\fuschv1_08\FuschV1_08
c:\dotnetchess\dotnet\garbochess
c:\dotnetchess\dotnet\garbochess\Backup
c:\dotnetchess\dotnet\garbochess\Backup\GarboChess
c:\dotnetchess\dotnet\garbochess\Backup\GarboChess\Tests
c:\dotnetchess\dotnet\garbochess\GarboChess
c:\dotnetchess\dotnet\garbochess\GarboChess\Tests
c:\dotnetchess\dotnet\kkfchessconfig
c:\dotnetchess\dotnet\kkfchessconfig\Backup
c:\dotnetchess\dotnet\kkfchessconfig\Backup\KKFChessConfig
c:\dotnetchess\dotnet\kkfchessconfig\KKFChessConfig
c:\dotnetchess\dotnet\matilde
c:\dotnetchess\dotnet\matilde\Backup
c:\dotnetchess\dotnet\matilde\Backup\Matilde
c:\dotnetchess\dotnet\matilde\Backup\Matilde\My
c:\dotnetchess\dotnet\matilde\Backup\Matilde\My\Resources
c:\dotnetchess\dotnet\matilde\Matilde
c:\dotnetchess\dotnet\matilde\Matilde\My
c:\dotnetchess\dotnet\matilde\Matilde\My\Resources
c:\dotnetchess\dotnet\milady
c:\dotnetchess\dotnet\milady\Backup
c:\dotnetchess\dotnet\milady\Backup\Milady
c:\dotnetchess\dotnet\milady\Backup\Milady\My
c:\dotnetchess\dotnet\milady\Milady
c:\dotnetchess\dotnet\milady\Milady\My
c:\dotnetchess\dotnet\milady_240
c:\dotnetchess\dotnet\milady_240\Milady
c:\dotnetchess\dotnet\milady_240\Milady\My
c:\dotnetchess\dotnet\murderhole
c:\dotnetchess\dotnet\murderhole\Backup
c:\dotnetchess\dotnet\murderhole\Backup\chess
c:\dotnetchess\dotnet\murderhole\chess
c:\dotnetchess\dotnet\pupsi
c:\dotnetchess\dotnet\pupsi2
c:\dotnetchess\dotnet\pupsi2\Pupsi2
c:\dotnetchess\dotnet\pupsi\Backup
c:\dotnetchess\dotnet\pupsi\Backup1
c:\dotnetchess\dotnet\pupsi\Backup1\PupsiEngine
c:\dotnetchess\dotnet\pupsi\Backup2
c:\dotnetchess\dotnet\pupsi\Backup2\UCIEngine
c:\dotnetchess\dotnet\pupsi\Backup\Pupsi
c:\dotnetchess\dotnet\pupsi\Pupsi
c:\dotnetchess\dotnet\pupsiengine
c:\dotnetchess\dotnet\pupsiengine\PupsiEngine
c:\dotnetchess\dotnet\rivaluci-1.10
c:\dotnetchess\dotnet\rivaluci-1.10\_CppImplementationDetails_
c:\dotnetchess\dotnet\rivaluci-1.10\_CrtImplementationDetails_
c:\dotnetchess\dotnet\rivaluci-1.10\std
c:\dotnetchess\dotnet\sharpchess
c:\dotnetchess\dotnet\sharpchess2
c:\dotnetchess\dotnet\sharpchess2\Backup
c:\dotnetchess\dotnet\sharpchess2\Backup\SharpChess
c:\dotnetchess\dotnet\sharpchess2\SharpChess
c:\dotnetchess\dotnet\sharpchess\Backup
c:\dotnetchess\dotnet\sharpchess\Backup\SharpChess\Main
c:\dotnetchess\dotnet\sharpchess\Backup\SharpChess\Main\Constants
c:\dotnetchess\dotnet\sharpchess\SharpChess\Main
c:\dotnetchess\dotnet\sharpchess\SharpChess\Main\Constants
c:\dotnetchess\dotnet\sharpchessui
c:\dotnetchess\dotnet\sharpchessui\Backup
c:\dotnetchess\dotnet\sharpchessui\Backup\SharpChess
c:\dotnetchess\dotnet\sharpchessui\SharpChess
c:\dotnetchess\dotnet\sharperchess
c:\dotnetchess\dotnet\sharperchess\Backup
c:\dotnetchess\dotnet\sharperchess\Backup\SharperChess
c:\dotnetchess\dotnet\sharperchess\Backup\SharperChess\InternalBoard
c:\dotnetchess\dotnet\sharperchess\SharperChess
c:\dotnetchess\dotnet\sharperchess\SharperChess\InternalBoard
c:\dotnetchess\dotnet\silke.engine
c:\dotnetchess\dotnet\silke.engine\Backup
c:\dotnetchess\dotnet\silke.engine\Backup\silke\book
c:\dotnetchess\dotnet\silke.engine\Backup\silke\db
c:\dotnetchess\dotnet\silke.engine\Backup\silke\engine
c:\dotnetchess\dotnet\silke.engine\silke\book
c:\dotnetchess\dotnet\silke.engine\silke\db
c:\dotnetchess\dotnet\silke.engine\silke\engine
c:\dotnetchess\dotnet\silkeUci
c:\dotnetchess\dotnet\silkeUci\Backup
c:\dotnetchess\dotnet\silkeUci\Backup\SilkeUci
c:\dotnetchess\dotnet\silkeUci\SilkeUci
c:\dotnetchess\dotnet\typhoonui
c:\dotnetchess\dotnet\typhoonui\Backup
c:\dotnetchess\dotnet\typhoonui\Backup\typhoonUI
c:\dotnetchess\dotnet\typhoonui\typhoonUI
c:\dotnetchess\dotnet\uche
c:\dotnetchess\dotnet\uche\Backup
c:\dotnetchess\dotnet\uche\Backup\Uche
c:\dotnetchess\dotnet\uche\Backup\Uche\Clocks
c:\dotnetchess\dotnet\uche\Backup\Uche\Graphics
c:\dotnetchess\dotnet\uche\Backup\Uche\NumberGenerators
c:\dotnetchess\dotnet\uche\Backup\Uche\OpeningBooks
c:\dotnetchess\dotnet\uche\Backup\Uche\Parsers
c:\dotnetchess\dotnet\uche\Backup\Uche\Parsers\PGN
c:\dotnetchess\dotnet\uche\Backup\Uche\Pieces
c:\dotnetchess\dotnet\uche\Backup\Uche\Players
c:\dotnetchess\dotnet\uche\Backup\Uche\Properties
c:\dotnetchess\dotnet\uche\Uche
c:\dotnetchess\dotnet\uche\Uche\Clocks
c:\dotnetchess\dotnet\uche\Uche\Graphics
c:\dotnetchess\dotnet\uche\Uche\NumberGenerators
c:\dotnetchess\dotnet\uche\Uche\OpeningBooks
c:\dotnetchess\dotnet\uche\Uche\Parsers
c:\dotnetchess\dotnet\uche\Uche\Parsers\PGN
c:\dotnetchess\dotnet\uche\Uche\Pieces
c:\dotnetchess\dotnet\uche\Uche\Players
c:\dotnetchess\dotnet\uche\Uche\Properties
c:\dotnetchess\dotnet\uciengine
c:\dotnetchess\dotnet\uciengine\UCIEngine
c:\dotnetchess\dotnet\uciplug
c:\dotnetchess\dotnet\uciplug\Backup
c:\dotnetchess\dotnet\uciplug\Backup\UCIPlug
c:\dotnetchess\dotnet\uciplug\Backup\UCIPlug\Properties
c:\dotnetchess\dotnet\uciplug\UCIPlug
c:\dotnetchess\dotnet\uciplug\UCIPlug\Properties
c:\dotnetchess\dotnet\vshost
c:\dotnetchess\dotnet\vshost\Backup
c:\dotnetchess\fafis
c:\dotnetchess\fafis\Backup
c:\dotnetchess\FsharpChess\SharpChessUI
c:\dotnetchess\FsharpChess\SharpChessUI\Properties
c:\dotnetchess\Huo Chess 0.721 cs (source)\Huo Chess 0.6 cs
c:\dotnetchess\Huo Chess 0.721 cs (source)\Huo Chess 0.6 cs\Properties
c:\dotnetchess\Huo Chess 0.82 cs edition (Source)\Source\Huo Chess 0.6 cs
c:\dotnetchess\Huo Chess 0.82 cs edition (Source)\Source\Huo Chess 0.6 cs\Properties
c:\dotnetchess\Huo Chess 0.82 XNA edition (Source)\Source\XNAHuoChessGame
c:\dotnetchess\Huo Chess 0.82 XNA edition (Source)\Source\XNAHuoChessGame\Properties
c:\dotnetchess\kingsout-0.2\src\kingsout\Project1
c:\dotnetchess\milady
c:\dotnetchess\milady\Backup
c:\dotnetchess\milady\Backup\Milady
c:\dotnetchess\milady\Backup\Milady\My
c:\dotnetchess\milady\Milady
c:\dotnetchess\milady\Milady\My
c:\dotnetchess\N22-ChessBot\PCApp\ChessBotStudio
c:\dotnetchess\N22-ChessBot\PCApp\ChessBotStudio\obj\Debug
c:\dotnetchess\N22-ChessBot\PCApp\ChessBotStudio\obj\Release
c:\dotnetchess\N22-ChessBot\PCApp\ChessBotStudio\Properties
c:\dotnetchess\pgn-parse\csharp\ChessBoardCtrl
c:\dotnetchess\pgn-parse\csharp\ChessBoardCtrl\Backup
c:\dotnetchess\pgn-parse\csharp\ChessBoardCtrl\Backup\ChessDemo
c:\dotnetchess\pgn-parse\csharp\ChessDemo
c:\dotnetchess\pgn-parse\csharp\ChessDemo\Backup
c:\dotnetchess\pgn-parse\csharp\csboard-0.8
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\game
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\ics
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\parser
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\viewer
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\viewer\plugins\ecodb
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\viewer\plugins\gamedb
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\viewer\plugins\printer
c:\dotnetchess\pgn-parse\csharp\csboard-0.8\src\viewer\plugins\urlloader
c:\dotnetchess\rnChessBoardControl\rnChessBoardCommonTypes
c:\dotnetchess\rnChessBoardControl\rnChessBoardCommonTypes\Backup
c:\dotnetchess\rnChessBoardControl\rnChessBoardCommonTypes\Backup1
c:\dotnetchess\rnChessBoardControl\rnChessBoardCommonTypes\Backup2
c:\dotnetchess\rnChessBoardControl\rnChessBoardControl
c:\dotnetchess\rnChessBoardControl\rnChessRulesEngine
c:\dotnetchess\rnChessBoardControlDemo
c:\dotnetchess\Sakk\Sakk
c:\dotnetchess\Sakk\Sakk\Babuk
c:\dotnetchess\Sakk\Sakk\Kereses
c:\dotnetchess\Sakk\Sakk\Properties
c:\dotnetchess\Sakk\Sakk\Resources
c:\dotnetchess\Sakk\Sakk\Tabla
c:\dotnetchess\SharpCheckers\src
c:\dotnetchess\SharpChess
c:\dotnetchess\SharpChess\Backup
c:\dotnetchess\SharpChess\Backup1
c:\dotnetchess\SharpChess\Backup2
c:\dotnetchess\SharpChess\Backup2\Classes
c:\dotnetchess\SharpChess\Backup2\Forms
c:\dotnetchess\SharpChess\Classes
c:\dotnetchess\SharpChess\Forms
c:\dotnetchess\SharpChess\Main
c:\dotnetchess\SharpChess\Main\Constants
c:\dotnetchess\spastic
c:\dotnetchess\starter\Chess
c:\dotnetchess\starter\Chess\Components
c:\dotnetchess\starter\Chess\Properties
c:\dotnetchess\starter\Chess\Source
c:\dotnetchess\starter\ChessAIEngine\Engine
c:\dotnetchess\starter\ChessAIEngine\Properties
c:\dotnetchess\tranm_senior_project\tranm_senior_project\TranmReversi\TranmReversi\TranmReversi
c:\dotnetchess\tranm_senior_project\tranm_senior_project\TranmReversi\TranmReversi\TranmReversi\Properties
c:\dotnetchess\uche
c:\dotnetchess\uche\Backup\Uche
c:\dotnetchess\uche\Backup\Uche\Clocks
c:\dotnetchess\uche\Backup\Uche\Graphics
c:\dotnetchess\uche\Backup\Uche\NumberGenerators
c:\dotnetchess\uche\Backup\Uche\OpeningBooks
c:\dotnetchess\uche\Backup\Uche\Parsers
c:\dotnetchess\uche\Backup\Uche\Parsers\PGN
c:\dotnetchess\uche\Backup\Uche\Pieces
c:\dotnetchess\uche\Backup\Uche\Players
c:\dotnetchess\uche\Backup\Uche\Properties
c:\dotnetchess\uche\Clocks
c:\dotnetchess\uche\Graphics
c:\dotnetchess\uche\NumberGenerators
c:\dotnetchess\uche\OpeningBooks
c:\dotnetchess\uche\Pieces
c:\dotnetchess\uche\Players
c:\dotnetchess\uche\Properties
c:\dotnetchess\uche\Uche
c:\dotnetchess\uche\Uche\Clocks
c:\dotnetchess\uche\Uche\Graphics
c:\dotnetchess\uche\Uche\NumberGenerators
c:\dotnetchess\uche\Uche\OpeningBooks
c:\dotnetchess\uche\Uche\Parsers
c:\dotnetchess\uche\Uche\Parsers\PGN
c:\dotnetchess\uche\Uche\Pieces
c:\dotnetchess\uche\Uche\Players
c:\dotnetchess\uche\Uche\Properties
c:\dotnetchess\Valil.Chess
c:\dotnetchess\Valil.Chess.Engine
c:\dotnetchess\Valil.Chess.Engine\Properties
c:\dotnetchess\Valil.Chess.Model
c:\dotnetchess\Valil.Chess.Model\Properties
c:\dotnetchess\Valil.Chess.Opponents
c:\dotnetchess\Valil.Chess.Opponents\Properties
c:\dotnetchess\Valil.Chess.Opponents\Web References\ChessEngineWebService
c:\dotnetchess\Valil.Chess.VisualElements
c:\dotnetchess\Valil.Chess.VisualElements\Properties
c:\dotnetchess\Valil.Chess.WinBoardEngine
c:\dotnetchess\Valil.Chess.WinBoardEngine\Properties
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.Model
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.Model\Properties
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.Opponents
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.Opponents\Properties
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.Opponents\Web References\ChessEngineWebService
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.WinFX
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.WinFX.VisualElements
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.WinFX.VisualElements\Properties
c:\dotnetchess\Valil.Chess.WinFX\Valil.Chess.WinFX\Properties
c:\dotnetchess\Valil.Chess\Backup
c:\dotnetchess\Valil.Chess\Backup\Properties
c:\dotnetchess\Valil.Chess\Properties
c:\dotnetchess\WoodPusher\src
c:\dotnetchess\xna3dchess\Supernatural3dChess
c:\dotnetchess\xna3dchess\Supernatural3dChess\Properties
c:\dotnetchess\xna3dchess\TrianglePickingPipeline
c:\dotnetchess\xna3dchess\TrianglePickingPipeline\Properties
A web search will cough up source for most of them.
I would start here:
http://chengine.codeplex.com/
chengine is a bitboard Csharp program.