微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

boost::vf2_graph_iso 的实现是单线程的吗?

如何解决boost::vf2_graph_iso 的实现是单线程的吗?

我将 boost 图库用于图模式匹配项目。我使用 boost::vf2_graph_iso 来检查顶点数最多为 10 的子图的同构性。有成百上千个子图,我需要将它们全部推入一个哈希集。这项工作需要很长时间。提高性能一个天真的想法是使用多线程并行哈希集。

我尝试了多线程,确实在一定程度上减少了整体的运行时间,但是我发现在执行过程中,cpu使用率显示为只有一个核心正在使用。详细地说,我的机器有 32 个内核,我创建了 28 个线程,但 cpu 使用率峰值仅为 100%,而不是 2800%。我还使用了 boost::vf2_subgraph_monoboost::vf2_subgraph_iso,它们具有相同的行为。

我没有在实现中使用锁。每个线程只访问哈希集的一个分区,即访问是无锁的,不使用任何原子操作。

我猜 boost::vf2_graph_iso 是否仅限于单线程?即,虽然多个线程可以同时调用 boost::vf2_graph_iso 但内部某处被锁定?我不知道如何验证我的猜测。所以我想知道是否有人对上述内容有任何想法?谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?