首页> 外文会议>International symposium on Symbolic and algebraic computation >An execution model for exploiting and-or parallelism in logic programs (abstract)
【24h】

An execution model for exploiting and-or parallelism in logic programs (abstract)

机译:在逻辑程序中利用和/或并行性的执行模型(抽象)

获取原文

摘要

Several models have been developed for parallel execution of logic programming languages. Most of them involve variations of two basic mechanisms: and parallelism and or parallelism.

Our work [1] is situated between the and/or process model of Conery [2] and the restricted and parallelism of DeGroot [3]. The model we have developped exploit both the and -and or- parallelism using a compile-time program-level and clause-level data dependence analysis to generate an execution graph that embodies the possible parallel executions. The execution graph is a directed acyclic graph, containing one node per atom of the clause body and two nodes for the head clause. Simple tests on the terms provided at run-time determine which of the different possible executions graph is to be used.

The purpose of the program-level data dependence analysis is to tag the variables of each atom in the clause, that is, to distinguish the variables which will be yield ground, non ground or the both case after the atom reduction. This tagging allows us to get rid of the eventualities that can never happen during the execution of the program. This improves the clause- level analysis and consequently generates a reduced graph.

The result of clause-level data dependence analysis is the execution graph. It is based on the last analysis and on the dependence of atoms in the clause. This is constructed in three phases.

The first phase, presents an algorithm which automatically extracts the maximum of parallelism from the body of the clause. It starts from the initial context, and by assuming that execution of an atom transforms the context by eliminating all the variables present in the atom, assuming they become ground. We get the maximum of parallelism by choosing to execute first the atom(or atoms) that allow to instantiate the maximum

* Permanent address: U.S.T.H.B, BP32 Bab Ezzouar Algiers ALGERIA number of variables in the clause using the tags and the weight of the atoms.

The second phase, enriches the graph by considering the possibility that an atom can produce after its execution independent non ground terms. In this case another ordering is deduced, consequently some edges are added to the graph.

The third phase deals with the possibility where the execution of the atom yields non ground but depended terms. In this case too, it means anticipating other ordering for the atoms, that is, we will consider that the atoms executed after an atom which supplies non ground dependent terms will be processed sequentially. In our approach, it is the only case where the degree of parallelism is less than that exploited in the dynamic approach of Conery.

Finally the graph is completed in the case where one or more nodes in the graph have no consumers (these are the nodes with no outcoming edge). We add edges which supply the logical values of the atom to the node representing the head of the clause.

The model support also the or-parallelism. The merge of the streams in the graph nodes is realized by a dynamic join algorithm that combines the multiple streams of partial solutions. We have adopted the algorithm proposed by Li and Martin in [4].

This model avoids the loss of parallelism due to the use of the static approach. The first improvement of this model, will be to limit the effect of the production of dependent terms to the atoms effectively affected. More details concerning this work can be found in [1].

机译:

已经开发了几种模型来并行执行逻辑编程语言。其中大多数涉及两种基本机制的变体:并行性和/或并行性。

我们的工作[1]位于Conery [2]的和/或过程模型与DeGroot [3]的受限和并行性之间。我们开发的模型使用编译时程序级别和子句级别的数据依赖分析来利用和-或-并行性,以生成体现可能的并行执行的执行图。执行图是有向无环图,在子句主体的每个原子中包含一个节点,而在head子句中包含两个节点。对运行时提供的术语进行简单测试即可确定要使用哪个可能的执行图。

程序级数据依赖分析的目的是在子句中标记每个原子的变量,即区分在原子还原后将屈服于地面,非地面或两种情况的变量。这种标记使我们摆脱了程序执行过程中永远不会发生的可能性。这样可以改善子句级的分析,从而生成简化的图。

子句级数据依赖分析的结果是执行图。它基于最后的分析,并基于该子句中原子的依赖性。它分为三个阶段。

第一阶段介绍了一种算法,该算法可自动从子句的主体中提取最大并行度。它从初始上下文开始,并假设原子的执行通过消除原子中存在的所有变量(假定它们已变为地面)来改变上下文。通过选择首先执行允许实例化最大值的一个或多个原子,我们获得了最大的并行度

* 永久地址:U.S.T.H.B,BP32 Bab Ezzouar Algiers ALGERIA使用标记和原子权重的子句中的变量数。

第二阶段,通过考虑原子在执行之后可以产生独立的非基础项的可能性来丰富图形。在这种情况下,推导了另一种排序,因此一些边缘被添加到图形中。

第三阶段处理的可能性是原子的执行产生不可靠的但依赖的项。同样在这种情况下,这意味着还要预见原子的其他排序,即,我们将认为在提供不依赖于地面的项的原子之后执行的原子将被顺序处理。在我们的方法中,这是唯一的情况,即并行度小于Conery动态方法中的并行度。

最后,在图形中的一个或多个节点没有使用者(这些节点没有输出边缘)的情况下,完成了图形。我们添加表示原子逻辑值的边到表示子句头的节点。

该模型还支持“或”并行性。图节点中流的合并是通过动态结合算法实现的,该算法结合了部分解决方案的多个流。我们采用了Li和Martin在[4]中提出的算法。

此模型避免了由于使用静态方法而导致的并行性损失。该模型的第一个改进是将相关项的产生的影响限制在有效受影响的原子上。有关这项工作的更多详细信息,请参见[1]。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号