Author: Vincent Diepeveen
Date: 18:08:16 01/23/02
Go up one level in this thread
On January 23, 2002 at 19:44:57, Sean Mintz wrote:
not use cilk is the solution.
cilk is a joke with all respects to Don who used it for cilkchess.
when he was here cilkchess ran at 10k nps single cpu. at the same
machine his non-cilk single cpu version ran 196k nps or something,
now don's single cpu version was of course a beancounter basically,
but it says something about speed diffs. diep was at slower hardware
getting less nps than cilk, but not very much. diep was 8k nps at
the time.
cilk is a nice thing to toy with. nothing serious for a chessprogram.
fritz searched 17 ply at wcc 99, so did cilk. cilk probably forward
pruning last few ply too, not sure what fritz did at the time. i
guess less pruning than cilk.
also cilk only evaluated material. no high positional scores. easy
to search very deep with that.
So Don did much hard work, but the cilk language he never figured out
much i guess. that was work of his professors. how to measure speed
anyway when there is no version to compare with?
cilk is paying $100MLN for a huge supercomputer in order to get with
less programming more speed than you would get single cpu.
cilkchess ran at 512 processors.
it is my hope cilkchess joins next open world champ again, but it is
my assumption that most supers will not even try. they got kicked butt
and outsearched too much wcc99.
note that cilk is a weird thing to do multithreading with anyway.
remote multithreading i could eat but...
>A friend am I have been working together on an engine. Both of us are very
>interested in the idea of multithreaded chess programs. We are now developing
>ours with Cilk, seeing as how we thought it would be the most painless
>transition.
>
>The new version is almost identical to the last version, except now we pass
>positions around and copy boards (which is obviously eating up a lot of time).
>
>Here is our perft function:
>
>unsigned int perft(Position * board, int depth) {
> Position perft_board;
> Move_Stack moves[MAX_MOVES];
> int num_moves,
> i;
> unsigned int nodes;
>
> if (depth <= 0) {
> return 0;
> }
>
> num_moves = 0;
> nodes = 0;
>
> gen(board, &moves[0], &num_moves);
>
> for (i=0; i<num_moves; i++) {
> perft_board = copy_board(board);
>
> if (make_move(&perft_board, moves[i].m)) {
> if (depth == 1) {
> nodes++;
> }
>
> nodes += perft(&perft_board, depth - 1);
> }
> }
>
> return nodes;
>}
>
>What do people do to keep their programs fast?
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.