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中。如果您觉得有用,请在评论中告诉我们。
关于图形的注意事项
拉普拉斯矩阵的特征向量还有许多其它应用。例如,它们可用于绘制图形。实际上,此博客中的图形绘制是使用它们完成的。已经研究了用于该应用的特征向量的解释。
GPU上的快速光谱图分区的更多相关文章
- GPU上创建目标检测Pipeline管道
GPU上创建目标检测Pipeline管道 Creating an Object Detection Pipeline for GPUs 今年3月早些时候,展示了retinanet示例,这是一个开源示例 ...
- HTML-图片热点、网页内嵌、网页拼接、快速切图
图片热点 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果.与图片链接不同,热点是图片上的某一个区域或多个区域. 我们用魔兽世界图片来做一个图片热点,点击logo.区域和不 ...
- web中切图、快速切图与web雪碧图制作的方法
声明: web小白的笔记,欢迎大神指点,联系QQ:1522025433. 工具:Photoshop 1.复制文字:点击文章工具后选择文字. 2.矩形选框工具 看信息 f8, 取消矩形选框 Ctrl+D ...
- TVM 优化 ARM GPU 上的移动深度学习
TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源 ...
- TVM在ARM GPU上优化移动深度学习
TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...
- 在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库
在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库 根据调查,普通人产生的1.2万亿张图像可以通过电话或数码相机捕获.这样的图像的存储,尤其是以高分辨率的原始格式, ...
- VSCode + PicGo + Github + jsDelivr 搭建稳定快速高效图床
VSCode + PicGo + Github + jsDelivr 搭建稳定快速高效图床 目录 前言 准备 配置 验证 前言 所谓图床,就是将图片储存到第三方静态资源库中,其返回给你一个 URL 进 ...
- 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)
在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping) 视差贴图 最近一直在研究如何在我的 iPad 2(只支持 OpenGL ES 2.0, 不支持 3.0) 上实现 视 ...
- SpringBoot图片上传(四) 一个input上传N张图,支持各种类型
简单介绍:需求上让实现,图片上传,并且可以一次上传9张图,图片格式还有要求,网上找了一个测试了下,好用,不过也得改,仅仅是实现了功能,其他不尽合理的地方,还需自己打磨. 代码: //html<d ...
随机推荐
- Python 使用xlsxwriter绘制Excel表格
最近在统计资产,正好看到了xlsxwriter这个表格生成模块,借此机会,熟悉一下,写点有趣的小案例,一开始想使用C++ QT图形化开发一套自动化运维平台,但后来发现不仅消耗时间而且需要解决QT Qs ...
- 洛谷P1089 津津的储蓄计划
题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里 ...
- 关于YiII框架的扩展memcache中set设置时间就get查询失效的解决方案(版本是1.1.20)
0x01 前言 在使用Yii框架的扩展memcache缓存的时候,存储数据有一个set方法,来看一下set方法的原型: public boolean set(string $id, mixed $va ...
- Spring Security 入门篇
本文是一个笔记系列,目标是完成一个基于角色的权限访问控制系统(RBAC),有基本的用户.角色.权限管理,重点在Spring Security的各种配置.万丈高楼平地起,接下来,一步一步,由浅入深,希望 ...
- vmware vpshere 安装完的必备工作
1:例如:vCenter计算机地址为:192.168.0.200, 访问地址:https://192.168.0.200,安装证书: 参考教程:https://blog.csdn.net/cooljs ...
- mysql安装_图文详细安装步骤_让你轻松安装并使用(超详细步骤)
mysql的下载就不用说了,自行到官网下载..(本人下载的是mysql5.0版本) 下面开始正式安装 1.双击mysql_setup.exe后,直接点击Next 2.选择"I accept ...
- Codeforces Round #691 (Div. 2)
A. Red-Blue Shuffle 题意:有两个长度为n的数组,数组a和数组b,问那个数组中的数字相比之下比另一个数组中相应位置的元素值更大一些,如果数组a大就输出RED,如果数组b大就输出BLU ...
- C++ primer plus读书笔记——第10章 对象和类
第10章 对象和类 1. 基本类型完成了三项工作: 决定数据对象需要的内存数量: 决定如何解释内存中的位: 决定可使用数据对象执行的操作或方法. 2. 不必在类声明中使用关键字private,因为这是 ...
- RTTI之dynamic_cast运算符
#include <iostream> #include <cstdlib> #include <ctime> using std::cout; class Gra ...
- 屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)
What CASCADE? Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一. ...