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.