图上的并行处理 Parallel Processing of Graphs
Graph
本次学术前沿讲座由邵斌老师主讲,标题已经揭示了主题:Graph。1.5h的talk,听完自觉意犹未尽。本来以为是一节自己没接触过的图形学的talk,没想到讲的很多内容都跟自己学过的很多东西能Match。这里记录了一些笔记与各位分享,希望各位园友一起跟着邵斌老师来感受一下Graph的魅力。
Lecture是以三个领域的对比娓娓道来的:Graph、Image与Graphics。直观上讲,Image象征图像处理,Graphics则是计算机图形学。
那么,Graph是什么呢?它其实一点也不神秘。对大多数程序员来说,它可能要比前两者更亲切,因为大部分人都曾在数据结构书中见过它。比如著名的七桥问题,抽象为图的结构,就是这样的:
这里的Graph,我们用图谱来称呼它可能更为合适。和图像图形相比,它显得更抽象一些,所以概括能力也更强:我们可以说一个社交网络是一张图谱,一个人物关系也是一张图谱,图谱在我们生活之中无处不在。引用一句充满哲学意味的话来形容就是:“万物之间皆有联系”。万物组成了一张大大的图谱,每个人都是其中的一个结点。粗浅地了解一下图谱的基本概念以后,就开始进入本次talk的主题。
Challenges
我们在处理大规模的图谱时,会遇到各种各样的挑战,包括但不仅限于以下:
- 图的多样性
由于实体和关系的复杂性,图的多样性也是必然事件。笔者以为,图的多样性作为挑战之一,主要是因为它给建设统一的图谱处理系统带来了巨大的困难。不同的图谱依赖的数据特点不一,对于不同的图谱需要的处理方法即使相似,但也还是有不小差异。 - 计算的多样性
在图谱处理的背后是大量的计算,所以计算对图谱的处理有很重要的影响。丰富的操作类型决定了多种多样的计算模式,比如:有Online的查询处理,也有Offline的数据分析,不同的操作对应着不同的计算方式,这些都是在构建图谱时所需要面对的challenge。 - 图的规模
如果一个任务的计算规模很大,那么我们可以把它分成若干个子任务,在不同的机器上分别跑每个子任务。当每个子任务顺利完成后,我们把子任务的结果汇总合并,就可以得到原任务的结果了。这是传统的做法,也就是MapReduce的大致思路。然而在面对图时,这样的办法就不是很奏效了。最大的困难之处在于:图很难切割。MapReduce是分而治之,但图的处理在第一步上就栽了个跟头。
Design Principles
下面我们来介绍一下在设计一个系统时用到的一些通用的设计准则。
No one size fits all
第一条,也是非常重要的一条设计准则:There is no one-size-fits-all system. What is one size fits all?
没有任何一个系统是可以放之四海而皆准的。当然,现有的系统当然是能够处理图的,从这一方面讲,图这个东西就像链表,数组等,只是一种数据结构,没有什么特别的地方。但是,能够处理只是最基本的功能,我们这里所说的“皆准”指的是:对于不同的数据结构有大致相同的处理性能。
但我们目前分层的体系结构中,在处理图和处理其他数据结构的速度上会有巨大的差异。这种差异主要来源于图区别于其他的一些特性,这些特性恰恰与分层体系结构的设计理念产生了冲突。
Random Access
有计算机基础的同学应该都知道局部性原理。它强调了CPU访存时的一大特性:所访问的存储单元总趋向于在一小块连续区域【更完整准确的解释戳这里】。这样就意味着,当我们访问了一块数据后,接下来一段时间内的活跃数据将是这块数据周围的数据。既然我们可以预测活跃数据,那我们就希望把这些活跃数据预取到访问速度最快的存储器中,以此来减少平均访问数据的时间,这样做代价又小,效果又好。于是,Cache出现了。
但是想象一下,如果我们要对一个图遍历操作,就会在大量的结点之间跳来跳去。图的结构决定了在遍历时是真正的随机存储访问,局部性很弱。在这种局部性概念极度弱化的场景下,一个结点相邻的存储数据刚取到Cache里,跳跃一个相邻结点可能会命中Cache,但再跳跃一个结点,就很难继续命中Cache了。这是制约图处理速度的很重要的一部分原因。
当然,笔者认为,存在大量先验知识的情况下,我们做一些对图结构友好的Cache优化也是可以的。比如统计概率上关联更深的结点,把它们在内存布局上调整靠近,以满足Cache预取的本意(访问最频繁的数据放在最快的存储器中)。
Hard to Divide
之前也提到了,传统的MapReduce无法在图的处理上很好work的主要原因就是图很难Divide。所以也就没有什么高效的分治算法,不好做Partition。
Data Driven
在图谱中,最重要的部分就是支撑图谱的数据。不同的数据组织对图谱的效率影响很大,不仅仅只有算法才会影响图处理的效率。
Tradeoff
我们要做的是一个可work的系统,而不是一个只能供观赏的art。所以在设计一个系统时不能总追求理想化的完美,总要考虑一些 Tradeoff。在图处理的问题上就有一些Tradeoff值得我们考虑:
- 要支持online query, offline analytic, 或者两者都支持?
- 要针对吞吐量(throughput),还是在响应时间(response time)上做优化?
- scale "out" 还是 "up"?
- 是否需要事务支持?
在online or offline的选择上,online查询更加注重响应速度,而offline分析则更加注重吞吐量。通常意义来说,online查询更加难以优化。我们上面提到了,在图处理时,数据存取局部性较弱,很难普遍提高响应速度。
图上的并行处理 Parallel Processing of Graphs的更多相关文章
- 【ARL】Parallel Processing of Graphs
Graph 本次学术前沿讲座由邵斌老师主讲,标题已经揭示了主题:Graph.1.5h的talk,听完自觉意犹未尽.本来以为是一节自己没接触过的图形学的talk,没想到讲的很多内容都跟自己学过的很多东西 ...
- [讲座] Parallel Processing of Graphs
Graph 本次学术前沿讲座由邵斌老师主讲,标题已经揭示了主题:Graph.1.5h的talk,听完自觉意犹未尽.本来以为是一节自己没接触过的图形学的talk,没想到讲的很多内容都跟自己学过的很多东西 ...
- 论文解读《The Emerging Field of Signal Processing on Graphs》
感悟 看完图卷积一代.二代,深感图卷积的强大,刚开始接触图卷积的时候完全不懂为什么要使用拉普拉斯矩阵( $L=D-W$),主要是其背后的物理意义.通过借鉴前辈们的论文.博客.评论逐渐对图卷积有了一定的 ...
- Lorenzini:Laplacian与图上的黎曼-罗赫定理
前两天去听了一下搞代数几何的Dino Lorenzini在交大的两场讲座(“On Laplacian Of Graphs and Generalization”,“Riemann-Roch Theor ...
- 2021.11.14 CF1583E Moment of Bloom(LCA+图上构造)
2021.11.14 CF1583E Moment of Bloom(LCA+图上构造) https://www.luogu.com.cn/problem/CF1583E 题意: She does h ...
- yii2组件之多图上传插件FileInput的详细使用
作者:白狼 出处:http://www.manks.top/yii2_multiply_images.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
- [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上
将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上 原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件 文件名前加"[paint]" 安照通达信的画图文件和板 ...
- matlab 将多个盒图放在一张图上
1.boxplot 将多个盒图放在一张图上 x1 = normrnd(5,1,100,1)';x2 = normrnd(6,1,200,1)';X = [x1 x2];G = [zeros(size( ...
- ajax 异步插入图片到数据库(多图上传)
额 大概就这么个样子...截个图 点浏览 选择几张图片 选择完了 确定一下 然后插入数据库 同时在页面中显示插入的图片,代码 也没啥.看下 index.php <html><hea ...
随机推荐
- SQL语句及数据库优化
1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*Fro ...
- 18、git提交代码并将develop分支合并到master分支上
提交合并代码流程: git add .git commit -m ''git pushgit checkout mastergit merge develop //将develop 分支与master ...
- DMA初识
功能 DMA可以在CPU不干涉的情况下,进行数据的搬移.例如:通过DMA来获取摄像头输出的像素数据,而占用少量CPU资源. DMAMUX DMAMUX负责数据的路由:将触发源绑定到特定的DMA通道,当 ...
- Solr基础理论【排名检索、查准率、查全率】
一.排名检索 搜索引擎代表了基于查询,返回优先文档的一种方法.在关系型数据库的SQL查询中,表的一行要么匹配一个查询,要么不匹配,查询结果基于一列或多列排序.搜索引擎根据文档与查询匹配的程度为文档打分 ...
- SQL 乐色干货笔记
因为公司基本都是用存储过程所以本来写的干货基本都是存储过程的. SELECT TOP 1 Code,Invitation,Num,Typ FROM SignLog WITH(NOLOCK) WHERE ...
- jmeter使用小结
写这篇短文主要想详细介绍一下jmeter中取样器.逻辑控制器.前置处理器.后置处理器.定时器.配置元件等,可能看起来比较繁杂,其实里面很多操作是类似的,一篇总结和记录的博客: jmeter官方用户手册 ...
- 使用javac命令编译Servlet,并将其放入tomcat中运行
首先我在桌面上新建了一个txt文件,编辑内容(内容来自菜鸟教程)为: // 导入必需的 java 库 import java.io.*; import javax.servlet.*; import ...
- 《linux就该这么学》课堂笔记12 网卡配置、防火墙配置
1.网卡配置(四种方法,选其一即可,配置后须重启网络服务使其生效) 1)修改配置文件./etc/sysconfig/network-scripts/ifcfg-网卡名称 2)nmtui [RHEL7] ...
- 了解python-FAQ
python FAQ 参考: https://docs.python.org/zh-cn/3.7/faq/design.html#why-are-python-strings-immutable wh ...
- zabbix--监控MySQL性能
Zabbix 自带模板监控 MySQL 性能 通过自带的 Template DB MySQL 模板监控 MySQL 性能 具体步骤: 1)创建脚本存放目录并编辑脚本 # mkdir /etc/zabb ...