15、全共享多线程表处理的批量评估

全共享多线程表处理的批量评估

1. 背景

表处理背后的基本思想很简单:通过将表式子目标的答案存储在一个合适的数据空间(称为表空间)中来评估程序。对表式子目标的重复调用不会根据程序子句重新评估,而是通过使用已经存储在其表条目中的答案来解决。在这个过程中,当找到更多新答案时,它们会被存储在表中,并在之后返回给所有重复调用。

Yap的表空间组织如下:
- 入口点是表条目数据结构,在编译表式谓词时分配,确保对该谓词的进一步调用从同一点访问表空间。
- 表条目下方是子目标trie结构,每个不同的表式子目标调用对应一条通过子目标trie结构的唯一路径,最终到达子目标框架。
- 子目标框架存储子目标的额外信息,并作为答案trie结构的入口点,每条通过答案trie数据单元的唯一路径对应一个不同的答案。

2. Yap的多线程表处理支持

在Yap中,线程将其表视为私有,但在引擎级别实现了三种并发表处理支持设计:
- 无共享(NS)设计 :每个线程分配完全私有的表。表条目数据结构存储谓词的公共信息,每个线程在桶数组中有自己的单元指向私有数据结构。
- 全共享(FS)设计 :线程共享完整的表空间。子目标和答案trie结构以及部分子目标框架(子目标条目数据结构)在所有线程之间共享,子目标框架数据结构被拆分为存储公共信息的子目标条目和每个线程私有的剩余信息。FS设计支持基于锁和无锁的方法来支持子目标/答案trie内的并发。

3. 调度策略
  • 本地调度 :以广度优先的方
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值