[Openmcl-devel] Speed, compilers and multi-core processors

Dan Corkill corkill at cs.umass.edu
Thu May 21 11:49:03 PDT 2009

Ranier wrote:

> Also think about blackboards that have some dimensions as matrices  
> mapped to the GPU (example of a blackboard system in Lisp: http://gbbopen.org/ 
>  ).
> As an example see this GBBopen function:  map-instances-on-space- 
> instances
>   http://gbbopen.org/hyperdoc/ref-map-instances-on-space- 
> instances.html
>   ' Apply a function once to each unit instance on space instances,  
> optionally selected by a retrieval pattern. '
> Then see  FIND-INSTANCES:  http://gbbopen.org/hyperdoc/ref-find-instances.html
> I could imagine that SOME uses of these function could be speed up a  
> lot by running in parallel on a GPU with, say, 256 compute elements.

Indeed.  Beyond nearly uncoupled large-grained computations (such as  
DanW has been describing) and obviously vectorize-able computations,  
providing application-specific higher order operators that are  
implemented to take advantage of these computing elements will become  
the norm.  (An CL is so very good at providing application-specific  
language constructs!)

As for parallel/distributed AI blackboard systems, I'll shamelessly  
plug my old book chapter as a good read:

Design Alternatives for Parallel and Distributed Blackboard Systems,  
Daniel D. Corkill. In V. Jagannathan, Rajendra Dodhiawala, and  
Lawrence S. Baum, editors, Blackboard Architectures and Applications,  
pages 99-136. Academic Press, 1989.

which is on-line at http://dancorkill.home.comcast.net/~dancorkill/pubs/parallel-distributed-chapter.pdf

An important take away from this AI work in the late 80s is that using  
parallelism to perform concurrent, speculative search was less  
advantageous than using finer-grained parallelism to make the  
individual steps faster.  This surprised some, but in hindsight it  
seems obvious that obtaining information to refine/invalidate search  
threads sooner (by having faster operators) would win over a less- 
informed shotgun search.  It was fairly easy to write large-grained  
loosely coupled parallel programs and it was also fairly easy to write  
more fine-grained parallel application-specific operators.  Writing  
general parallel programs that worked somewhere between these two  
extremes was where things became much harder. With parallel blackboard  
systems, using parallelism to make individual knowledge-source (KS)  
executions faster was always preferable to running multiple KS  
executions concurrently.

More information about the Openmcl-devel mailing list