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中。如果您觉得有用,请在评论中告诉我们。

关于图形的注意事项

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

GPU上的快速光谱图分区的更多相关文章

  1. GPU上创建目标检测Pipeline管道

    GPU上创建目标检测Pipeline管道 Creating an Object Detection Pipeline for GPUs 今年3月早些时候,展示了retinanet示例,这是一个开源示例 ...

  2. HTML-图片热点、网页内嵌、网页拼接、快速切图

    图片热点 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果.与图片链接不同,热点是图片上的某一个区域或多个区域. 我们用魔兽世界图片来做一个图片热点,点击logo.区域和不 ...

  3. web中切图、快速切图与web雪碧图制作的方法

    声明: web小白的笔记,欢迎大神指点,联系QQ:1522025433. 工具:Photoshop 1.复制文字:点击文章工具后选择文字. 2.矩形选框工具 看信息 f8, 取消矩形选框 Ctrl+D ...

  4. TVM 优化 ARM GPU 上的移动深度学习

    TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源 ...

  5. TVM在ARM GPU上优化移动深度学习

    TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...

  6. 在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库

    在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库 根据调查,普通人产生的1.2万亿张图像可以通过电话或数码相机捕获.这样的图像的存储,尤其是以高分辨率的原始格式, ...

  7. VSCode + PicGo + Github + jsDelivr 搭建稳定快速高效图床

    VSCode + PicGo + Github + jsDelivr 搭建稳定快速高效图床 目录 前言 准备 配置 验证 前言 所谓图床,就是将图片储存到第三方静态资源库中,其返回给你一个 URL 进 ...

  8. 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)

    在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping) 视差贴图 最近一直在研究如何在我的 iPad 2(只支持 OpenGL ES 2.0, 不支持 3.0) 上实现 视 ...

  9. SpringBoot图片上传(四) 一个input上传N张图,支持各种类型

    简单介绍:需求上让实现,图片上传,并且可以一次上传9张图,图片格式还有要求,网上找了一个测试了下,好用,不过也得改,仅仅是实现了功能,其他不尽合理的地方,还需自己打磨. 代码: //html<d ...

随机推荐

  1. 【Navicat】获取表结构的DDL语句以及获取更新表字段的操作的DDL

    1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句  设计表-修改表字段(记住不要保存)-SQL预览

  2. 【工具类】获取请求头中User-Agent工具类

    public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...

  3. DVWA之Command Injection

    Command Injection Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的.PHP命令注入攻击漏洞是PHP应用程序中常见 ...

  4. OWASP-ZAP扫描器的使用

    目录 OWASP-ZAP 更新 代理 目录扫描 主动扫描(Active  Scan) 扫描结果 生成报告 OWASP-ZAP OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一 ...

  5. Win64 驱动内核编程-18.SSDT

    SSDT 学习资料:http://blog.csdn.net/zfdyq0/article/details/26515019 学习资料:WIN64内核编程基础 胡文亮 SSDT(系统服务描述表),刚开 ...

  6. 学习Canvas绘图与动画基础 canvas入门(一)

    一.创建canvas 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta char ...

  7. Maven关于web.xml中Servlet和Servlet映射的问题

    在配置Servlet时,有两个地方需要配置. 一个是<servlet>,另一个是<servlet-Mapping>,这两个一个是配置Servlet,一个是配置其映射信息. &l ...

  8. 8张图带你了解iptables的前世今生

    1 安全技术和防火墙 1 安全技术和防火墙 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化.定位来自内 外网络的威胁情况,主要以提供报警和事后监 ...

  9. 关于有符号数和无符号数的转换 - C/C++

    转载自:http://www.94cto.com/index/Article/content/id/59973.html 1.引例: 今天在做了一道关于有符号数和无符号数相互转换及其左移/右移的问题, ...

  10. MSSQL·备份数据库中的单表

    阅文时长 | 0.11分钟 字数统计 | 237.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·备份数据库中的单表』 编写人 | SCscHero 编写时间 | 20 ...