That seems like a good speed. On my "Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz", using linux and the exact compiler libego was tuned for, I get 42 kpps/GHz.
On my "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+", using the same compiler, I only get 37 kpps/GHz. On Wed, 2009-04-22 at 18:09 -0400, Michael Williams wrote: > After I used a better MinGW build, with a newer gcc (the one Ben suggested), > I get must better results with no compiler warnings: > > 40.0609 kpps/GHz > > Lukasz, the march options of native, i686 and core2 all worked and came out > to similar results with i686 being slightly faster for me. > > > Łukasz Lew wrote: > > 2009/4/22 Michael Williams <michaelwilliam...@gmail.com>: > >> This worked for me: > >> C:\Libego\lukaszlew-libego-476a46885f80e1f4d83494bb632398b3974e901b>g++ -o > >> engine.exe ego/ego.cpp example/main.cpp -O3 -Iego -fomit-frame-pointer > >> -ffast-math -frename-registers > >> > >> (I removed the -march switch) > >> > >> 22.5101 kpps/GHz > > > > No too much :) > > Can you try -march=i686 and -march=core2 (if you have core2) ? > > > >> > >> And I was able to create a DLL like this: > >> > >> C:\Libego\lukaszlew-libego-476a46885f80e1f4d83494bb632398b3974e901b>g++ > >> -shared -o libego.dll ego/eg > >> o.cpp exported.cpp -O3 -Iego -fomit-frame-pointer -ffast-math > >> -frename-registers > >> > >> 46274.8727441 pps > >> > >> SUCCESS! Thanks for everyone's help. > >> > >> > >> Here are the contents of exported.cpp: > > > > This is almost the same as Benchmark::do_playout in benchmark.cpp > > > >> > >> #include "ego/ego.h" > >> > >> __declspec(dllexport) void DoPlayouts(int playout_cnt, int * blackWins, int > >> * whiteWins) > >> { > >> SimplePolicy policy; > >> Board board [1]; > >> Board mc_board [1]; > >> Playout<SimplePolicy> playout(&policy, mc_board); > >> > >> for (int i = 0; i != playout_cnt; i++) { > >> mc_board->load(board); > >> playout_status_t status = playout.run (); > >> if (status != too_long) > >> { > >> int score = mc_board -> score (); > >> if (score > 0) > >> { > >> (*blackWins)++; > >> } > >> else > >> { > >> (*whiteWins)++; > >> } > >> } > >> } > >> } > >> > >> > >> Łukasz Lew wrote: > >>> Please download newest version, I made some ifdefWIN 32 ... to aid > >>> mingw porting. > >>> http://github.com/lukaszlew/libego/zipball/master > >>> > >>> Under linux I can cross compile to windows binary with a following command > >>> $ i586-mingw32msvc-g++ -o engine.exe ego/ego.cpp example/main.cpp -O3 > >>> -march=native -Iego -fomit-frame-pointer -ffast-math > >>> -frename-registers > >>> > >>> It might just work :) > >>> > >>> FYI > >>> $ i586-mingw32msvc-g++ --version > >>> i586-mingw32msvc-g++ (GCC) 4.2.1-sjlj (mingw32-2) > >>> > >>> And the performance I get is around 32 kpps/GHz > >>> > >>> Lukasz > >>> > >>> 2009/4/22 Michael Williams <michaelwilliam...@gmail.com>: > >>>> Ok, I have Mingw installed now. That sounds like the way to go. But I > >>>> still don't know how to compile it :/ > >>>> > >>>> According to the SConstruct file, I should be doing something like this > >>>> to > >>>> build, but it complains: > >>>> > >>>> C:\Libego> g++ /Fobuild\ego\dbg\ego.obj /c ego\ego.cpp -DDEBUG -ggdb3 > >>>> -Wall > >>>> -Wextra -Wswitch-enum -fno-inline /nologo /Iego > >>>> > >>>> g++: /Fobuild\ego\dbg\ego.obj: No such file or directory > >>>> g++: /c: No such file or directory > >>>> g++: /nologo: No such file or directory > >>>> g++: /Iego: No such file or directory > >>>> In file included from ego\ego.h:27, > >>>> from ego\ego.cpp:47: > >>>> ego\gtp.h:73: warning: `class Gtp' has virtual functions but non-virtual > >>>> destructor > >>>> In file included from ego\ego.cpp:54: > >>>> ego\player.cpp: In constructor `Player::Player()': > >>>> ego\player.cpp:27: warning: converting of negative value `-0x000000001' > >>>> to > >>>> `uint' > >>>> In file included from ego\ego.cpp:55: > >>>> ego\color.cpp: In constructor `Color::Color()': > >>>> ego\color.cpp:27: warning: converting of negative value `-0x000000001' to > >>>> `uint' > >>>> > >>>> > >>>> I also tried the build command for the optimized version: > >>>> > >>>> > >>>> C:\Libego> g++ /Fobuild\ego\opt\ego.obj /c ego\ego.cpp -DDEBUG -ggdb3 > >>>> -Wall > >>>> -Wextra -Wswitch-enum -O3 -march=native -fomit-frame-pointer -ffast-math > >>>> -frename-registers /nologo /Iego > >>>> > >>>> g++: /Fobuild\ego\opt\ego.obj: No such file or directory > >>>> g++: /c: No such file or directory > >>>> g++: /nologo: No such file or directory > >>>> g++: /Iego: No such file or directory > >>>> ego\ego.cpp:1: error: bad value (native) for -march= switch > >>>> ego\ego.cpp:1: error: bad value (native) for -mtune= switch > >>>> > >>>> > >>>> Sorry for my ignorance. > >>>> > >>>> > >>>> > >>>> Łukasz Lew wrote: > >>>>> 2009/4/21 Łukasz Lew <lukasz....@gmail.com>: > >>>>>> mingw rules! > >>>>>> I compiled libego with it and got a decent 32kpps / GHz ( native g++ > >>>>>> was 44kpps / GHz) > >>>>> I used wine to run resulting exe on linux:) > >>>>> > >>>>>> 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/ > >>>> > >>> _______________________________________________ > >>> 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/