新一代分布式高性能图数据库的构建 - 沈游人
新一代分布式高性能图数据库的构建 北京海致星图科技有限公司 2023-06-18 沈游人 数据库与大数据专场 海致简介—企业级知识图谱开创者 专业顶尖技术团队支撑 超 700 人团队,其中 80% 为技术人员,创始团队在完成全球第一个中文知 识图谱网站研发后,探索知识图谱技术在企业领域的应用。 2021 年,海致院 士专家工作站成立,站内清华大学计算机博士生占比达 90% 以上。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 AtlasGraph ,培育世界级的图计算软硬件 生态体系,保持对全球科技竞争的战略均衡。 海致高性能图计算院士专家工作站 海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” CCF 度高,研制难度大,创新性强,项目成果整体达到国际先进水平, 其中异质图建模与表示学习技术和超大规模图学习系统处于国际领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数0 码力 | 38 页 | 24.68 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器
由浅入深学习 map 容器 by 彭于斌( @archibate ) 我负责监督你鞋习 ! 我负责监督你鞋习 ! 本期看点: 用方括号 [ ] 取出 map 元素居然是错误的! 能不能在遍历的同时删除元素?安全吗? emplace , emplace_hint , try_emplace 的区别? 课程安排 1. vector 容器初体验 & 迭代器入门 (BV1qF411T7sd) 2 char * 的爱恨纠葛 (BV1ja411M7Di) 4. 万能的 map 容器全家桶及其妙用举例 ( 本期 ) 5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 STL 算法库 7. C++ 标准输入输出流 & 字符串格式化 8. traits 技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 10. C++ 异常处理机制的前世今生 • vectora = { 1, 4, 2, 8, 5, 7 }; • std::find(a.begin(), a.end(), 5); • 这个 std::find 就是标准库帮我们实现的线性数组中查找元素的算法,让我们用动画演示一 下他的工作原理吧。 1 4 2 8 5 7 内存 地址 a a+1 a+2 a+3 a+4 a+5 vector 查找为什么低效 • 0 码力 | 90 页 | 8.76 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器
C++ 标准库系列课 - 你所不知道的 set 容 器 by 小彭老师( @archibate ) 课件 & 代码: https://github.com/parallel101/course 上期回顾: https://www.bilibili.com/video/BV1qF411T7sd 课程安排 1. vector 容器初体验 & 迭代器入门 (BV1qF411T7sd) 2. 你所不知道的 string , string_view , const char * 的爱恨纠葛 4. 万能的 map 容器全家桶及其妙用举例 5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 STL 算法库 7. C++ 标准输入输出流 & 字符串格式化 8. traits 技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 set 和 vector 的区别 拟出来的 + n 复杂度为 O(n) 。虽然低效,但至少可 以用了。 std::next 等价于 + • 但是这样手写三个 ++ 太麻烦了 ,而且是就地操作,会改变迭代 器本身。 • 因此标准库提供了 std::next 函 数,他的内部实现相当于这样: • 没错,他会自动判断迭代器是否 支持 + 运算,如果不支持,会 改为比较低效的调用 n 次 ++ 。 std::advance 等价于0 码力 | 83 页 | 10.23 MB | 1 年前3夏歌-使用Rust构建LLM应用
Python 与 Docker Rust 与 WebAssembly 为什么要用 Rust ? Rewrite it in Rust Rust 太难学! 为什么不用 Rust ? 学习曲线太陡峭了,学习周期太长了 招 Rust 开发太难了 Low code Rust Rust 在系统编程已经取得了巨大成功 培养更广泛的 Rust 开发 围绕 LLM 生态封装相应的 Rust 框 Discord 、向量数据库比如 qdront 。 • 整个 serverless 平台是为 Rust 和 WebAssembly 设计的 视频演示如何使用 serverless 的方式部署 一个 PR review 机器人。 待插入视频,大概是 2 分钟的录屏 Talk is cheap, show me the code! • Telegram ChatGPT 机器 人 • PR Review Review 机器人 使用 Rust 构建基于 ChatGPT 的 Telegram 机器人 1. 通过不同的 prompt 扮演不同的角色,并且拥有短期记忆 2. Chat with images 3. Chat with text 这个机器人可以: 使用 Rust 构建基于 ChatGPT 的 Telegram 机器人 "0.1.0" 基于 ChatGPT 的 Telegram 机器人 Cargo0 码力 | 36 页 | 38.31 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型
https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 CFD 仿真、深度学习编程人 员 第 0 章:稀疏矩阵 稠密数组存储矩阵 用 foreach 包装一下枚举的过程 改用 map 来存储 分离 read/write/create 三种访问模式 foreach 直接给出当前坐标指向的值 封装起来,方便多层解耦 封装起来,方便多层解耦 • 这样就封装好了,通过模板的方式实现了 自定义的稀疏数据结构: • hash().pointer(11).dense(8) 开源的体素处理库: OpenVDB • OpenVDB 的稀疏体积,可以存储符号距 离场 (SDF) ,也可以存储烟雾仿真的结果 等。 • 据张心欣说, OpenVDB 赢得了奥斯卡奖 。 • 因为他经常用在影视特效中,主要是符号 bits |= 1 << n; • 可以设置 bits 的第 n 位为 1 。 • bits |= 0 << n; • 则没有任何改变。 std::vector:标准库帮你实现好了 • 其实标准库的 vector 是一个特化的版本 ,他会自动像刚刚说的把值看做 1bit ,然后八个 合并成一个 int8_t 。 • 不过效率比我们手写的低很多…… 不推荐使用 0 码力 | 102 页 | 9.50 MB | 1 年前3Zadig 面向开发者的云原生 DevOps 平台
Jenkins 、 Tekton 、 Argo 等 搭建流程串接胶水平台 建设成本高 500-2000 万之间 使用和学习门槛高;随业务发展扩展性差 局限性大,内部推广难度极高,做完后维 护成本高价值难被证明 低采购成本、低实施成本, 内置模板库和最佳实践;高扩展性、技术先进性强 ,可灵活广泛接入现有工具链和业务场景 基于代码管理的 DevOps 方 案 Gitee Zadig 产品特性 Zadig 核心特性 面向开发者的云原生环境 灵活易用的高并发工作流 高效协同的测试管理 云原生 IDE 插件( VS CODE) 客观精准的效能洞察 强大免运维的模版库 • 自动生成面向开发、测试、运维角 色的工作流 • 多个微服务并行构建、部署、测 试,代码验证效率 UP • 自定义工作流,灵活编排发布、自 主开发和对接企业内部流程和系统 扫码查看飞书主干开发最佳实践 高效协同的测试管理 • 一套 YAML/Chart 模板管理数百微服务 • 每个技术栈抽象一套构建模板 • 运维统一工作流规范,开发自主使用 • 跨多项目复用模板 扫码查看易快报案例 强大免运维的模板库 • 系统纬度:集群、项目、服务、环境、工作流 • 项目纬度:构建、测试、部署, DevOps 指标 • 迭代纬度:需求到发布效率、质量分析 • 效能度量:耗时分析、通过率统计、趋势分析 客观精准的效能洞察0 码力 | 59 页 | 81.43 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化
• 其中 r8 到 r15 是 64 位 x86 新增的寄存器,给了汇编程序员更大的空间,降低了编译 器处理寄存器翻车( register spill )的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 8 位, 16 位, 32 位, 64 位版本 al, ax, eax, rax r15b, r15w, r15d, r15 AT&T 汇编语言 以他用了。不过注意这样编译出的程序,可能 放到别人不支持 AVX 的电脑上没法运行。 数组清零:自动调用标准库的 memset memcpy 同理,不必为了高效,手动改 写成对 memcpy/memset 的调用,影响 可读性。编译器会自动分析你是在做拷贝 或是清零,并优化成对标准库这俩的调用 。 从 0 到 1024 填充: SIMD 加速 paddd :四个 int 的加法 movdqa 指向同一个对象,而 Rust 从语法层面禁止,从而让编译器放心大胆 优化。 为什么标准委员会不改进一下?因为一旦放弃 兼容,就等于抛弃所有历史遗产的全新语言, 就和 Rust 无异,从而没有任何理由再学习 C++ 。 std::vector :也能实现 SOA ! 优化前 (AOS) 优化后 (SOA) 不过,请保证 x, y, z 三个 vector 是同样大小! 第 8 章:数学运算0 码力 | 108 页 | 9.47 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起
编译器,是一个根据源代码生成机器码的程序。 • > g++ main.cpp -o a.out • 该命令会调用编译器程序 g++ ,让他读取 main.cpp 中的字符串(称为源码),并根据 C+ + 标准生成相应的机器指令码,输出到 a.out 这个文件中,(称为可执行文件)。 • > ./a.out • 之后执行该命令,操作系统会读取刚刚生成的可执行文件,从而执行其中编译成机器码, 调用系统提供的 为什么需要库( library ) • 有时候我们会有多个可执行文件,他们之间用到的某些功能是相同的,我们想把这些共用 的功能做成一个库,方便大家一起共享。 • 库中的函数可以被可执行文件调用,也可以被其他库文件调用。 • 库文件又分为静态库文件和动态库文件。 • 其中静态库相当于直接把代码插入到生成的可执行文件中,会导致体积变大,但是只需要 一个文件即可运行。 • 而动态库则只在生成 CMake 中的静态库与动态库 • CMake 除了 add_executable 可以生成可执行文件外,还可以通过 add_library 生成库 文件。 • add_library 的语法与 add_executable 大致相同,除了他需要指定是动态库还是静态库: • add_library(test STATIC source1.cpp source2.cpp) # 生成静态库 libtest0 码力 | 32 页 | 11.40 MB | 1 年前3Rust与算法 - 谢波
算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 / 个人项目实践 学习中总结探索 2015 年发布,很多人近几年才知道 Rust , Rust 中国 中国大会第十届 Rust 处于起步阶段 中文圈学习资料或书籍少,有部分是翻译国外产品,能 不能中国人向国外输出作品 Rust 缺少学习资源 Rust 未来大有可为 Rust 在操作系统,数据库,各种框架和工具上应用范围 广 写作动机 当情况不明时,抱着一个纯粹的目标干事就行了,其他 的留给时间检验。不懂就学,技术写作更像一种共创, 要反复总结和修改 ( 费曼学习法 ) 。 写作本书给我的启示 基础、排序、查找、树、图 + 1; • V+E = 32 • 2E – F + 2 = 32 总结及学习资源 • 算法总结 • 学习资源 总结及学习资源 Rust 算法总结 • 复杂度分析及算法优化 • 别自己实现,用标准库 • 利用 Rust 特性实现高效算法 • 技术在进步,用新工具辅助学习 Rust 学习资源 # 社区/公众号 社区: Rust 语言中文社区、乐酷 Rust 技术论坛 公号:觉学社、0 码力 | 28 页 | 3.52 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
com/parallel101/course 为什么要学习现代 CMake ? • 现代 CMake 指的是 CMake 3.x 。 • 古代 CMake 指的是 CMake 2.x 。 • 通过互联网和学校课程,许多人认识的 CMake 都是古代 CMake 。 • 现代 CMake 和古代 CMake 相比,使用 更方便,功能更强大。 为什么要学习现代 CMake ? 现代 CMake gmake 。 对于 VS 7 , 它被设置为 devenv. 对于 Nmake 构建文件,它的值为 nmake 。 • CMAKE_DL_LIBS: 包含 dlopen 和 dlclose 的库的名称。 • CMAKE_COMMAND: 指向 cmake 可执行程序的全路径。 • CMAKE_CTEST_COMMAND: 指向 ctest 可执行程序的全路径。 • CMAKE_EDIT_COMMAND: 第 3 章:链接库文件 main.cpp 调用 mylib.cpp 里的 say_hello 函数 改进: mylib 作为一个静态库 改进: mylib 作为一个动态库 改进: mylib 作为一个对象库 https://www.scivision.dev/cmake-object-libraries/ 对象库类似于静态库,但不生成 .a 文件,只由 CMake 记住该库生成了哪些对象文件0 码力 | 166 页 | 6.54 MB | 1 年前3
共 31 条
- 1
- 2
- 3
- 4