Re: [computer-go] Re: Analysis mode for human use
> translated to Ishi-go > B 1 Q4 > W 2 R16 > B 3 C4 > W 4 F3 > ... > > *** > modified Ishi-go > 1. q4 > 2. r16 > 3. c4 > 4. f3 > ... > from the west - my "modified Ishi-go-format" should be even > better. (The repetitive B W are a bit annoying in Ishi-go, > and small letters are better to read than capital ones.) I find the B/W very useful: when playing out a long list of moves it is very easy to lose track where I am. Most moves are equally likely for both sides. Darren -- Darren Cook, Software Researcher/Developer http://dcook.org/mlsn/ (English-Japanese-German-Chinese-Arabic open source dictionary/semantic network) http://dcook.org/work/ (About me and my work) http://dcook.org/blogs.html (My blogs and articles) ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Libego benchmarking
Because your time measurement has gone wrong. You get 0 seconds in time hence kpssa in infinity. Petri 2009/4/23 Michael Williams : > Here is my full set of numbers. I wonder why the known kpps/GHz but unknown > kpps. > > > > = Benchmarking, please wait ... > > = 20 playouts in 0 seconds > 1.#INF kpps > 40.0245 kpps/GHz (clock independent) > 105316/94359 (black wins / white wins) -- Petri Pitkänen e-mail: petri.t.pitka...@gmail.com ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
[computer-go] Libego benchmarking
Here is my full set of numbers. I wonder why the known kpps/GHz but unknown kpps. = Benchmarking, please wait ... = 20 playouts in 0 seconds 1.#INF kpps 40.0245 kpps/GHz (clock independent) 105316/94359 (black wins / white wins) = 20 playouts in 0 seconds 1.#INF kpps 40.0721 kpps/GHz (clock independent) 104924/94746 (black wins / white wins) = 20 playouts in 0 seconds 1.#INF kpps 40.0454 kpps/GHz (clock independent) 105097/94582 (black wins / white wins) = 20 playouts in 0 seconds 1.#INF kpps 40.0458 kpps/GHz (clock independent) 105139/94547 (black wins / white wins) = 20 playouts in 0 seconds 1.#INF kpps 40.082 kpps/GHz (clock independent) 104896/94794 (black wins / white wins) ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Roadmap 2020 - using analysis mode to improve programs
I've only looked at the first game, but it does seem very interesting to analyze. The white group around H2 is near death as well and I think Leela's evaluation considered that group to be threatened. Once that is solidly alive, it does switch to the semeai on the right. I probably would not have tenuki'd on move 206, but it appears safe when I read out how to respond after move 211. Moves 218 and 220 are reasonable tesuji's when played in a semeai (even if wrong for that semeai). I think you're right that there's probably plenty of analysis to do on how leela went wrong in the game. It may even be that weaker bots read out how to kill the S6 stones on the right and instead of focusing on a liberties race with a one eyed group. On Wed, 2009-04-22 at 18:27 -0700, terry mcintyre wrote: > I haven't got a ladder example at the moment, but here's an instance > where Leela does not realize it is in terrible trouble. > > > I ( with my 8 kyu AGA rating) know with certainty by move 223 (T5) > that Black has captured a large white group. A stronger player could > read this out sooner than I. This fight is too big to lose for either > side; nothing else on the board matters. ( anyone? how early is this > outcome pre-ordained? ) > > > Based on the results of its analysis mode, Leela does not recognize > the outcome of this semeai until the large white group in the bottom > right is down to two liberties. > > The problem is even more stark in example2 -- similar board, black has > foolishly played one of his own liberties for illustrative purposes. > It is black's play, black has three liberties, white has three. Black > must take away a liberty from white to win the capturing race, or make > two eyes at T8. Black has only four playable moves; any other choice > fails. > > > Leela proposes - even after several minutes of analysis and a million > nodes - that Black should tennuki at H14. That would snatch defeat > from the jaws of certain victory; White would dive into T8 and win the > race. > > > I started this thread with the contention that analysis mode can help > developers find problems, I hope this example explains why. My theory > is that if a program could reliably recognize the outcome of such > capturing races five or ten moves sooner, it could crush the likes of > me. :D > > Terry McIntyre > > "Government is an association of men who do violence to the rest of > us." > - Leo Tolstoy > > > > > __ > From: Michael Williams > To: computer-go > Sent: Tuesday, April 21, 2009 1:57:54 PM > Subject: Re: [computer-go] Reply to Lukasz and Don + Roadmap 2020 > > Mention the program so that the author can either refute your claim or > fix the bug. > > > terry mcintyre wrote: > > Is it reasonable to expect pro players to use 6-dan programs as a > tool for analysis? The pro players are markedly better - at a rough > guess, a pro player could give a 6 dan amateur human or program a 3 > stone handicap. > > > > On the other end of the scale, beginning players and mid kyu players > could indeed make good use of an analysis mode by a program which is > better than themselves. > > > > Lastly, an analysis mode would be helpful to developers, methinks. > After winning a game, I like to back up a few moves and find out when > the program realized that it was behind. This often happens several > moves after the fatal blow has already been struck. I know the feeling > too well, when stronger players deftly skewer my group and I only > discover the problem five moves later. What do they know that I don't? > What do they know that the program doesn't? > > > > We have a saying, you learn the most from reviewing games which you > have lost. An analysis mode can help developers to discover when their > pride and joy first begins to miss the target. > > Lately, I have been playing quite a bit with a commercially > available program. An almost-ladder which has an extra liberty will > apparently be evaluated the same as a true ladder, and the program can > be tricked into trying to capture my ladder-like position. This sort > of predictable flaw might provide a clue to improve the next version. > > > > Terry McIntyre > > > > "Government is an association of men who do violence to the rest of > us." > > - Leo Tolstoy > > > > > > > > > > > > > ___ > > 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] Roadmap 2020 - using analysis mode to improve programs
> I ( with my 8 kyu AGA rating) know with certainty by move 223 (T5) > that Black has captured a large white group. A stronger player could > read this out sooner than I. This fight is too big to lose for either > side; nothing else on the board matters. Yes! I use Many Faces and GoGui/Mogo for analyzing games [1]. The ability to be able to weight/suppress moves would be great. E.g. click a couple of white stones and say "Stop trying to save these stones, they are dead!" Or click all the stones in a group and say: "Nothing else matters for either side except the live/death of this group". Or, click a bunch of points and say "These are the current hotspots" [2] Weighting moves should be relatively easy for programs to implement. The hardest part would be the GUI code. Agreeing on gtp commands for it would be a big first step. BTW, I appreciate that any move filter could lower strength of a program. The "two dead white stones" both Many Faces and Mogo keep trying to save is a classic example. What they are actually doing is making a dead group slightly stronger, strong enough so that nearby endgame moves switch from being gote to sente. But I'm trying to analyze the difference between two moves in the opposite corner and it is very frustrating when the cursed things keep playing tenuki! Darren [1]: I'm analyzing 9x9 games, and they are generally pro strength from the midgame onwards (bearing in mind their weaknesses of seki, and life/death situations where delicate play is only required by one player). [2]: Where a program could give hotspots 10 times more playouts compared to other moves, at root, with the 10:1 ratio deteriorating to 1:1 after N moves. (E.g. N could be 10, or some function of remaining empty points on board). -- Darren Cook, Software Researcher/Developer http://dcook.org/mlsn/ (English-Japanese-German-Chinese-Arabic open source dictionary/semantic network) http://dcook.org/work/ (About me and my work) http://dcook.org/blogs.html (My blogs and articles) ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Roadmap 2020 - using analysis mode to improve programs
I haven't got a ladder example at the moment, but here's an instance where Leela does not realize it is in terrible trouble. I ( with my 8 kyu AGA rating) know with certainty by move 223 (T5) that Black has captured a large white group. A stronger player could read this out sooner than I. This fight is too big to lose for either side; nothing else on the board matters. ( anyone? how early is this outcome pre-ordained? ) Based on the results of its analysis mode, Leela does not recognize the outcome of this semeai until the large white group in the bottom right is down to two liberties. The problem is even more stark in example2 -- similar board, black has foolishly played one of his own liberties for illustrative purposes. It is black's play, black has three liberties, white has three. Black must take away a liberty from white to win the capturing race, or make two eyes at T8. Black has only four playable moves; any other choice fails. Leela proposes - even after several minutes of analysis and a million nodes - that Black should tennuki at H14. That would snatch defeat from the jaws of certain victory; White would dive into T8 and win the race. I started this thread with the contention that analysis mode can help developers find problems, I hope this example explains why. My theory is that if a program could reliably recognize the outcome of such capturing races five or ten moves sooner, it could crush the likes of me. :D Terry McIntyre "Government is an association of men who do violence to the rest of us." - Leo Tolstoy From: Michael Williams To: computer-go Sent: Tuesday, April 21, 2009 1:57:54 PM Subject: Re: [computer-go] Reply to Lukasz and Don + Roadmap 2020 Mention the program so that the author can either refute your claim or fix the bug. terry mcintyre wrote: > Is it reasonable to expect pro players to use 6-dan programs as a tool for > analysis? The pro players are markedly better - at a rough guess, a pro > player could give a 6 dan amateur human or program a 3 stone handicap. > > On the other end of the scale, beginning players and mid kyu players could > indeed make good use of an analysis mode by a program which is better than > themselves. > > Lastly, an analysis mode would be helpful to developers, methinks. After > winning a game, I like to back up a few moves and find out when the program > realized that it was behind. This often happens several moves after the fatal > blow has already been struck. I know the feeling too well, when stronger > players deftly skewer my group and I only discover the problem five moves > later. What do they know that I don't? What do they know that the program > doesn't? > > We have a saying, you learn the most from reviewing games which you have > lost. An analysis mode can help developers to discover when their pride and > joy first begins to miss the target. > Lately, I have been playing quite a bit with a commercially available > program. An almost-ladder which has an extra liberty will apparently be > evaluated the same as a true ladder, and the program can be tricked into > trying to capture my ladder-like position. This sort of predictable flaw > might provide a clue to improve the next version. > > Terry McIntyre > > "Government is an association of men who do violence to the rest of us." > - Leo Tolstoy > > > > > > ___ > 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/ example.sgf Description: Binary data example2.sgf Description: Binary data ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Digital Mars
There's a big difference between kpps and kpps/GHz! For your system, you need to divide by two (and on my core2, divide by 1.66). For raw kpps, I think I had 70 on my core2 and 100 on the AMD64. Do you consistently get garbage such as -154.124 for your kpps/GHz? Sent from my iPhone On Apr 22, 2009, at 7:25 PM, elife wrote: On my "Intel(R) Core(TM)2 Duo CPU T7200 @ 2.00GHz", using linux and the exact compiler libego was tuned for, I get 70 kpps/GHz. = 20 playouts in 2.85618 seconds 70.0236 kpps -154.124 kpps/GHz (clock independent) 104896/94794 (black wins / white wins) ___ 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] Digital Mars
On my "Intel(R) Core(TM)2 Duo CPU T7200 @ 2.00GHz", using linux and the exact compiler libego was tuned for, I get 70 kpps/GHz. = 20 playouts in 2.85618 seconds 70.0236 kpps -154.124 kpps/GHz (clock independent) 104896/94794 (black wins / white wins) ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Digital Mars
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 : > >> 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 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 : > 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 `-0x1' > 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 `-0x1' 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 : > >> mingw rules! > >> I compiled libego with it and got a decent 32kpps / GHz ( native g++ > >> was 44kpps / GHz) > > I used wine to run r
Re: [computer-go] Digital Mars
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 : 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 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 : 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 `-0x1' 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 `-0x1' 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 : 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 : 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 wrote: On Tue, Apr 21, 2009 at 11:23, elife 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/
Re: [computer-go] Digital Mars
I do have a core2, but it complained about that switch: ego/ego.cpp:1: error: bad value (core2) for -march= switch ego/ego.cpp:1: error: bad value (core2) for -mtune= switch example/main.cpp:1: error: bad value (core2) for -march= switch example/main.cpp:1: error: bad value (core2) for -mtune= switch When using i686, it did not complain, and I get these results: 23.0972 kpps/GHz Łukasz Lew wrote: 2009/4/22 Michael Williams : 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 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 : 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 `-0x1' 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 `-0x1' 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 : 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 : 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 wrote: On Tue, Apr 21, 2009 at 11:23, elife 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
Re: [computer-go] Digital Mars
2009/4/22 Michael Williams : > 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 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 : >>> >>> 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 `-0x1' >>> 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 `-0x1' 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 : > > 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 : >> >> 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 >> wrote: >>> >>> On Tue, Apr 21, 2009 at 11:23, elife 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 m
[computer-go] Reply to Lukasz and Don + Roadmap 2020
Terry Mcintyre wrote: > Is it reasonable to expect pro players to use 6-dan > programs as a tool for analysis? The pro players are > markedly better - at a rough guess, a pro player > could give a 6 dan amateur human or program a 3 stone > handicap. Yes, I believe so. Some tests indicate that 2-kyu programs (Leela or ManyFaces on moderte hardware) seem to be useful to detect "certain" blunders in the games of 2-dans. 2k and 2d are also three stones apart. The other "evidence" is that in chess a rating difference of 300 or 400 points was no problem for computers to be good helpers in analysis of grandmasters. Maybe, when Zen should become commercially available within a few months and with a strength of 1-dan (or even 2-dan), it might be tested to find blunders in games of 4-dan or 5-dan amateur players. Ingo. -- Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dslspecial.gmx.de/freedsl-surfflat/?ac=OM.AD.PD003K11308T4569a ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
Re: [computer-go] Digital Mars
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 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: #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 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 : 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 `-0x1' 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 `-0x1' 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 : 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 : 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 wrote: On Tue, Apr 21, 2009 at 11:23, elife 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/comput
Re: [computer-go] Digital Mars
Success! I was able to build on WinXP using Scons and minGW (with gcc4.3.3). Here's what (finally) worked for me: 1. Install Python 2.6.2 http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi 2. Install minGW (using TDM's installer on empty minGW directory) http://downloads.sourceforge.net/tdm-gcc/tdm-mingw-1.902.0-f1.exe 3. Install SCons 1.2.0 http://prdownloads.sourceforge.net/scons/scons-1.2.0.win32.exe 4. add "C:\Python26\Scripts\" to path (for scons.bat) 5. add "C:\MinGW\bin" to path (for g++.exe) 6. unpack latest version of libego http://github.com/lukaszlew/libego/zipball/master 7. edit SConstruct (CXX = "g++.exe") 8. run scons.bat (from root directory of libego) 9. run build\example\opt\ego.exe (from root directory of libego) 10. report benchmark results The benchmark results for me were: 31.0417 kpps/GHz Hope this helps. Ben. - Original Message From: Łukasz Lew To: computer-go Sent: Wednesday, April 22, 2009 3:38:14 AM Subject: Re: [computer-go] Digital Mars 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 : > 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 `-0x1' 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 `-0x1' 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 : >>> >>> 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 : 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 wrote: > > On Tue, Apr 21, 2009 at 11:23, elife 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/ >> ___
Re: [computer-go] Digital Mars
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 : > 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 `-0x1' 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 `-0x1' 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 : >>> >>> 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 : 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 wrote: > > On Tue, Apr 21, 2009 at 11:23, elife 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/