Parallelism in YAP

There has been a sizeable amount of work on an or-parallel implementation for YAP, called YAPOr.

Most of this work has been performed by Ricardo Rocha. In this system parallelism is exploited implicitly by running several alternatives in or-parallel. This option can be enabled from the configure script or by checking the system's Makefile.

YAPOr* is still a very experimental system, going through rapid development. The following restrictions are of note:

  • YAPOr currently only supports the Linux/X86 and SPARC/Solaris platforms. Porting to other Unix-like platforms should be straightforward.

  • YAPOr does not support parallel updates to the data-base.

  • YAPOr does not support opening or closing of streams during parallel execution.

  • Garbage collection and stack shifting are not supported in YAPOr*.

  • Built-ins that cause side-effects can only be executed when left-most in the search-tree. There are no primitives to provide asynchronous or cavalier execution of these built-ins, as in Aurora or Muse.

  • YAP does not support voluntary suspension of work.

We expect that some of these restrictions will be removed in future releases.

Define:

1. OrFr_lock:

1. OrFr_alternative:

1. OrFr_members:

1. OrFr_node:

1. GetOrFr_node:

1. SetOrFr_node:

1. OrFr_nearest_livenode:

1. OrFr_depth:

1. OrFr_pend_prune_cp:

1. Get_OrFr_pend_prune_cp:

1. Set_OrFr_pend_prune_cp:

1. OrFr_pend_prune_ltt:

1. OrFr_nearest_leftnode:

1. OrFr_qg_solutions:

1. OrFr_tg_solutions:

1. OrFr_owners:

1. OrFr_next_on_stack:

1. OrFr_suspensions:

1. OrFr_nearest_suspnode:

1. OrFr_next:

1. SolFr_ltt:

1. SolFr_first:

1. SolFr_last:

1. SolFr_next:

1. AnsFr_answer:

1. AnsFr_next:

Typedef:

1. typedef struct or_frame * or_fr_ptr:

1. typedef struct query_goal_solution_frame * qg_sol_fr_ptr:

1. typedef struct query_goal_answer_frame * qg_ans_fr_ptr: