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
MySQL ZIP Archive版本安装说明ZIP Archive版本安装说明 1 系统环境 硬件 Surface Pro 4; 操作系统 Windows 10专业版 16299.19 64bit; MySQL MySQL Community Server 5.7.20,Windows (x86,64bit) ZIP Archive; MySQL安装路径 C:\MySQL,请视自己计算机情况选择安装目录。 2 软件下载 v.mysql.com/downloads/mysql/ 下载版本:Windows (x86, 64-bit), ZIP Archive,mysql-5.7.20-winx64.zip 3 软件安装 使用管理员权限打开命令提示符,步骤:开始菜单选择Windows系统 - 命令提示符 - 在其上点击右键选择 - 更多 - 以管 理员身份运行。 定位到C盘根目录,创建MySQL目录。 将所下载的MySQL软件压缩包mysql-5 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端⼝口 port = 3306 # 设置mysql的安装⽬目录 basedir=C:\MySQL\mysql-5.7.20-winx64 # 设置mysql数据库的数据的存放⽬目录 datadir=C:\MySQL\mysql-5.7.20-winx64\data0 码力 | 4 页 | 756.23 KB | 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
Cmake 实践管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools 之后,他们终于决定为 KDE4 选择一个新的工程构建工具,其根本原因用 KDE 开发者的话来 “ ” 说就是:只有少数几个 编译专家 能够掌握 KDE 现在的构建体系 (admin/Makefile.common),在经历了 unsermake, scons 以及 cmake 的选型和尝 试之后,KDE4 决定使用 cmake org/HTML/Copyright.html 2,跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。 3,能够管理大型项目,KDE4 就是最好的证明。 4,简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。 5,高效虑,按照 要高很多。 二,安装 cmake 还需要安装吗? cmake 目前已经成为各大 Linux 发行版提供的组件,比如 Everest 直接在系统中包含, Fedora 在 extra 仓库中提供,所以,需要自己动手安装的可能性很小。如果你使用的操 作系统(比如 Windows 或者某些 Linux 版本)没有提供 cmake 或者包含的版本较旧,建议 你直接从 cmake 官方网站下载安装。 http://www0 码力 | 47 页 | 264.27 KB | 1 年前3
FISCO BCOS 1.3 中文文档com/FISCO-BCOS/FISCO-BCOS.git 安装FISCO-BCOS 切换到FISCO-BCOS目录下,执行FISCO-BCOS安装脚本。脚本自动下载并安 装程序。 cd FISCO-BCOS && git checkout master-1.3 bash build.sh #若需要源码编译安装 使用 bash build.sh -b 检查是否安装成功 fisco-bcos --version returns(string){ return name; } function set(string n){ name=n; } } 编译、部署合约 直接使用deploy.js,自动编译和部署合约。 # 进入合约所在目录 cd /mydata/FISCO-BCOS/tools/contract babel-node deploy.js HelloWorld 交易结构修改:增加对web3sdk使用者透明的randomid和 blocklimit; 提供系统合约部署工具和系统合约使用工具 支持使用国密算法发交易 支持将智能合约代码转换成java代码 环境要求 SDK编译 配置文件 应用开发指南 SDK功能列表 FAQ 环境要求 重要 使用web3sdk前,请确保: FISCO BCOS节点环境搭建完成 参考 FISCO-BCOS入门 java版本符合要求0 码力 | 491 页 | 5.72 MB | 1 年前3
Go 入门指南(The way to Go)前言 原文出处:https://github.com/Unknwon/the-way-to-go_ZH_CN 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多 的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习 资源。本书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自 身在软件工程、编程语 程中开始经历大量的挫 折,在诸多问题上都不能给出令人满意的解决方案,尤其是在使用 C++ 来开发大型的服务端软件时,情 况更是不容乐观。由于二进制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同 时编程语言的设计思想也已经非常陈旧,这些情况都充分证明了现有的编程语言已不符合时下的生产环 境。尽管硬件在过去的几十年中有了飞速的发展,但人们依旧没有找到机会去改变 C++ 在软件开发的重 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发 环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 4、7、8 章), 控制结构(第 5 章),函数(第0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 构建 9.4 精密计算和 big 包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 9.8 自定义包的目录结构、go install 和 go test 9.9 通过 Git 打包和安装 9.10 Go 的外部包和项目 9.11 在 Go 程序中使用外部库 第10章:结构(struct)与方法(method) 10.1 程中开始经历大量的挫折,在诸多 问题上都不能给出令人满意的解决方案,尤其是在使用 C++ 来开发大型的服务端软件时,情况更是不容乐观。由于 二进制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同时编程语言的设计思想也已经非常 陈旧,这些情况都充分证明了现有的编程语言已不符合时下的生产环境。尽管硬件在过去的几十年中有了飞速的发 展,但人们依旧没有找到机会去改变 C++ 在软0 码力 | 466 页 | 4.44 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档命令行交互控制台:节点查询与管理工具 命令行交互控制台是提供给开发者使用的节点查询与管理的工具。控制台 拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合 约等。此外,控制台提供一个合约编译工具,用户可以方便快捷的将 Solidity合约文件编译为Java合约文件。 WeBASE:图形化的区块链管理工具 WeBASE(WeBank Blockchain Application Software Extension) 件集,覆盖智能合约的开发、调试、应用开发等环节,包括智能合约库 (SmartDev-Contract)、智能合约编译插件(SmartDev-SCGP)和应用开 发脚手架(SmartDev-Scaffold)。开发者可根据自己的情况自由选择相应 的开发工具,提升开发效率。 系统设计 整体架构 共识算法 交易并行 分布式存储 预编译合约 更多设计文档 更多资源 Github主页 [https://github 提供CRUD接口访问链上数据 网络协议 节点间通信 P2P协议 客户端与节点通 信 JsonRPC,Channel协议 消息订阅服务 AMOP协议 智能合约 合约引擎 支持Solidity和预编译合约 引擎特点 图灵完备,沙盒运行 版本控制 基于CNS支持多版本合约 灰度升级 支持多版本合约共存、灰度升级 生命周期管理 支持合约和账户的冻结、解冻 密码算法和协议 国密算法 支持 国密SSL0 码力 | 2520 页 | 211.87 MB | 1 年前3
共 422 条
- 1
- 2
- 3
- 4
- 5
- 6
- 43













