Strelka for Unix

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Guetti

Strelka for Unix

Post by Guetti »

Hi,
I just took a look in the Strelka sources to see if it could be easily ported to non-Windows systems. I had to replace some windows.h specific stuff, compiled the sources and got a version that ponders. But maybe not the right thing. Thus I need some help:

1. Can somebody give me the output of 'go depth 16' from the starting position?

2. There is one function that relies heavily on windows.h header. I took it out for now, making Strelka probably refusing any user input while it calculates. I can see the purpose of the function but as a I-never-touched-windows-guy don't know how it precisely works. Here it is:

Code: Select all

int input_available()
{ static int init = 0, is_pipe;
  static HANDLE stdin_h;
  DWORD val;

  if (stdin->_cnt > 0) return 1;
  if (!init) {
    init = 1;
    stdin_h = GetStdHandle(STD_INPUT_HANDLE);
    is_pipe = !GetConsoleMode(stdin_h,&val);
    if (!is_pipe) {
      SetConsoleMode(stdin_h,val&~(ENABLE_MOUSE_INPUT|ENABLE_WINDOW_INPUT));
      FlushConsoleInputBuffer(stdin_h);
    }
  }
  if (is_pipe) {
    if (!PeekNamedPipe(stdin_h,NULL,0,NULL,&val,NULL)) return 1;
    return val > 0;
  }
  else {
    GetNumberOfConsoleInputEvents(stdin_h,&val);
    return val > 1;
  }
  return 0;
}

I see that it checks if there is input available. But does it also store new input? Anybody interested to know more what needed to be changed or wants to help please let me know.
User avatar
Daniel Mehrmann
Posts: 858
Joined: Wed Mar 08, 2006 9:24 pm
Location: Germany
Full name: Daniel Mehrmann

Re: Strelka for Unix

Post by Daniel Mehrmann »

Guetti wrote:Hi,
I just took a look in the Strelka sources to see if it could be easily ported to non-Windows systems. I had to replace some windows.h specific stuff, compiled the sources and got a version that ponders. But maybe not the right thing. Thus I need some help:

1. Can somebody give me the output of 'go depth 16' from the starting position?

2. There is one function that relies heavily on windows.h header. I took it out for now, making Strelka probably refusing any user input while it calculates. I can see the purpose of the function but as a I-never-touched-windows-guy don't know how it precisely works. Here it is:

Code: Select all

int input_available()
{ static int init = 0, is_pipe;
  static HANDLE stdin_h;
  DWORD val;

  if (stdin->_cnt > 0) return 1;
  if (!init) {
    init = 1;
    stdin_h = GetStdHandle(STD_INPUT_HANDLE);
    is_pipe = !GetConsoleMode(stdin_h,&val);
    if (!is_pipe) {
      SetConsoleMode(stdin_h,val&~(ENABLE_MOUSE_INPUT|ENABLE_WINDOW_INPUT));
      FlushConsoleInputBuffer(stdin_h);
    }
  }
  if (is_pipe) {
    if (!PeekNamedPipe(stdin_h,NULL,0,NULL,&val,NULL)) return 1;
    return val > 0;
  }
  else {
    GetNumberOfConsoleInputEvents(stdin_h,&val);
    return val > 1;
  }
  return 0;
}

I see that it checks if there is input available. But does it also store new input? Anybody interested to know more what needed to be changed or wants to help please let me know.
replace the stuff above with this: (but untested, just out of my brain)

Code: Select all

#include <sys/time.h> //needed for timeval

int input_available()
{
  fd_set rfd;
  struct timeval timeval;
  timeval.tv_sec = timeval.tv_usec = 0;
  FD_ZERO(&rfd);
  FD_SET(0, &rfd);
  return select(1, &rfd, NULL, NULL, &timeval) > 0;
}
and be happy ;-)

Best,
Daniel
Guetti

Re: Strelka for Unix

Post by Guetti »

Ok, this is what I get from the starting position (64-bit linux):

