Parallel processing 什么是和平行和或平行?

Parallel processing 什么是和平行和或平行?,parallel-processing,Parallel Processing,我目前正在读某人的论文,我不断遇到“和平行”和“或平行”这两个术语。简单的谷歌搜索并不能给出简单的解释。那么什么是“AND parallelism”和“OR parallelism”以及它们有什么不同呢?这些术语出现在用Prolog(一般逻辑语言)编写的程序的并行计算上下文中。 您可以在此处找到解释: 假设在逻辑编程环境中,当你有一个目标的连接或分离时,有可能并行地证明所有的目标。在目标连接的情况下,您谈论的是和并行,而在目标分离的情况下,您谈论的是或并行。当所有目标都是独立的(即,一个目标的输

我目前正在读某人的论文,我不断遇到“和平行”和“或平行”这两个术语。简单的谷歌搜索并不能给出简单的解释。那么什么是“AND parallelism”和“OR parallelism”以及它们有什么不同呢?

这些术语出现在用Prolog(一般逻辑语言)编写的程序的并行计算上下文中。 您可以在此处找到解释:


假设在逻辑编程环境中,当你有一个目标的连接或分离时,有可能并行地证明所有的目标。在目标连接的情况下,您谈论的是和并行,而在目标分离的情况下,您谈论的是或并行。当所有目标都是独立的(即,一个目标的输出不被用作另一个目标的输入;然而,在有些情况下,使用累加器传递,目标仍然可以被视为独立的),并行性就很简单。在其他情况下,这很快就会变得棘手。顾名思义,在和并行中,所有目标都必须为真,连接才为真。对于并行性或并行性,只要其中一个目标是真的就足够了。这导致了一种称为竞争性或并行性的变体,即一旦证明了其中一个目标,就可以停止搜索其他目标的证明

独立或并行和或并行都可以是隐式的,即编译器识别证明可以并行的情况,也可以是显式的。在后一种情况下,是程序员(通常使用语言结构)告诉编译器哪些目标可以并行运行。隐式或并行实现的一个例子是YapOr

独立或并行和(竞争)或并行都可以使用多线程实现。当使用SWI Prolog、XSB或YAP作为Prolog后端编译器时,Logtalk支持它。在Logtalk分布上可以找到几个例子,分别是独立或并行和竞争或并行。SWI Prolog发行版还包括一个提供类似功能的库。同样相关和有趣的是逻辑引擎的概念,例如在精益Prolog中发现的

如果你想进一步挖掘的话,有很多关于这个问题的论文。我希望我提供了足够的信息来帮助您开始理解和使用这些概念