zoukankan      html  css  js  c++  java
  • GPU上的快速光谱图分区

    GPU上的快速光谱图分区

    图形是用于对物理,生物,社会和信息系统中许多类型的关系和过程进行建模的数学结构。用于解决各种高性能计算和数据分析问题。对于网络分析,基因组学,社交网络分析和其他领域,大规模图形处理的计算需求,只有加速器才能提供的强大而高效的计算性能。NVIDIA通过CUDA 8引入了nvGRAPH,这是GPU加速图形算法的新库。它的第一个版本nvGRAPH 1.0支持3种关键图形算法(PageRank,单源最短路径)以及“单源最宽路径”),工程和研究团队已经在为将来的版本开发新的并行算法。

    许多应用程序需要将图划分为子图,或在其中找到簇。例如,图分区可用于偏微分方程(PDE)的数值解中,以执行更有效的稀疏矩阵-矢量乘法,而图聚类可用于标识社交网络中的社区和网络安全(请参见图1)。

    图1:图分区的应用

    图形分区或集群的质量可能会对应用程序的整体性能产生重大影响。不仅要利用GPU来快速找到拆分子图(GPU频谱图分区方案的执行速度比CPU实现快7倍),而且找到可能的最佳拆分也非常重要,这需要开发新算法。 

    同样,图分区和聚类旨在基于特定度量将图拆分为子图。特别地,频谱图的划分和聚类依赖于与给定图相对应的拉普拉斯矩阵的频谱(特征值和关联的特征向量)。接下来,将正式定义这个问题,展示它与拉普拉斯矩阵的频谱之间的关系,并研究其性质和权衡。

    定义

    让图由其顶点集和边集定义。顶点集表示图中的节点,每个节点由唯一的整数标识。边集表示

    图中的边,从节点到的每个边都由一对标识

     

     图2:由一组顶点S = {1,2}引起的图G =(V,E)的最小平衡分割

    应用程序经常需要找到将图形拆分为相似大小的子图,并通过尽可能少的边连接的子图。该陈述通常表述为以下问题:找到一组顶点,,以成本函数的方式诱导图形的最小平衡割

    重要的是要指出,分区和聚类都旨在将原始图分成多个子图。但是,在分区时,分区的数量通常是固定的,而在群集中,实际上没有分区可能是一个结果。同样,可以通过不同的成本函数(包括模块性中间性或流程性)来衡量拆分的最优 

    成本函数

    将关注流行比率和归一化割成本函数,它们是图形的最小平衡割的变体。比率和标准化削减成本函数定义为

    拉普拉斯矩阵

    这说明了为什么在上一节中,可以用向量x和Laplacian矩阵来表示比率中的所有项以及归一化的成本函数L。技术报告中给出了更详细的解释。

    光谱方案的关键思想

    请注意,通过找到向量的最佳非零离散值来获得成本函数的最小值u并不比找到集合的最佳索引容易S。成本函数的两个公式是等价的,都是NP难题。

    频谱划分和聚类的关键思想不是直接寻找离散解决方案,而是分两个步骤进行。

    首先,放宽离散约束,让向量u取实值而不是离散值。在这种情况下,遵循线性代数Courant-Fischer定理(有时称为Min-Max定理),成本函数的最小值由p与拉普拉斯矩阵的最小特征值相关的特征向量获得。

    其次,将获得的实际值映射回离散值以找到感兴趣的解决方案。可以使用简单的试探法(例如,对实数值进行排序并寻找缺口)或使用更高级的多维算法(例如,k均值算法)来完成此步骤。在前一种情况下,间隙之间的所有实数值,而在后一种情况下,将聚集在特定质心周围的所有实数值,分配给相同的离散值,因此将属于相同的特定分区或群集。

    不能保证两步法将找到最佳解决方案,但是在实践中,通常会找到足够好的近似值并且工作得相当好。

    图3提供了该过程的直观轮廓,算法1以伪代码表示了该算法。

     图3:频谱划分大纲

    令G =(V,E)为输入图
    设A为G的邻接矩阵
    令对角矩阵D = diag(Ae)
    设置拉普拉斯矩阵L = DA
    解决特征值问题L u =λu
    使用启发式将实数转换为离散值

    特征值问题

    特征值问题的解决方案通常是频谱图分区/聚类中最耗时的部分。有很多特征值求解器可以用来求解它,包括Lanczos,Tracemin,Jacobi-Davidson和LOBPCG。特别是,图3和图4分别显示了比较结果,比较了Lanczos和LOBPCG方法在从DIMACS图集合中寻找几种矩阵的30个最小特征向量时的性能和质量。尽管Lanczos通常是最快的特征值求解器,但是当具有0填充的不完全LU(ILU0)可用时,预处理的LOBPCG特征值求解器可能具有竞争力,并且通常可以计算出质量较高的解决方案。

    图3:GPU上各种特征值求解器的性能。

     图4:GPU上各种特征值求解器的质量。

    实验

    现在,将比较GPU上的频谱方案和CHACO软件包中CPU上实现的频谱方案。实验是在配备3.2 GHz Intel Core i7-3930K CPU和NVIDIA Tesla K40c GPU的工作站上进行的。

    方案非常相似,但不完全相同,因为CHACO对算法的实现略有不同,并且还尝试在固定阈值内提供负载均衡的削减,例如。因此,CHACO的成本函数类似于削减比率,但最终的群集偏向于提供负载平衡的分区,同时仍将边际削减降至最低。此外,CHACO实现了频谱平分,因此与之比较时,将图形分为两个分区。

    图5和图6分别显示了两种频谱方案的性能和质量。请注意,使用Lanczos的GPU频谱方案通常可以更快地获得解决方案,但与CHACO中的CPU频谱方案相比,其质量也可变,CHACO也使用Lanczos方法的一种变体。另一方面,当使用预处理的LOBPCG时,GPU的实现通常更快,并且在大多数情况下都可以通过成本函数获得更高质量的解决方案。这些实验的详细结果可以在技术报告中找到。

     图5:GPU与CPU(CHACO)上光谱图分区的加速。

     图6:GPU与CPU(CHACO)上频谱图分区的质量。

    最后,如前所述,存在许多不同的分区和群集策略。尤其是,一些用于提供图的平衡切割的流行方法使用了在METIS等软件包中实现的多级方案。与局部启发式算法(例如Kernighan-Lin算法)相比,频谱和多级方案都是适用于整个图形的全局方法。

    根据频谱方案和多级方案获得的边缘切除和成本函数,比较它们的质量是很有趣的。图7和8所示的数值实验绘制了30个分区的这些量的比率(METIS获得的成本除以GPU频谱方案获得的成本)。结果趋势表明,对于两类问题,频谱方案和多层方案的行为完全不同:(i)PDE离散化产生的网格;(ii)经常具有幂律分布的社交网络图。每个节点的边缘。推测是,这些方案之间质量的差异是由于以下事实导致的:多级方案通常依赖于本地信息来构建用于对图进行分区的图层次结构。

    注意,对于PDE,通过两种方案获得的分区质量基本相同,而对于具有高度节点的网络(如社交网络),频谱方案可以获得明显更高质量的分区。即使在实验中,频谱方案所花费的时间通常比多级方案所花费的时间更长,但认为频谱方案对于质量很重要的应用可能是一个不错的选择。例如,在稀疏线性代数应用中,即使分区质量的适度提高也会对整体应用性能产生重大影响,因此频谱方案的额外分区成本可能是值得的。

     图7:PDE的频谱与多级方案(METIS)。

     图8:网络的频谱与多级方案(METIS)。

    结论

    我希望阅读了这篇博文后,您已经了解了频谱图分区/聚类方案的一些直觉,以及如何将其与其他类似算法进行比较。在我们的技术报告中可以找到对主题的更正式的处理,可以精确地推导出理论结果并进行详细的数值实验。

    数值实验表明,GPU上的频谱分区性能可以比CPU上的频谱分区性能高7倍。同样,很明显,多级方案是划分PDE生成的网格的不错选择,而频谱方案可以在具有高度节点的网络图(例如社交网络图)上实现高质量的划分和聚类。

    如果需要在应用程序中加速图形算法,请查看新的GPU加速的 nvGRAPH 库。您还可以在“ CUDA 8功能公开”一文中阅读有关nvGRAPH的更多信息。我们正在考虑将来将光谱划分添加到nvGRAPH中。如果您觉得有用,请在评论中告诉我们。

    关于图形的注意事项

    拉普拉斯矩阵的特征向量还有许多其它应用。例如,它们可用于绘制图形。实际上,此博客中的图形绘制是使用它们完成的。已经研究了用于该应用的特征向量的解释。

    人工智能芯片与自动驾驶
  • 相关阅读:
    Flex 布局语法教程
    2017年总结的前端文章——border属性的多方位应用和实现自适应三角形
    html 里 checkbox里 只要选中就会自动添加checked=“checked”么?
    jQuery遍历DOM
    checkbox 全选操作
    ubuntu下安装jdk
    ubuntu下安装nodejs
    nodejs express route 的用法
    聊天室业务分析
    一般使用场景
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14195470.html
Copyright © 2011-2022 走看看