uci
id name Strelka 2.0 B
id author Jury Osipov
option name Hash type spin default 32 min 4 max 1024
option name MultiPV type spin default 1 min 1 max 100
uciok
go depth 16
info depth 1
info depth 1 score cp 88 time 0 nodes 18 nps 0 pv g1f3
info depth 1 time 0 nodes 20 nps 0
info depth 2
info depth 2 score cp 3 time 1 nodes 47 nps 47000 pv g1f3 b8c6
info depth 2 time 1 nodes 85 nps 85000
info depth 3
info depth 3 score cp 88 time 1 nodes 153 nps 153000 pv g1f3 b8c6 b1c3
info depth 3 time 1 nodes 214 nps 214000
info depth 4
info depth 4 score cp 3 time 1 nodes 348 nps 348000 pv g1f3 b8c6 b1c3 g8f6
info depth 4 time 2 nodes 1123 nps 561500
info depth 5
info depth 5 score cp 40 time 3 nodes 1377 nps 459000 pv g1f3 b8c6 b1c3 g8f6 d2d3
info depth 5 time 3 nodes 1640 nps 546666
info depth 6
info depth 6 score cp 3 time 5 nodes 2652 nps 530400 pv g1f3 b8c6 b1c3 g8f6 d2d3 d7d6
info depth 6 time 8 nodes 4671 nps 583875
info depth 7
info depth 7 score cp 43 time 10 nodes 6257 nps 625700 pv g1f3 b8c6 b1c3 g8f6 d2d3 d7d6 c1f4
info depth 7 time 12 nodes 7267 nps 605583
info depth 8
info depth 8 score cp 3 time 17 nodes 10803 nps 635470 pv g1f3 b8c6 b1c3 g8f6 d2d3 d7d6 c1f4 c8f5
info depth 8 time 43 nodes 19307 nps 449000
info depth 9
info depth 9 score cp 32 time 61 nodes 30272 nps 496262 pv g1f3 b8c6 b1c3 g8f6 d2d4 d7d5 d1d3 c6b4 d3b5 b4c6
info depth 9 time 108 nodes 43540 nps 403148
info depth 10
info depth 10 score cp 22 time 153 nodes 65017 nps 424947 pv g1f3 b8c6 b1c3 g8f6 d2d4 d7d5 d1d3 g7g6 c1f4 c8f5
info depth 10 time 221 nodes 110582 nps 500371
info depth 11
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 11 score cp 24 time 368 nodes 197291 nps 536116 pv g1f3 b8c6 b1c3 g8f6 d2d4 d7d5 c1f4 f6h5 f4g5 c8f5 g2g3
info depth 11 time 450 nodes 255896 nps 568657
info depth 12
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 12 score cp 20 time 563 nodes 411850 nps 731527 pv g1f3 b8c6 b1c3 g8f6 d2d4 d7d5 d1d3 g7g6 c1f4 c8f5 d3b5 a8b8
info depth 12 time 730 nodes 588586 nps 806282
info depth 13
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 13 score cp 17 time 1154 nodes 1203780 nps 1043136 pv g1f3 b8c6 b1c3 g8f6 d2d4 d7d5 e2e3 c8f5 f1d3 f5d3 d1d3 d8d6 c3b5 d6b4 c1d2 b4b2 b5c7 e8d7
info depth 13 time 1399 nodes 1494059 nps 1067947
info depth 14
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 14 score cp 16 time 2093 nodes 2531186 nps 1209357 pv g1f3 b8c6 b1c3 g8f6 d2d4 e7e6 e2e3 f8b4 f1d3 d7d5 e1g1 e8g8 c1d2 c8d7
info depth 14 time 2863 nodes 3547147 nps 1238961
info depth 15
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 15 score cp 24 time 4783 nodes 6450801 nps 1348693 pv g1f3 b8c6 b1c3 g8f6 d2d4 e7e6 e2e3 f8b4 f1d3 f6d5 c1d2 e8g8 e1g1 d8f6 c3d5 e6d5 d2b4 c6b4
info depth 15 time 5568 nodes 7459456 nps 1339701
info depth 16
info currmove g1f3 currmovenumber 1
info currmove g1h3 currmovenumber 2
info currmove d2d3 currmovenumber 3
info currmove e2e3 currmovenumber 4
info currmove e2e4 currmovenumber 5
info currmove f2f3 currmovenumber 6
info currmove g2g3 currmovenumber 7
info currmove h2h3 currmovenumber 8
info currmove h2h4 currmovenumber 9
info currmove g2g4 currmovenumber 10
info currmove f2f4 currmovenumber 11
info currmove d2d4 currmovenumber 12
info currmove c2c4 currmovenumber 13
info currmove c2c3 currmovenumber 14
info currmove b2b4 currmovenumber 15
info currmove b2b3 currmovenumber 16
info currmove a2a4 currmovenumber 17
info currmove a2a3 currmovenumber 18
info currmove b1c3 currmovenumber 19
info currmove b1a3 currmovenumber 20
info depth 16 score cp 23 time 15459 nodes 22485988 nps 1454556 pv g1f3 b8c6 b1c3 g8f6 e2e4 d7d5 e4e5 d5d4 e5f6 d4c3 d2c3 d8d1 e1d1 g7f6 f1d3 h8g8 h1g1 c8g4 g1e1 g4f3 g2f3
info time 17035 nodes 24627625 nps 1445707
bestmove g1f3 ponder b8c6
nas

Re: Strelka for Unix

Post by nas »

In case it's useful, I threw up a git repository with sources that compile on Unix. Grab with

Code: Select all

 git clone http://python.ca/nas/chess/strelka.git/
Andreas, I get basically the same output from "go depth 16".
Ben Lau

Re: Strelka for Unix

Post by Ben Lau »

It's easy to migrate Strelka from Win to X. The only prob is the comments are all in Russian instead of Latin English.

We should translate these to Latin firstly.
pgeorges

Re: Strelka for Unix

Post by pgeorges »

nas wrote:In case it's useful, I threw up a git repository with sources that compile on Unix. Grab with

Code: Select all

 git clone http://python.ca/nas/chess/strelka.git/
This command returns an error (404). The git repository does not seem to be properly set.
Could make a source package available ?

Pascal
nas

Re: Strelka for Unix

Post by nas »

pgeorges wrote: This command returns an error (404). The git repository does not seem to be properly set.
Could make a source package available ?
Pascal
Not sure what the problem is since the clone command works for me. Anyhow, heres a source package:

http://python.ca/nas/chess/strelka-2.0a-nas.tar.gz

BTW, thanks for your work on scid.
pgeorges

Re: Strelka for Unix

Post by pgeorges »

Thank you for the ported sources.

But I don't know if I have the right to port it to Pocket PC (for Scid) and release it, given that it is a bit hard for me to understand Strelka status and ownership.

Pascal
CRoberson
Posts: 2094
Joined: Mon Mar 13, 2006 2:31 am
Location: North Carolina, USA

Re: Strelka for Unix

Post by CRoberson »

I don't believe you can port it to anythng as Vas has claimed ownership.
He's planning to make a new release of it and then the licensing should
be clear.
pgeorges

Re: Strelka for Unix

Post by pgeorges »

CRoberson wrote:I don't believe you can port it to anythng as Vas has claimed ownership.
He's planning to make a new release of it and then the licensing should
be clear.
Yes, I agree with you.

Pascal