[comp.os.research] DIG & Yackos

raphael@ms.uky.edu (Raphael A. Finkel) (02/17/88)

Raphael A. Finkel	(raphael@ms.uky.edu)			Yackos, DIG

POT 959
Computer Science Department
University of Kentucky
Lexington, KY  40506-0027


1.  DIG:  Distributed implementation of Graphs

     The success of DIB, the Distributed  Implementation  of
Backtracking, suggests that similar packages can be designed
for algorithm classes besides We are investigating  two  new
application packages for distributed computation.  The first
is a distributed  incremental  problem  solver  (DIPS),  for
which we have identified uses such as programmed-logic-array
folding, parser generation, and heuristic  solution  to  the
traveling  salesperson problem.  DIPS is meant to generalize
several situations we have recently encountered:  Algorithms
develop information incrementally and are able to expand the
frontier of knowledge along different paths  simultaneously.
However,  to  the  extent that exploration is based on stale
information, progress is either  slower  or  less  fruitful.
The  second package is a distributed implementation of graph
algorithms  (DIG),  which  will  be  useful  for  grid-based
numerical  algorithms,  graph-based  optimization  problems,
relaxation, and others.   Information  of  interest  to  the
application  may  be stored in each vertex and in each edge.
(In comparison, DIB allows information  to  be  stored  with
each  node  of a tree.) Like DIB, work will be automatically
distributed in a fault-tolerant fashion.

1.1.  Yackos:  Yet  another  communication-kernel  operating
system

     Yackos is a communication-kernel operating system being
implemented  on  the  Sequent multicomputer.  It attempts to
provide an exceptionally simple communication  interface  to
processes   in   order   to   provide  very  high  bandwidth
communications with very low latency.  It achieves this goal
by the following methods:

 * The communication primitives are very low level.  Message
   buffers are taken from free queues and placed on outgoing
   queues.  There are two fixed message sizes, each with its
   own   queues.    Destinations   are   given   as  process
   identifiers.

 * Communication does not necessarily require kernel  calls.
   Queues  and  other context information are shared between
   the kernel and the process.  The process may inspect this
   information  at  any time.  The only kernel calls are (1)
   to block the caller until any queue  changes  state,  and
   (2) to tell the kernel to look at the queues and send any
   messages on the output queues.

 * On multiprocessors such as the Sequent,  the  kernel  can
   run  simultaneously  with the processes without requiring
   any context switch.