Rust并行编译的挑战与突破TECHNOLOGY CONFERENCE # OPEN SOURCE, INTO THE FUTURE # Rust并行编译的挑战与突破 李原 2022年5月28日 ## 目录 - 相关浅谈 - Rust并行编译的挑战与突破 - 从并行编译到并行程序设计 - Rust社区与并行编译  Rust社区编译器性能工作组 ## 并行编译或成下一代编译效率突破利器Primary benchmarks 1 Benchmar [Image](/uploads/documents/4/a/8/b/4a8bb6fe19e141c71c8eb7726070bfef/p5_4.jpg) ## 更多更好的并行化? ## Rust编译器并行化 Cargo多crate并行  0 码力 | 25 页 | 4.60 MB | 2 年前3
通过Oracle 并行处理集成 Hadoop 数据Oracle 白皮书 2011年1月 通过 Oracle 并行处理集成 Hadoop 数据 ## 引言 许多垂直行业都在关注文件系统中庞大的数据。这些数据中通常包含大量无关的明细信息,以及部分可用于趋势分析或丰富其他数据的精华信息。尽管这些数据存储在数据库之外,但一些客户仍然希望将其与数据库中的数据整合在一起以提取对业务用户有价值的信息。 本文详细介绍了如何从 Oracle 数据库访问存储在 通过外部表进行访问 在图 1 中,我们利用 Oracle Database 11g 实现本文所述的数据库内的 mapreduce。通常情况下,Oracle Database 11g 中的并行执行框架足以满足针对外部表大多数的并行操作。 在有些情况下(例如,如果 FUSE 不可用),外部表方法可能不适用。Oracle 表函数提供了从 Hadoop 中获取数据的替代方法。本文附带的示例展示了一种这样的方法。 将数据排入一个公共队列,而表函数则从该队列中取出数据。由于该表函数能够并行运行,因此使用额外的逻辑来确保仅有一个服务进程提交外部作业。  图 2. 利用表函数进行并行处理 由于表函数可以并行运行,Hadoop 流作业也可以不同程度地并行运行,并且后者不受 Oracle 查0 码力 | 21 页 | 1.03 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅3.jpg)  # TBB 开启的并行编程之旅 by 彭于斌 (@archibate) 往期录播:https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码:https://github [Image](/uploads/documents/1/0/0/5/10051dd97d247e9f7a97909b93f2890b/p1_8.jpg) ## 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++,后半段主要介绍并行编程与优化。 1. 课程安排与开发环境搭建:cmake 与 git 入门 2. 现代 C++ 入门:常用 STL 容器,RAII 内存管理 3. 编译器如何自动优化:从汇编角度看 C++ 5. C++11 起的多线程编程:从 mutex 到无锁并行 6. 并行编程常用框架:OpenMP 与 Intel TBB 7. 被忽视的访存优化:内存带宽与 cpu 缓存机制 8. GPU 专题:wrap 调度,共享内存,barrier 9. 并行算法实战:reduce,scan,矩阵乘法等 10. 存储大规模三维数据的关键:稀疏数据结构 110 码力 | 116 页 | 15.85 MB | 2 年前3
在 JavaScript 中的并行语言特性-周爱民## 在JavaScript中的 并行语言特性 周爱民 @aimingoo https://github.io/aimingoo 上海南潮信息科技有限公司/ruff.io 全球技术领导力峰会 # 500+高端科技领导者与你一起探讨 技术、管理与商业那些事儿 2019年6月14–15日 上海圣诺亚皇冠假日酒店   并行 promise.then() 结构化 .catch .finally top level await 函数式 async/await for await..of async* [Image](/uploads/documents/9/1/3/f/913f07cec8e87d6a2f1136aaefd2e432/p39_1.jpg) → Promise并行方法的实现 → 在ES2017及其之后的扩展 多线程环境下的并行与并发 → 分布式环境下的应用 ## 极客邦科技 会议推荐2019  “现在”的数据 —— OLTP “过去”的数据 执行查询计划及数据存储管理 外部数据源并行装载或导出  ## greenplum体系架构 ## greenplum的体系结构 ## • greenplum的架构特点 MPP ShareNothing 海量并行处理+完全无共享 ➢ cpu计算能力 避免直接在Greenplum执行消耗session会话的操作 ➢ 尽量不创建索引 ## • 上线与调度规范 上线的程序,必须要经过测试,才可以生产使用 调度程序需考虑每个任务的前后关系,时间富裕 避免因为过于追求并行度,对多个任务造成相互影响 一 数据仓库体系架构 二 Greenplum体系架构 三 Greenplum现状说明 四 Greenplum运维体系 五 Greenplum开发规范0 码力 | 43 页 | 9.66 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器0 码力 | 90 页 | 8.76 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南build 目录 • 切换到 build 目录 • 在 build 目录运行 cmake < 源码目录> 生成 Makefile - 执行本地的构建系统 make 真正开始构建(4 进程并行) - 让本地的构建系统执行安装步骤 回到源码目录 ## 现代 CMake 提供了更方便的 -B 和 --build 指令,不同平台,统一命令! • cmake -B build // 在源码目录用0 码力 | 166 页 | 6.54 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程3\gg> $ 试试看。 你会看到 Hello, world! 打印了三遍! - 原来,三重尖括号里的第二个参数决定着启动 kernel 时所用 GPU 的线程数量。 - GPU 是为并行而生的,可以开启很大数量的线程,用于处理大吞吐量的数据。  :并行的最小单位 • 板块 (block) : 包含若干个线程 • 网格 (grid):指整个任务,包含若干个板块 • 从属关系:线程 < 板块 < 网格 • 调用语法:<<0 码力 | 142 页 | 13.52 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化## cpu-bound 与 memory-bound - 通常来说,并行只能加速计算的部分,不能加速内存读写的部分。 - 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并行没有加速效果。称为内存瓶颈(memory-bound)。 - 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的循环体,并行才有较好的加速效果。称为计算瓶颈(cpu-bound)。 |Ben } } BENCHMARK(BM_parallel_sine); ## 浮点加法的计算量 - 冷知识:并行地给浮点数组每个元素做一次加法反而更慢。 因为一次浮点加法的计算量和访存的超高延迟相比实在太少了。 • 计算太简单,数据量又大,并行只带来了多线程调度的额外开销。 • 小彭老师经验公式:1 次浮点读写 ☐ 8 次浮点加法 - 如果矢量化成功(SSE):1 次浮点读写 invalidation)|10K - 1M| |Disk read|400K+| ## 多少计算量才算多? - 看右边的 func,够复杂了吧?也只是勉勉强强超过一点内存的延迟了,但在 6 个物理核心上并行加速后,还是变成 mem-bound 了。 • 加速比:1.36 倍 • 应该达到 6 倍(物理核心数量)才算理想加速比。 |Benchmark|Time|CPU|Iterations| |---|---|---|---|0 码力 | 147 页 | 18.88 MB | 2 年前3共 498 条- 1
- 2
- 3
- 4
- 5
- 6
- 50













