我有一个多线程的C ++ 11程序(使用C ++ 11 mt库),可以从更多的计算资源中受益。记忆在我感兴趣的规模上不是问题,但是可扩展性并不是一件坏事。
具体来说,我正在解决的问题是在图中找到max clique的大小。为了分发程序,我采用N阶图并将其分解为N个子图,每个子图是唯一节点的邻域。找到每个子图的最大集合的大小,并将这些子图的最大值加上一个作为整个图的最大集合返回。
每个图的节点(总图和子图)表示为整数数组。边缘也是如此。因此,从技术上讲,我需要在节点之间进行通信的是一组int。返回结果将是一个int,即找到的最大clique的大小。
据我所知,MPI专注于需要分布式内存的问题。这似乎对我的问题没有必要。问题是200MB内存(16个内核上有16个线程)需要几分钟,因此,在4GB(我的大多数计算节点的最大值)下,即使我拥有所有节点,它在计算上也是不可行的。所以,我的问题是:实现这个目标的好方法是什么?如果我对MPI有误,请随时纠正我。
答案 0 :(得分:2)