Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: Threads

Author: Steven Edwards

Date: 07:54:56 02/18/04


While it is possible to write a Lisp interpreter that supports threaded
evaluation, the need for a huge number of interlock instances seems to make it
the idea impractical.

However, Symbolic supports multithreaded Lisp, albeit in a non-Lisp fashion: it
allows multiple instances of the Lisp interpreter, each running on its own
thread.

Symbolic's ChessLisp interpreter is built from the C++ class SyEnv (Symbolic
environent).  This class in turn is a base class for the chess toolkit class
CTCogSearchTask (cognitive search) which inherits from CTSearchTask (chess
search) which inherits from CTTask (threaded task).  To have multiple
interpreters running, an instance of the CTCommProc (command processor, also
derived from CTTask) merely has to launch multiple instances of CTCogSearchTask
and tell them how to exchange data.

One idea here is to have the multiple interpreters share a search tree and put
interlocks on the nodes for writable property values.   Another is to reserve
one interpreter instance as being the lower level pattern matcher, another to be
the upper level matcher, etc.  A third possibility is to take the plans
generated at the beginning of the search and deal them out, one per insatnce, in
a manner similar to the way ply one candidiate moves are dealt to multiple CPUs
in a traditianal A/B iterative searcher.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.