新一代分布式高性能图数据库的构建 - 沈游人新一代分布式高性能图数据库的构建 北京海致星图科技有限公司 2023-06-18 沈游人 数据库与大数据专场 海致简介—企业级知识图谱开创者 专业顶尖技术团队支撑 超 700 人团队,其中 80% 为技术人员,创始团队在完成全球第一个中文知 识图谱网站研发后,探索知识图谱技术在企业领域的应用。 2021 年,海致院 士专家工作站成立,站内清华大学计算机博士生占比达 90% 以上。 专注于数据智能技术赋能中国数字经济发展 海致高性能图计算院士专家工作站 郑纬民 - 海致科技首席科学家 中国工程院院士、清华大学计算机科学与技术系教 授、中国计算机学会前理事长,中国计算机系统结构 的学科带头人,我国高性能计算和存储系统等方面的 泰斗和先行者。 2021 年 3 月 25 日,海致科技与清华大学计算机科学与技术系共同建设高性能图计算院士专家工作站 。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 AtlasGraph ,培育世界级的图计算软硬件 生态体系,保持对全球科技竞争的战略均衡。 海致高性能图计算院士专家工作站 海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” CCF 科学技术奖被认为是计算机科学与技术领域最具影响力的专业奖项之一,0 码力 | 38 页 | 24.68 MB | 1 年前3
Rust 语言学习笔记1.2.2 引用外部文件模块 ................................................................ 11 1.2.3 多文件模块的层级关系 .......................................................... 12 1.2.4 module 路径 .................. 最主要原因是: 1.Rust 的模块支持层级结构,但这种层级结构本身与文件系统目录的层级结构 是解耦的。 因为 Rust 本身可用于操作系统的开发。 开发者需要自己去定义路径,定义 mod 的层级关系,配合 rust 的默认约定。这 点和 java,go 开发完全不同,在面向 vm 的语言中这些都不需要考虑。 2.Rust 的包管理系统中使用了大量的默认约定,很容易使人头昏脑乱。 而在开 多文件模块的层级关系 Rust 的模块支持层级结构,但这种层级结构本身与文件系统目录的层级结构是 解耦的。 mod xxx; 这个 xxx 不能包含::号。也即在这个表达形式中,是没法引用多层结 构下的模块的。也即,你不可能直接使用 mod a::b::c::d;的形式来引用 a/b/c/d.rs 这个模块。 换句话说,必须依靠 rust 的默认约定去由开发去建立层级关系。rust 的层级0 码力 | 117 页 | 2.24 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 . . . . . . . . . . . . . . . . . 192 第 9 章 图 194 9.1 图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 9.2 图的基础操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 9.3 图的遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 . . . . . . . . . . . . . . . . . 192 第 9 章 图 194 9.1 图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 9.2 图的基础操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 9.3 图的遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版. . . . . . . . . . . . . . . . . 191 第 9 章 图 193 9.1 图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 9.2 图的基础操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 9.3 图的遍历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0不再有效 示例 4-1:一个变量和其有效的作用域 换句话说,这里有两个重要的时间点: • 当 s 进入作用域时,它就是有效的。 • 这一直持续到它离开作用域为止。 目前为止,变量是否有效与作用域的关系跟其他编程语言是类似的。现在我们在此基础上介绍 String 类型。 69/562Rust 程序设计语言 简体中文版 String 类型 为了演示所有权的规则,我们需要一个比第三章 “数据类型” 在栈上。右侧则是堆 上存放内容的内存部分。 s1 name value ptr len 5 capacity 5 indexvalue 0 h 1 e 2 l 3 l 4 o 图 4-1:将值 "hello" 绑定给 s1 的 String 在内存中的表现形式 长度表示 String 的内容当前使用了多少字节的内存。容量是 String 从分配器总共获取了多少 字节的内存。 ptr len 5 capacity 5 indexvalue 0 h 1 e 2 l 3 l 4 o s2 name value ptr len 5 capacity 5 图 4-2:变量 s2 的内存表现,它有一份 s1 指针、长度和容量的拷贝 这个表现形式看起来并不像图 4-3 中的那样,如果 Rust 也拷贝了堆上的数据,那么内存看起 来就是这样的。如果 Rust0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版示例 4-1:一个变量和其有效的作用域 换句话说,这里有两个重要的时间点: • 当 s 进入作用域 时,它就是有效的。 • 这一直持续到它 离开作用域 为止。 目前为止,变量是否有效与作用域的关系跟其他编程语言是类似的。现在我们在此基础上介绍 String 类型。 String 类型 为了演示所有权的规则,我们需要一个比第三章 “数据类型” 中讲到的都要复杂的数据类型。 前面介绍的类 以了解 String 的底层会发生什么。String 由三部分组成,如图左侧所示:一个 指向存放字符串内容内存的指针,一个长度,和一个容量。这一组数据存储在栈上。右侧则是 堆上存放内容的内存部分。 图 4-1:将值 "hello" 绑定给 s1 的 String 在内存中的表现形式 76/600 Rust 程序设计语言 简体中文版 长度表示 String 的内容当前使用了多少字节的内存。容量是 4-2 所 示。 图 4-2:变量 s2 的内存表现,它有一份 s1 指针、长度和容量的拷贝 这个表现形式看起来 并不像 图 4-3 中的那样,如果 Rust 也拷贝了堆上的数据,那么内存看起 来就是这样的。如果 Rust 这么做了,那么操作 s2 = s1 在堆上数据比较大的时候会对运行时 性能造成非常大的影响。 77/600 Rust 程序设计语言 简体中文版 图 4-3:另一个 s20 码力 | 600 页 | 12.99 MB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究准确性:应采用路径敏感的指针分析算法,避免过多误报 ▪ 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ❑ 整体思路:基于编译过程中的生成的MIR进行静态分析 ▪ 路径提取:控制流图=>生成树 ▪ 别名分析:分析指针之间的关联关系 ▪ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取 别名分析 模式识别 “SafeDrop: Detecting memory deallocation bugs analysis.” TOSEM, 2022. 路径提取 ❑ 规律:同一个强联通分量(SCC)的may alias关系一般存在上界 ▪ 方法:基于tarjan算法进行SCC检测 => 生成树 ▪ 对SCC出口处的alias关系统一取上界 ❑ 特殊情况特殊处理 路径提取 别名分析 模式识别 控制流图 生成树 别名分析 ❑ 主要规则: 路径提取 别名分析 模式识别 过程间分析 近似处理multi-level0 码力 | 28 页 | 1.55 MB | 1 年前3
Rust算法教程 The Algos (algorithms)The Algos (algorithms) https://algo.course.rs/print.html 113/270 动态规划 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分 治)的⽅式去解决。 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若⼲个 ⼦问题(阶段),按顺序求解⼦阶段,前⼀⼦问题的解,为后⼀⼦问题的求解提供了有⽤的信息。 (algorithms) https://algo.course.rs/print.html 220/270 数据结构 数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系的数据 元素的集合。通常情况下,精⼼选择的数据结构可以带来更⾼的运⾏或者存储效率。数据结构往往 同⾼效的检索算法和索引技术有关 在计算机科学的发展过程中,数据结构也随之发展。程序设计中常⽤的数据结构包括如下⼏个。 ⼀个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有⼀个前驱结点,⽽且 可以有两个后继结点,m≥0。 6. 图(Graph) 图是另⼀种⾮线性数据结构。在图结构中,数据结点⼀般称为顶点,⽽边是顶点 的有序偶对。如果两个顶点之间存在⼀条边,那么就表示这两个顶点具有相邻关系。 7.堆(Heap) 堆是⼀种特殊的树形数据结构,⼀般讨论的堆都是⼆叉堆。堆的特点是根结点的值是 所有结点中最⼩的0 码力 | 270 页 | 8.46 MB | 1 年前3
Rust并行编译的挑战与突破WorkerLocal • 线程级缓存 用优秀的设计消减数据同步代价 读写分离 限制作用范围 COPY-WRITE机制 优化并行粒度 任务粒度与并行效率的关系 rayon库中的粒度控制函数 死锁的检测和处理 基于rayon线程池的自动触发式死锁检测 通过有向图环路检测移除死锁 Rust社区与并行编译 Rust社区与并行编译 18年1月由编译器团队成员提出 成立社区工作组 陷入技术阻塞,人员逐渐流失0 码力 | 25 页 | 4.60 MB | 1 年前3
共 23 条
- 1
- 2
- 3













