Rust并行编译的挑战与突破Rust并行编译的挑战与突破 李原 2022年5月28日 • 相关浅谈 • Rust并行编译的挑战与突破 • 从并行编译到并行程序设计 • Rust社区与并行编译 目录 相关浅谈 Rust编译速度之殇 编译器设计造成编译速度缓慢 · 单态化 · 借用检查 · 宏展开 · MIR优化 ... Rust规模编译速度慢于C++ Rust编译速度之殇 提升编译效率成为近年社区重点工作 提升编译效率成为近年社区重点工作 并行编译或成下一代编译效率突破利器 2017-2021,Rust编译速度已提升一倍以上 Rust社区编译器性能工作组 Rust编译器并行化 Cargo多crate并行 二进制生成并行 更多更好的并行化? Rust编译器架构 语法树生成 宏展开 命名解析 泛型解析 类型检查 借用检查 单态化 二进制生成 增量编译系统 底层数据 结构 Rust语言编译器结构总览 考虑内部编译流程并行化 考虑内部编译流程并行化 Rust并行并发 编译时线程安全检查 一些常见线程安全数据结构 常用Rust并行并发库 Rust并行并发 增加程序复杂度 线程安全数据结构造成效率损失 Mutex与RwLock rustc profileing 数据 · 代码复杂度及健壮性 · benchmark资源限制 · profileing成本 ... 收益 > 代价? Rust并行编译的挑战与突破0 码力 | 25 页 | 4.60 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索第三届中国Rust开发者大会 KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 Agenda 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 01 KusionStack 与 KCL KusionStack是什么? KusionStack架构 KCL KusionStack 是什么? Language Server KCL Compiler KCL Package Manager 02 用 Rust 重写 KCL Python 代码翻译 栈式虚拟机 Rust 编译器 KCL 编译器架构升级 Source Code AST LLVM IR Native/WASM Source Code AST Bit code VM Source Code Python IDE:用户体验提升 源于 Rust 强大的编译检查和错误 处理方式, 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github0 码力 | 25 页 | 3.50 MB | 1 年前3
通过SSA的解释执行窥探Golang编译之一角通过SSA的解释执行窥探Golang编译之一角 丁尔男 武汉航天远景 产品总监 凹语言 联合发起人 PLOC 联合发起人 目 录 Golang 编译流程简介 01 SSA 解释执行 02 基于 SSA 的应用 03 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 1 + 2 * 3 *ast.BinaryExpr (+) *ast.BasicLit 1 : INT *ast.BinaryExpr (*) *ast.BasicLit 2 : INT * ast.BasicLit 3 : INT Golang 编译流程简介 01-AST Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 语义分析,涉及的包: • go/types 功能: • 类型检查和推导,如: v := "a" + 1 • 确定标识符的引用关系,如: var g = 42 func main() { g := "Hello GoCN!" println(g) } Golang 编译流程简介0 码力 | 30 页 | 1.50 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化从汇编角度看编译器优化 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 新增的寄存器,给了汇编程序员更大的空间,降低了编译 器处理寄存器翻车( register spill )的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 8 位, 16 位, 32 位, 64 位版本 al, ax, eax, rax r15b, r15w, r15d, r15 AT&T 汇编语言 GCC 编译器所生成的汇编语言就属于这种 返回值:通过0 码力 | 108 页 | 9.47 MB | 1 年前3
ffmpeg翻译文档流的选择(指定) 5 选项 6 例子 7 语法 8 表达式计算/求值 9 OpenCL选项 10 编码选项 11 解码器 12 视频解码 13 音频解码 14 字幕解码 15 编码 16 音频编码器 17 视频编码器 18 字幕编码器 19 比特流滤镜(过滤器) 20 格式选项 21 分离器(解复用) 22 混合器 23 元数据 24 协议 25 设备选项 26 输入设备 输入设备 27 输出设备 28 重采样(resampler)选项 29 放缩选项 30 滤镜入门 31 graph2dot - 1 - 本文档使用 书栈(BookStack.CN) 构建 32 滤镜链图描述 33 时间线编辑 34 音频滤镜 35 音频源 36 音频槽 37 视频滤镜 38 视频源 39 视频槽 40 多媒体滤镜 41 多媒体源 42 参考 43 开发人员 3 详细说明 4 流的选择(指定) 5 选项 技巧/提示(原版已废弃) 6 例子 7 语法 8 表达式计算/求值 9 OpenCL选项 10 编码选项 11 解码器 12 视频解码 13 音频解码 14 字幕解码 15 编码 16 音频编码器 17 视频编码器 18 字幕编码器 19 比特流滤镜(过滤器) 20 格式选项 21 分离器(解复用) 22 混合器0 码力 | 502 页 | 3.06 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南自动调用本地的构建系统在 build 里构建,即: make -C build -j4 // 调用本地的构建系统执行 install 这个目标,即安 装 -D 选项:指定配置变量(又称缓存变量) • 可见 CMake 项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 • build 目录下生成本地构建系统能识别的项目文件( Makefile 或是 .sln ) • 第二步是 cmake --build build ,称为构建阶段( build ),这时才实际调用编译器来编译代码 • 在配置阶段可以通过 -D 设置缓存变量。第二次配置时,之前的 -D 添加仍然会被保留。 • cmake -B build -DCMAKE_INSTALL_PREFIX=/opt/openvdb-8 第二次配置时没有 -D 参数,但是之前的 -D 设置的变量都会被保留 • (此时缓存里仍有你之前定义的 CMAKE_BUILD_TYPE 和 CMAKE_INSTALL_PREFIX ) -G 选项:指定要用的生成器 • 众所周知, CMake 是一个跨平台的构建系统,可以从 CMakeLists.txt 生成不同类型的构建系 统(比如 Linux 的 make , Windows 的 MSBuild0 码力 | 166 页 | 6.54 MB | 1 年前3
FISCO BCOS 2.5.0 中文文档交易顺序串行执行的做法,基于DAG(有向无环图)并行执行交易,大幅提升性能;后者支持企业(节 点)将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。 多引擎是一系列功能特性的总括,比如预编译合约能够突破EVM的性能瓶颈,实现高性能合约;控制台 可以让用户快速掌握区块链使用技巧等。 上述功能特性均聚焦解决技术和体验的痛点,为开发、运维、治理和监管提供更多的工具支持,让系统 处理更快、容量更高,使应用运行环境更安全、更稳定。 0-rc2 FISCO BCOS 2.0.0-rc1 新 新 新增 增 增特 特 特性 性 性 • 群组架构 (操作教程) (设计文档) • 控制台 (安装) (操作手册) • 虚拟机 • 编译合约 (合约开发) • 实现CRUD操作的合约 (操作教程) • 密钥管理服务 (使用手册) • 准入控制 (设计文档) 变 变 变更 更 更描 描 描述 述 述、 、 、兼 兼 兼容 容 容及 更 更描 描 描述 述 述 新 新 新增 增 增 • 新增预编译合约,地址0x5,实现模指数运算 • 新增预编译合约,地址0x6,实现椭圆曲线alt_bn128的加法 • 新增预编译合约,地址0x7,实现椭圆曲线alt_bn128的乘法 • 新增预编译合约,地址0x8,实现椭圆曲线配对操作用于zkSNARK验证 • 新增预编译合约,地址0x9,实现blake2哈希函数 • 新增流控功能,实现可配置节点出带宽、最大QPS0 码力 | 540 页 | 8.77 MB | 1 年前3
FISCO BCOS 2.4.0 中文文档交易顺序串行执行的做法,基于DAG(有向无环图)并行执行交易,大幅提升性能;后者支持企业(节 点)将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。 多引擎是一系列功能特性的总括,比如预编译合约能够突破EVM的性能瓶颈,实现高性能合约;控制台 可以让用户快速掌握区块链使用技巧等。 上述功能特性均聚焦解决技术和体验的痛点,为开发、运维、治理和监管提供更多的工具支持,让系统 处理更快、容量更高,使应用运行环境更安全、更稳定。 0-rc2 FISCO BCOS 2.0.0-rc1 新 新 新增 增 增特 特 特性 性 性 • 群组架构 (操作教程) (设计文档) • 控制台 (安装) (操作手册) • 虚拟机 • 编译合约 (合约开发) • 实现CRUD操作的合约 (操作教程) • 密钥管理服务 (使用手册) • 准入控制 (设计文档) 变 变 变更 更 更描 描 描述 述 述、 、 、兼 兼 兼容 容 容及 分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用RocksDB • 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语句读写区块链数据 更 更 更新 新 新 • 完善ABI解码模块 • 修改预编译合约和RPC接口错误码,统一为负数 • 优化存储模块,增加缓存层,支持配置缓存大小 • 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity控制允许使用的内存 空间大小0 码力 | 470 页 | 7.45 MB | 1 年前3
Kotlin 官方文档中文版 v1.9平台间共享代码 接入平台相关 API 分层项目结构 Android 源代码集布局 添加依赖项 添加依赖项 添加 Android 依赖项 添加 iOS 依赖项 运行测试 构件编译项 配置编译项 构建最终原生二进制文件 多平台 Gradle DSL 参考 范例 FAQ 向团队介绍跨平台移动端开发 Kotlin 多平台兼容性指南 Kotlin 多平台移动端插件版本发布 反向兼容性 原生 Kotlin/Native 入门——在 IntelliJ IDEA 中 Kotlin/Native 入门——使用 Gradle Kotlin/Native 入门——使用命令行编译器 与 C 语言互操作 与 C 语言互操作性 映射来自 C 语言的原始数据类型——教程 映射来自 C 语言的结构与联合类型——教程 6 1.10.2.4.4 1.10.2.4.5 1 迁移到新版内存管理器 旧版内存管理器 不可变性与并发 并发概述 并发可变性 并发与协程 调试 Kotlin/Native 符号化 iOS 崩溃报告 参考与提示 目标平台支持 改进编译时间 许可证文件 Kotlin/Native FAQ WebAssembly(Wasm) 在 IntelliJ IDEA 中入门 Kotlin/Wasm 添加 Kotlin 库依赖 与 JavaScript0 码力 | 2049 页 | 45.06 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档开发第一个区块链应用 • 关键概念 • 区块链网络搭建 • 区块链应用开发 • FISCO BCOS Java SDK • 问题排查 • 整体架构 • 共识算法 • 交易并行 • 分布式存储 • 预编译合约 • 更多设计文档 • Github主页 • 深度解析系列文章 • 贡献代码 • 反馈问题 • 应用案例集 • 微信群 、公众号 平 平 平台 台 台介 介 介绍 绍 绍 1 FISCO 交易顺序串行执行的做法,基于DAG(有向无环图)并行执行交易,大幅提升性能;后者支持企业(节 点)将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。 多引擎是一系列功能特性的总括,比如预编译合约能够突破EVM的性能瓶颈,实现高性能合约;控制台 可以让用户快速掌握区块链使用技巧等。 上述功能特性均聚焦解决技术和体验的痛点,为开发、运维、治理和监管提供更多的工具支持,让系统 处理更快、容量更高,使应用运行环境更安全、更稳定。 发组 组 组件 件 件解 解 解决 决 决方 方 方案 案 案:一套开放、轻量的开发组件集,覆盖智能合约的开发、调试、 应用开发等环节,包含了Solidity智能合约开发工具库、 智能合约Gradle编译插件、应用开发脚手 架。 • ChainIDE:提供智能合约云端开发工具,帮助开发者节约边际成本,加速推送区块链应用落地。 • FISCO BCOS区 区 区块 块 块链 链 链工 工 工具 具0 码力 | 1422 页 | 91.91 MB | 1 年前3
共 373 条
- 1
- 2
- 3
- 4
- 5
- 6
- 38













