Re: [computer-go] Digital Mars

2009-04-22 Thread Łukasz Lew
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 `-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 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/


Re: [computer-go] Digital Mars

2009-04-22 Thread Ben Shoemaker

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 lukasz@gmail.com
To: computer-go computer-go@computer-go.org
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 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 `-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 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/


 

Re: [computer-go] Digital Mars

2009-04-22 Thread Michael Williams

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 michaelwilliam...@gmail.com:

This worked for me:
C:\Libego\lukaszlew-libego-476a46885f80e1f4d83494bb632398b3974e901bg++ -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-476a46885f80e1f4d83494bb632398b3974e901bg++
-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];
 PlayoutSimplePolicy 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 `-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 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

Re: [computer-go] Digital Mars

2009-04-22 Thread Michael Williams

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-476a46885f80e1f4d83494bb632398b3974e901bg++ -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-476a46885f80e1f4d83494bb632398b3974e901bg++
-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];
 PlayoutSimplePolicy 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 `-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 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/



Re: [computer-go] Digital Mars

2009-04-22 Thread Jason House
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-476a46885f80e1f4d83494bb632398b3974e901bg++ -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-476a46885f80e1f4d83494bb632398b3974e901bg++
  -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];
   PlayoutSimplePolicy 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 `-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 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 

Re: [computer-go] Digital Mars

2009-04-22 Thread Jason House
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 elife2...@gmail.com 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] Roadmap 2020 - using analysis mode to improve programs

2009-04-22 Thread terry mcintyre
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 terrymcint...@yahoo.com


Government is an association of men who do violence to the rest of us.
- Leo Tolstoy





From: Michael Williams michaelwilliam...@gmail.com
To: computer-go computer-go@computer-go.org
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 terrymcint...@yahoo.com
 
 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] Roadmap 2020 - using analysis mode to improve programs

2009-04-22 Thread Darren Cook
 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

2009-04-22 Thread Jason House
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 terrymcint...@yahoo.com
 
 Government is an association of men who do violence to the rest of
 us.
 - Leo Tolstoy
 
 
 
 
 __
 From: Michael Williams michaelwilliam...@gmail.com
 To: computer-go computer-go@computer-go.org
 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 terrymcint...@yahoo.com
  
  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/

___

[computer-go] Libego benchmarking

2009-04-22 Thread 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)

= 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] Libego benchmarking

2009-04-22 Thread Petri Pitkanen
Because your time measurement has gone wrong. You get 0 seconds in
time hence kpssa in infinity.

Petri

2009/4/23 Michael Williams michaelwilliam...@gmail.com:
 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/


Re: [computer-go] Re: Analysis mode for human use

2009-04-22 Thread Darren Cook
 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/