我有大量的任务,x和n个MPI列(x>>n(。每个任务都有不同的工作负载,并且需要在其他几个任务之间进行大量通信。如何找到将多个任务分配给每个列组的最佳分布,以便列组之间的通信最小,工作量相等?
换句话说:我有一个带有x个节点(任务(的图g。节点和边都是加权的。我需要一个图聚类算法,它为每个节点分配n种不同的颜色,使得不同颜色之间所有边的总权重最小,并且每个颜色具有(大致(相同的节点权重。
有适合这个聚类问题的算法吗?我想到了模拟退火或某种形式的遗传算法。另一个想法是切割低权重边并创建子图来减少问题。
可以应用几种类型的图算法。其中最成功的是多层次分区策略。阅读布鲁斯·亨德里克森的作品。但这需要大量的编码,并且已经存在一些库:查找Metis/Parmetis、Chaco、Zoltan。