Rust OS 开源操作系统训练营的教与学-0615-李明开源操作系统训练营的教与学 李明 清华大学 2023-6-17 Rust China Conf 2023 Rust OS 开源操作系统训练营的教与学 1 Rust OS 开源训练营的起因和发展 Title Title Title 开源操作系统训练营的起源(2020年) 陈渝老师 向勇老师 OS Tutorial Summer of Code 2020 训练营过去三年的发展情况 训练营过去三年的发展情况 2020年 ~ 2022年 • 2020年 • 夏季训练营 2020.7.1 ~ 8.31 • 2021年 • 夏季训练营 2021.7.1 ~ 7.31 • 2022年 • 夏季训练营 2022.7.3 ~ 8.31 • 秋冬季训练营 2022.10.16 ~ 2023.2.1 50 118 188 448 0 50 100 150 200 250 300 1000+ 训练营的愿景和目标 目标 愿景 核心产出 探索新一代安全高性能操作系统的设计与构建 影响并培养更多的人学会写操作系统 每年为高校和企业培养1000名操作系统开发人才 参加训练营要回答的三个问题 你为什么要来参加这个活动? 为什么要以开源 的方式来参与? 我们如何能把这些 知识技能学到? Rust OS 开源操作系统训练营的教与学 2 开源训练营的总体规划和教学实践0 码力 | 26 页 | 2.62 MB | 1 年前3
夏歌-使用Rust构建LLM应用第三届中国 Rust 开发者大会 使用 Rust 构建 LLM 应用 夏歌 SECTION TITLE SECTION TITLE 我们能不能直接用 Rust • 训练 • 推理 • AI 应用相关的工具 • WASI-NN spec • WasmEdge 已经支持 Pytorch 、 TensorFlow Lite • WASI-NN 2.0 比如 Langchain Rewrite Telegram 机器人 当 Telegram 收到 规定好的 Slash 开头的 telegram command ,就预启动不同的 Prompt "0.1.0" 基于 ChatGPT 的 Telegram 机器人 当收到消息的时候,就按照预 设的 system_prompt 使用 GPT3.5 调用 OpenAI , 并把结果返回。 "0.1.0" 基于 ChatGPT0 码力 | 36 页 | 38.31 MB | 1 年前3
Rust 在算法交易中的实际应用与积极效应结构化多档行情 全行业指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU 结构化多档行情 全行业指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 与非 Rust 世界交互的主要边界 Rust FFI 网络协议栈参数优化,多路行情冗余互备 UDP 组播 Rust 全栈应用实践 - 行情、与API接入 数据获取 模型训练 信号预测 交易指令 交易指令 森林模型的 Rust 展开 预测 大规模的新闻实时 spider 以及 NLP 分析 互联网新闻因子 配备 8TB 内存 +8 显卡定制机型,分布式超大 规模的 LSTM 等训练,单台价值 100w,支持 全天候多周期预测 自建机房 Rust 全栈应用实践 - 模型训练与在线预测 Rust 全栈应用实践 - 模型训练与在线预测0 码力 | 18 页 | 3.49 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人计算某个事件在关联的企业、个人 之间的传递过程和传递概率 图深度学习及其应用场景 图嵌入 • 将高维的图信息映射到低维向量中 • 通过图嵌入将客户关系表示为低维向量,可以结合其 他客户行为特征进行机器学习训练 图卷积神经网络 • 对图结构数据进行卷积计算 • 通过已有的企业数据,通过 GCN 进行半监督学习和分 类,预测企业的违约概率 传统的关系型数据库的存储方式丢失了事物之间的关系信息 Relational 对于常用算法,跳过固定的编程模型,分 别设计最佳的计算方案 • 例如我们自研的 node2vec 采样算法比现 有技术快了 1 个数量级 海致图计算平台特点 AtlasML 极致的性能 • 支持 CPU/GPU 等异构设备训练 • 特殊设计的高性能图算子库 丰富的算法库 • 内置多种 20+ 个 GNN 算法 • 支持同构图 / 异构图 / 属性图 客户的信任 • 上线某银行反欺诈场景 业务效果提升 10%+0 码力 | 38 页 | 24.68 MB | 1 年前3
尝试用RUST写教学操作系统cn/oscourse/OS2018spring/projects#A.2Bi.2F56C4u.2Bi6FbnpqMkAli6Q- 9 用RUST写操作系统: 2018年秋季操作系统专题训练课 http://os.cs.tsinghua.edu.cn/oscourse/OsTrain2018#rustos.2BUp.2BA.2FVuMVYRUjHn7aQ1bnpqMkAli6Q-0 码力 | 23 页 | 1.53 MB | 1 年前3
Hello 算法 1.1.0 Rust版rate),这个指标通常用来衡量缓存效率。 为了尽可能达到更高的效率,缓存会采取以下数据加载机制。 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 以下几个方面。 ‧ 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的内存空间效率,而链表则在内存使用上更加灵 活。 ‧ 缓存通过缓存行、预取机制以及空间局部性和时间局部性等数据加载机制,为 CPU 提供快速数据访问, 显著提升程序的执行效率。 ‧ 由于数组具有更高的缓存命中率,因此它通常比链表更高效。在选择数据结构时,应根据具体需求和场0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版rate),这个指标通常用来衡量缓存效率。 为了尽可能达到更高的效率,缓存会采取以下数据加载机制。 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 以下几个方面。 ‧ 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的内存空间效率,而链表则在内存使用上更加灵 活。 ‧ 缓存通过缓存行、预取机制以及空间局部性和时间局部性等数据加载机制,为 CPU 提供快速数据访问, 显著提升程序的执行效率。 ‧ 由于数组具有更高的缓存命中率,因此它通常比链表更高效。在选择数据结构时,应根据具体需求和场0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版rate」,这个指标通常用来衡量缓存效率。 为了尽可能达到更高的效率,缓存会采取以下数据加载机制。 ‧ 缓存行:缓存不是单个字节地存储与加载数据,而是以缓存行为单位。相比于单个字节的传输,缓存行 的传输形式更加高效。 ‧ 预取机制:处理器会尝试预测数据访问模式(例如顺序访问、固定步长跳跃访问等),并根据特定模式 将数据加载至缓存之中,从而提升命中率。 ‧ 空间局部性:如果一个数据被访问,那么它附近的数据可能近期也会被访问。因此,缓存在加载某一数 以下几个方面。 ‧ 占用空间:链表元素比数组元素占用空间更多,导致缓存中容纳的有效数据量更少。 ‧ 缓存行:链表数据分散在内存各处,而缓存是“按行加载”的,因此加载到无效数据的比例更高。 ‧ 预取机制:数组比链表的数据访问模式更具“可预测性”,即系统更容易猜出即将被加载的数据。 ‧ 空间局部性:数组被存储在集中的内存空间中,因此被加载数据附近的数据更有可能即将被访问。 总体而言,数组具有 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的内存空间效率,而链表则在内存使用上更加灵 活。 ‧ 缓存通过缓存行、预取机制以及空间局部性和时间局部性等数据加载机制,为 CPU 提供快速数据访问, 显著提升程序的执行效率。 ‧ 由于数组具有更高的缓存命中率,因此它通常比链表更高效。在选择数据结构时,应根据具体需求和场0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言简体中文版24/600 Rust 程序设计语言 简体中文版 默认情况下,Rust 设定了若干个会自动导入到每个程序作用域中的标准库内容,这组内容被 称为 预导入(preclude) 内容。你可以在标准库文档中查看预导入的所有内容。 如果你需要的类型不在预导入内容中,就必须使用 use 语句显式地将其引入作用域。 std::io 库提供很多有用的功能,包括接收用户输入的功能。 如第一章所提及,main 赋第二个值。 在尝试改变预设为不可变的值时,产生编译时错误是很重要的,因为这种情况可能导致 bug。 如果一部分代码假设一个值永远也不会改变,而另一部分代码改变了这个值,第一部分代码就 有可能以不可预料的方式运行。不得不承认这种 bug 的起因难以跟踪,尤其是第二部分代码 只是 有时 会改变值。 Rust 编译器保证,如果声明一个值不会变,它就真的不会变,所以你不必自己跟踪它。这意 味着你的代码更易于推导。 在得到了有效的数量之后,ThreadPool 新建一个存放 size 个元素的 vector。 with_capacity 函数与 Vec::new 做了同样的工作,不过有一个重要的区别:它为 vector 预 先分配空间。因为已经知道了 vector 中需要 size 个元素,预先进行分配比仅仅 Vec::new 要稍微有效率一些,因为 Vec::new 随着插入元素而重新改变大小。 548/6000 码力 | 600 页 | 12.99 MB | 1 年前3
Comprehensive Rust(简体中文) 202412Android 构建系统能检测到 src/android/ 中的 Android.bp 文件。 确保 adb sync 适用于你的模拟器或实际设备,并使用 src/android/build_all.sh 预构建所有 Android 示例。请阅读脚本,查看它所运行的命令,并确保这些命令能在你手动运行时正确执行。 Chromium 中的 Rust 深入探究 Chromium 中的 Rust 课程为期半天,旨在介绍 https://github.com/rust-lang/ 保护下组织开发的,与 rustc 相同。) • cargo、rustfmt 等 • 各种内部基础架构(用于构建 rustc 的聊天机器人、用于将预构建工具链分发给 Chromium 工程 师的系统等。) • cargo Audit、cargo vet 等 Cargo 工具 • 包含到 //third_party/rust 的 Rust 库(由0 码力 | 359 页 | 1.33 MB | 10 月前3
共 11 条
- 1
- 2













