新一代分布式高性能图数据库的构建 - 沈游人杂的数据挖掘和机器学习场景 MPP Massively Parallel Processing 架构,大规模集群 分布式存储及并行计 算, Shared Nothing 模式支 持存储计算分离 高性能 基于 Rust 开发的分布式存储引 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 易用 AQL(Atlas Graph Query Language) ,类 SQL 的图查询 X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 - 多副本管理保证数据服务高可用 - 在线备份提供容灾保障 高速 易用 可靠 Why AtlasGraph 图数据库关键特性 - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图的优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 - 多副本管理保证数据服务高可用 - 在线备份提供容灾保障 高速 易用 可靠 Photo0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 区别在于,一个任务不一定对应一个线程 ,如果任务数量超过 CPU 最大的线程数, 会由 TBB 在用户层负责调度任务运行在 多个预先分配好的线程,而不是由操作系 统负责调度线程运行在多个物理核心。 封装好了: parallel_invoke 更好的例子 第 1 章:并行循环 时间复杂度( time-efficiency )与工作量复杂度( work-efficiency ) • 在“小学二年级”算法课里,我 个元素的映射,花了 2 秒 用电量: 4*2=8 度电 结论:并行映射的时间复杂度为 O(n/c) ,工作复杂度为 O(n) ,其中 c 是线程数量 封装好了: parallel_for 面向初学者: parallel_for 基于迭代器区间: parallel_for_each 二维区间上的 for 循环: blocked_range2d 三维区间上的 for 循环: blocked_range3d0 码力 | 116 页 | 15.85 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 CFD 仿真、深度学习编程人 员 第 std::unordered_map 不支持 omp parallel for 遍历…… tbb::concurrent_unordered_map 可以 tbb::parallel_for 为了支持 std::unordered_map 先把要遍历的坐标和块 指针放到一个数组里,然后再对这个平坦的数组遍历。 指针数组的话,本来就是平坦的二维数组,直接 用 omp parallel for collapse(2) 遍历二维区间。 github@archibate ) 录播: https://space.bilibili.com/ 263032155 课件: https://github.com/parallel101/ course 作业: https://github.com/parallel101/ hw10 作业还在准备中,等做完了会在动态中放出!0 码力 | 102 页 | 9.50 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南现代 CMake 模块化项目管理指南 彭于斌( @archibate ) 课件 & 源码: https://github.com/parallel101/course 往期录播: https://space.bilibili.com/263032155 找不到头文 件怎么办呀 CMake Cookbook 小彭老师建议 : ~~-·~·~-·~ -~·-·~·- 第一章:文件 / include) • 源码文件中写: • #include < 项目名 / 模块名 .h> • 项目名 :: 函数名 (); 完整案例请看源码仓库: https://github.com/parallel101/course/tree/master/16/00 推荐的目录组织方式 • 头文件(项目名 /include/ 项目名 / 模块名 .h )中写: • #pragma once • void 函数名 () { 函数实现 } • } 完整案例请看源码仓库: https://github.com/parallel101/course/tree/master/16/00 推荐的目录组织方式 完整案例请看源码仓库: https://github.com/parallel101/course/tree/master/16/00 一、划分子项目 • 大型的项目,往往会划分为几个子项目。0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理彭于斌( github@archibate ) 往期录播: https://space.bilibili.com/263032155 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 bing.com 。(不要用 baidu.com ,那个是搜广告用的) • 如果感兴趣,我可以增添一节专门讲动态多态。 回家作业! • 已经发布到: https://github.com/parallel101/hw02 • 仓库的 README.md 里有详细的作业要求和说明。请按要求修改其中的代码,使得双向 链表类 List 的拷贝构造函数能正常工作,且内存能够安全释放。 • 通过 pull github@archibate ) 录播: https://space.bilibili.com/ 263032155 课件: https://github.com/parallel101/ course 作业: https://github.com/parallel101/ hw020 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 前置条件 • 学过 C/C++ 语言编程。 • 理解 malloc/free 之类的概念。 • 熟悉 STL 中的容器、函数模板等。 • 英伟达 GTX900 及以上显卡。 • 无论调用者指定了多少个线程 ( blockDim ),都能自动根据给定的 n 区间循环,不会越界,也不会漏掉几个元 素。 • 这样一个 for 循环非常符合 CPU 上常见 的 parallel for 的习惯,又能自动匹配不同 的 blockDim ,看起来非常方便。 从线程到板块 • 核函数内部,用之前说到的 blockDim.x + blockIdx.x + threadIdx blockDim ),总共多少板块( gridDim )。 都能自动根据给定的 n 区间循环,不会越界 ,也不会漏掉几个元素。 • 这样一个 for 循环非常符合 CPU 上常见的 parallel for 的习惯,又能自动匹配不同的 blockDim 和 gridDim ,看起来非常方便。 本方法出自英伟达官方博客: https://developer.nvidia.com/bl0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 github@archibate ) 录播: https://space.bilibili.com/ 263032155 课件: https://github.com/parallel101/ course 作业: https://github.com/parallel101/ hw04 作业还在准备中,等做完了会在动态中放出!0 码力 | 108 页 | 9.47 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 github@archibate ) 录播: https://space.bilibili.com/ 263032155 课件: https://github.com/parallel101/ course 作业: https://github.com/parallel101/ hw03 作业还在准备中,等做完了会在动态中放出!0 码力 | 82 页 | 12.15 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 05 C++11 开始的多线程编程@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 github@archibate ) 录播: https://space.bilibili.com/ 263032155 课件: https://github.com/parallel101/ course 作业: https://github.com/parallel101/ hw05 作业还在准备中,等做完了会在动态中放出!0 码力 | 79 页 | 14.11 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化@archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 为什么往 int 数组里赋值 1 比赋值 0 慢一倍? 第 1 章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 的内存更快,不过价格可能还是翻倍的。 • 系统会自动在两者之间均匀分配内存,保证读写均匀分配 到两个内存上,实现内存的并行读写,这和磁盘 RAID 有 一定相似之处。 验证一下刚刚的 parallel_add 是不是用足了全部带宽 • 刚刚 a 数组的大小是 1024 MB 。 • 因为不光读取了 a ,计算完还写回了 a ,实际搬运 了 2048 MB 的数据。 • 花费了 0.0656 性能优化过山车:建议改成现代桃花源记 • 初极狭,才通人。复行数十步,豁然开朗。 • 总之,现在和没优化的 x_blur 差不多快了,应该算是优化完了。 测试 源码在: github.com/parallel101/course/blob/master/07/07_stencil/03 测试 两步走的高斯模糊 两步走的箱型滤波 黑边是因为我们 ndarray 采用的 ghost cell 避免越界,可以手动填充一下这些0 码力 | 147 页 | 18.88 MB | 1 年前3
共 28 条
- 1
- 2
- 3













