Skip to content

Spinach 4.93

Choose a tag to compare

@thomas-maeder thomas-maeder released this 09 May 18:02
· 145 commits to develop since this release

This the first, highly experimental release of

Spinach

Spinach is what makes Popeye strong, as we all know. It uses multi-processing to hopefully test many chess problems faster than regular Popeye. It starts a number of Popeye sub-processes which test a part of the problem each, and presents the result in almost the same way as a single Popeye process would.

The trade-off is that the available memory is shared between the Popeye sub-processes. Spinach is therefore not likely to save time for all problems (but, as said above, hopefully for most); in particular, problems where a single Popeye process profits from a huge hash table will probably not benefit from Spinach.

Installation

Your simplest option is to download the Spinach executable into the same directory where you have downloaded the Popeye v4.91 or v4.93 executable (earlier versions will not work); Spinach will then find the Popeye executable automatically.

These executables are:

  • Windows: spinach.exe
    -- note: if you get an obscure error message containing "wmic" when you start spinach.exe, try installing WMIC as Optional Feature
  • Linux: spinach
  • many platforms (including Windows/Linux): spinach.tcl
    requires a working, reasonably current Tcl (Tool command language, pronounced "tickle") runtime environment including the Tcl Standard Library; such an environment is provided by ActiveState Tcl or by Linux packages typically named tcl and tcllib.

Usage

Spinach is designed to be invoked very similarly to regular Popeye. In particular, if you use a graphical frontend such as Olive, you should be able to configure the Spinach executable like you normally configure the regular Popeye executable.

Command line options

If Spinach is invoked on the command line, we have slightly more fine-grained control over its behavior:

$ spinach.exe --help
spinach.exe : spinach [options] [input file]
options:
 --executable=value   path to Popeye executable <pywin64.exe>
 --nrprocs=value      number of Popeye processes to spawn <6>
 --maxmem=value       maximum memory for each process <Popeye default>
 --version            Version of this program
 --                   Forcibly stop option processing
 --help               Print this message
 --?                  Print this message

The values between < and > are the default values; they are computed by Spinach using some not so complicated heuristics. Depending on the operating system and physical characteristics of your system, these default values will differ from the ones given above.

Notes

  • Spinach's output doesn't contain introductory information like author, board etc. - the output looks as if option noboard had been indicated, even if you haven't
  • the greeting line at the top of Spinach's output
$ spinach test.inp
Popeye Linux-6.11.0-24-generic-x86_64-64Bit v4.91 (1024 MB)
...

indicates the memory allocated to each Popeye sub-process.

Known limitations

Spinach 4.93 has some limitations; it was decided to release it now, as it should already be useful to many of us, rather than to wait until it is perfect (which it will never be - it's software, after all).

Hopefully, many of the following known limitations will be removed in later releases.

Spinach currently does not support problems with at least one of the following features:

  • twins and/or zeropositions*
  • help and series stipulations with set play*
  • series stipulations with introductory series (e.g. 3->ser-h=5)
  • option Intelligent
  • options Duplex or HalfDuplex*
  • options that cause Popeye to print partial solutions, such as StopOnShortSolutions

The limitions marked with an asterisk (*) can be easily worked around by testing the parts separately.

Feedback about further, so far unknown limitations is very welcome through the Issues on this site.