如何解决boost::vf2_graph_iso 的实现是单线程的吗?
我将 boost 图库用于图模式匹配项目。我使用 boost::vf2_graph_iso
来检查顶点数最多为 10 的子图的同构性。有成百上千个子图,我需要将它们全部推入一个哈希集。这项工作需要很长时间。提高性能的一个天真的想法是使用多线程并行哈希集。
我尝试了多线程,确实在一定程度上减少了整体的运行时间,但是我发现在执行过程中,cpu使用率显示为只有一个核心正在使用。详细地说,我的机器有 32 个内核,我创建了 28 个线程,但 cpu 使用率峰值仅为 100%,而不是 2800%。我还使用了 boost::vf2_subgraph_mono
和 boost::vf2_subgraph_iso
,它们具有相同的行为。
我没有在实现中使用锁。每个线程只访问哈希集的一个分区,即访问是无锁的,不使用任何原子操作。
我猜 boost::vf2_graph_iso
是否仅限于单线程?即,虽然多个线程可以同时调用 boost::vf2_graph_iso
但内部某处被锁定?我不知道如何验证我的猜测。所以我想知道是否有人对上述内容有任何想法?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。