Re: [computer-go] Digital Mars
I have two benchmarks: On an: Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz stepping 06 g++ --version g++ (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33) I had to modify SConstruct to refer to the default g++, not g++.4.2 and had to remove -march=native = Benchmarking, please wait ... = 20 playouts in 2.72759 seconds 73.3249 kpps 36.5657 kpps/GHz (clock independent) 105316/94359 (black wins / white wins) = 20 playouts in 2.73858 seconds 73.0304 kpps 36.4108 kpps/GHz (clock independent) 104924/94746 (black wins / white wins) = 20 playouts in 2.72858 seconds 73.2981 kpps 36.5291 kpps/GHz (clock independent) 105097/94582 (black wins / white wins) = 20 playouts in 2.76258 seconds 72.3961 kpps 36.1141 kpps/GHz (clock independent) 105139/94547 (black wins / white wins) = 20 playouts in 2.74358 seconds 72.8974 kpps 36.3124 kpps/GHz (clock independent) 104896/94794 (black wins / white wins) = Try 'help' on an: Intel(R) Core(TM)2 Quad CPUQ9650 @ 3.00GHz stepping 0a g++ --version g++ (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) (with -march=native flag) = Benchmarking, please wait ... = 20 playouts in 1.65575 seconds 120.791 kpps 40.2566 kpps/GHz (clock independent) 105316/94359 (black wins / white wins) = 20 playouts in 1.65275 seconds 121.011 kpps 40.3069 kpps/GHz (clock independent) 104924/94746 (black wins / white wins) = 20 playouts in 1.65375 seconds 120.937 kpps 40.2789 kpps/GHz (clock independent) 105097/94582 (black wins / white wins) = 20 playouts in 1.65475 seconds 120.864 kpps 40.2917 kpps/GHz (clock independent) 105139/94547 (black wins / white wins) = 20 playouts in 1.65175 seconds 121.084 kpps 40.3084 kpps/GHz (clock independent) 104896/94794 (black wins / white wins) = Try 'help' I'd be curious g++ 4.4 what gives? Cheers, Adrian ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Digital Mars
Just to add my 2c for the performance freaks. I've noticed that code generated by g++ 4.3.x was about 40-45% faster non-optimized when compared to previous versions of g++ (native linux platform). When optimizing code (-O3), 4.3 generated code that was 20% faster. This is probably the more relevant number for those that optimize their code anyway. Don't know about you, but I was impressed by 20% gain. If you already use g++ 4.3, pardon my interruption. But if you don't, you will be pleasantly surprised once you upgrade to it. Adrian Łukasz Lew wrote: mingw rules! I compiled libego with it and got a decent 32kpps / GHz ( native g++ was 44kpps / GHz) Lukasz 2009/4/21 Don Dailey dailey@gmail.com: I use mingw to produce cros platform executables. I can build executables for linux, win32 and win64, which for my chess program is a must since it's 64 bit. - Don On Tue, Apr 21, 2009 at 5:33 AM, Łukasz Lew lukasz@gmail.com wrote: On Tue, Apr 21, 2009 at 11:23, elife elife2...@gmail.com wrote: I forgot about cygwin indeed. It is a good idea. But can you ran the binary on a system without cygwin? We can run the binary on a system without cygwin if we provide cygwin1.dll. That is great. Another good idea is mingw. BTW I would like to recommend stackoverflow.com for programming questions. I asked this question there http://stackoverflow.com/questions/771756/what-is-the-difference-between-cygwin-and-mingw and got few good answers within a minute. Lukasz ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Bobby Fischer
I read that story in a book, just after Bobby Fisher's death. Don't remember all details, save that he was astonished he got beaten. Adrian Don Dailey wrote: Does anyone remember an anecdote about Bobby Fischer learning to play go? I don't remember the details but I'm trying to find a reference to this. I remember in this story that Bobby learned the rules, played a game and was beaten but that he expected to be a good player immediately based on his chess skill. - Don ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] now: operating systems and love
Linux is a time sinkhole to someone not familiar with it.You are probably almost unaware of the huge investment in time you spent learning windows because the lessons happened gradually over many years and you don't give it a second thought. You just know it and forgot that you had to learn it. Funny someone should bring this up. I was a Windows guy for all but the last 5 years or so. I've switched to Linux, gradually at first, then one day when Windows pissed me, I said enough is enough! Sure I had a few things that stopped working (like my old trusted SCSI film scanner) but after a few years, even those started working in Linux. Yet what recently surprised me was that I was given a Windows machine and asked to do something that I used to have no problem: program in Visual Studio. I had no idea how difficult it would turn out to be. It seemed that nothing fits, nor was it where I would expect it to be. Like having 2 left hands and bumbling between them. Little by little, things started coming back to me. In about 2 hours I started to find my way around. Given a few days, I'd probably remember most. What I'm trying to say is that if you take that gradual learning path on Linux, then Windows seems a time sink-hole that no-one in their right mind would want to wither their days with. Oh, by the way, I feel that way with Mac user interface. I can't find my way around there if my life depended on it! So, while I do think Linux is the best :), I guess in the end it comes down to which OS you know better yourself. A. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] 19x19 MC improvement
By the way, does anybody know of any nifty tools or heuristics for efficient probabilistic multi-parameter optimization? In other words, like multi-dimensional optimization, except instead of your function returning a deterministic value, it returns the result of a Bernoulli trial, and the heuristic uses those trial results to converge as rapidly as possible to parameter values that roughly maximize the success probability. I recommend evolutionary algorithms because they are robust on noise and don't require a quadratic or linear model for the function they optimize. I would go as simple as a ES(1+1) algorithm (a glorified name for a simple hill climber that probes randomly for its next step). I would also use restarts: run it once until no more improvement is apparent, then run it again and again (restarts) a few times (5-10) and take the overall optimum found. You'd be surprised how far you can get with this method! Adrian ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Drunken sailor on payday
Nick, do you know for a fact that a C++ complier will optimize for the base case of a virtual function? I was under the impression that it doesn't know (as in can't determine at compile time) whether the function was overwritten or not so it doesn't favor any of the cases. In fact I can't even figure how it would if it wanted to optimize an indirect function call. I'm not trying to start a war, just to clarify my assumption. As it is I generally write code using virtual functions that I most often do overwrite. If what you say is true, then I am incurring the penalty most of the time and that would be bad... Cheers, Adrian Nick Apperson wrote: sure thing: -- struct foo { // some stuff gets executed virtual void do_something(somestruct s); // base case executed by default }; struct foo_foo : foo { // some stuff gets executed }; struct foo_bar : foo { // some stuff gets executed virtual void do_something(somestruct s); // special case }; So then if we have say: foo *f; somestruct s; // ... some code that sets f to something and changes s f-do_something(s); So now when the compiler is optimizing the code, it will optimize for the base case of foo::do_something by default unless it has information that is even better. If our code instead read with f as a function pointer, the compiler (assuming it can't determine the value) won't have a base case. ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/