Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们正在为每次迭代使用一组 SPARQL 查询构建迭代算法。该算法效果很好,但我们遇到了 CPU 利用率问题。像 Fuseki 这样的 SPARQL 引擎并不是真正的多线程;它们允许在多个线程中执行多个同时查询,但每个单独的查询都是单线程的。通过查看一些 Fuseki 注释,我得到的印象是 Fuseki 不是线程安全的,所以这不是一个微不足道的问题。
由于我们的算法在 SPARQL 查询方面本质上是串行的,而且我们对一次运行感兴趣,是否有一些 SPARQL 引擎可以利用 32 核?
是的,BigData是一个开源/商业示例。
我自己的项目dotNetRDF也大量使用多线程,在我的情况下,我利用 .Net PLINQ 功能来并行化连接、产品FILTER和BIND操作,尽管它们并不总是适合这一点。
FILTER
BIND
关于 Fuseki 的说明(免责声明,我也参与了 Apache Jena 项目),因为 AndyS 指出 Fuseki 本身是线程安全的。问题是查询引擎 (ARQ) 并非旨在并行化操作,过去已经讨论过一些关于此的想法,但 IMO 它将涉及相当重大的重写。
YarcData 开发和销售的 Urika 引擎是高度多线程的(多达数千个并发线程)并且在非常大的内存中运行。不过可能不适合业余爱好者的预算。:)