【问题标题】:Utilizing CLMUL in SICStus Prolog在 SICStus Prolog 中使用 CLMUL
【发布时间】:2019-09-27 11:51:46
【问题描述】:

如何让 SICStus Prolog JIT 使用以下任何 ISA

我需要它们来为 增压。现在,我得到了:

  1. http://www.hackersdelight.org/

  2. 非 ISO 算术函数msb/1

开头很好,但我想要更多请帮忙!

【问题讨论】:

  • 我不禁觉得这是一个需要直接向 SICStus 提出的技术问题。
  • @DanielLyons。我的问题是关于 (1) (2) 特定 CPU 的神秘细节,运行 (3) 专有 Prolog 系统。因此,如果您认为“这可能对所有 Prolog 程序员的一个子集的一个子集感兴趣”,我明白了。这是一个不同的角度:问题是关于(1)在(2)当前和假定的下一个主要 CPU 架构(x64,A64)上实现A + B #= C 的 FD 约束传播器。这个话题是所有 Prolog 系统都关心的问题,包括你最喜欢的系统。我只是从 (3) 具有最佳 JIT 的那个开始。这对你现在更有意义了吗?
  • 我认为关于实现奥秘的问题可能更好地解决给实现者自己而不是一群旁观者,特别是如果这些集合不知道重叠的话。但我没有投票结束,因为如果你在这里得到答案,我会喜欢阅读它。
  • @DanielLyons。您是否有时间研究(实施)clpz?很多令人惊奇的东西,都在 100% Prolog 中。目前只能与 SICStus 一起使用,但我知道有 两个 免费的 Prolog 系统(Scryer Prolog 和 Like Prolog)正在支持它!
  • @DanielLyons:开始这样的元讨论真的值得吗?

标签: clpz prolog bit-manipulation hpc sicstus-prolog clpz


【解决方案1】:

很遗憾,对于这种情况,用户无法扩展 JIT。

我一直在考虑从 Prolog 访问人口计数指令(用于一些不相关的用途)。添加此指令和其他类似指令的方法是:

  1. is/2 添加新的算术指令。这需要所有我们的代码支持,而不仅仅是 JIT 编译的代码,还有解释器、WAM 仿真器、各种内部字节码处理器、IDE 中的所有静态分析器等. 等等
  2. 添加 JIT 编译,它只是回调到运行时系统中相应的 C 例程中。
  3. 如果可以证明它可以充分提高性能,请让 JIT 编译器为具有它们的目标发出专用 CPU 指令。

(1) 需要足够的用户需求(当然也需要明确的融资)。 (3) 需要令人信服的基准。目前这些都不可用,但当然,这可能会改变。

【讨论】:

  • 迷人之处在于,有了 Jitter,实际代码生成可以比传统机器代码生成场景更平滑地更改。我只是在考虑从 4.3.2 到 4.3.3 的性能boost
  • Popcnt 和 bitrev 是唾手可得的果实。令人惊讶的是,SICStus 没有选择它们。
  • 让我们谈谈融资。你会收多少钱?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多