Author: Robert Hyatt
Date: 19:59:20 06/05/01
Go up one level in this thread
On June 05, 2001 at 22:56:04, Robert Hyatt wrote: >On June 05, 2001 at 19:58:38, Vincent Diepeveen wrote: > >>On June 05, 2001 at 14:04:42, Robert Hyatt wrote: >> >>>On June 05, 2001 at 11:29:41, Vincent Diepeveen wrote: >>> >>>>On June 05, 2001 at 11:14:29, Robert Hyatt wrote: >>>> >>>>>> >>>>>>Now see what i get in beowulf. Instead of that in 2001 dudes program >>>>>>better they program things out FOR EVERY PIECE. >>>>>> >>>>>>Even blackpawns and whitepawns are written out. >>>>>> >>>>>>Man such a student i would directly ship back. >>>>>> >>>>>> "Please make the code more general student, if you multiply a 2048 x 2048 >>>>>> array you don't write out every multiplication either!". >>>>>> >>>>>>See here below the horror which i found in moves.c from beowulf project. >>>>>> >>>>>>How do you plan to let people learn from this code? >>>>>> >>>>>>They must learn to "write everything out"?? >>>>>> >>>>>>Please use a few for loops, even in bitboards you can do that, >>>>>>or have you forgotten how loops work? >>>>> >>>>>Depends on the purpose. "unrolling" is a well-known way to speed up code. >>>>>Compact does not always equal fast. Unrolling also eliminates some tests and >>>>>branches, which is also good. >>>> >>>>I know, where did you hear me talk about getting it faster this generator? >>>> >>>>Dann Corbitt said this project was setup to let people learn how to write >>>>their own chessprogram and to show how algorithms and implementing >>>>a chessprogram in a nice manner works. >>>> >>>>So my comment on this piece of code is that it's not written in a way >>>>where students learn from. >>>> >>>>They learn directly how to hack from this: "write everything out". >>>> >>>>In this piece of crap code i see everywhere: >>>> >>>> if (side == WHITE) >>>> tsq = B->WhiteKnights; >>>> else >>>> tsq = B->BlackKnights; >>>> >>>>Note you can eliminate these branches, which speeds code up bigtime. >>> >>>A decent compiler won't use a branch there _anyway_. It will use a >>>conditional move. >> >>I'm no compiler expert, but it might not generate it, >>because it might not know that it's legal to access >>B->WhiteKnights as B could be NULL. That of course it could >>already deduce that B isn't NULL because it gets referenced anyway >>is a step which would surprise me if compilers take it :) >> >>Lucky we have some compiler experts here. >> >>Now when do i get a visual c++ compiler which can generate PIII code, >>mine only generates stupid 486 code which btw isn't having any >>CMOV instructions :) >> >>However those compilers that do generate a CMOV here still are >>slower as that 486 compiler. Don't ask me why. Just measure the >>speed diff :) >> >>> >>>> >>>>In a test to generate for white a few million of times a list of moves >>>>the branches will be correctly predicted, but normally spoken you get >>>>a big misprediction there as then you generate for white and next >>>>move for black, that hurts :) >> >>>Just don't do a branch. :) >> >>> >>>> >>>>Apart from that it's very ugly to see code like that, >>>>i prefer more compact code to teach students and those who >>>>want to start their own program! >>> >>>What they see is what they will do. I think it better to show how it >>>_should_ be done, as opposed to teaching bad habits by showing how it >>>could be done more concisely. >> >>I'm not here to reveal code of mine. All programs here get 2 times >>faster suddenly :) I should also have added: If _everybody_ on here was that selfish and disinterested in helping others, do you think you would have been running on a quad xeon 700 for your last tournament? Think about it. This is a two-way street. If you want help, you should be willing to offer help as well...
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.