新一代分布式高性能图数据库的构建 - 沈游人图计算院士专家工作站 。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 AtlasGraph ,培育世界级的图计算软硬件 生态体系,保持对全球科技竞争的战略均衡。 海致高性能图计算院士专家工作站 海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” 响力的专业奖项之一, 其中科技进步卓越奖是 CCF 科技进步奖评选中的最高级别奖项,旨在嘉奖在计 算机科学、技术或工程领域具有重要发现、发明、原始创新,在相关领域有一 定国际影响的优秀成果, AtlasGraph 的获奖证明了其技术领先性、创新性、 重要性,在自主可控浪潮下,实现了对国外产品的有效替代,防止高新技术领 域“卡脖子”现象的发生。 海致科技集团、海致星图联合清华大学研发的“ 应用”项目,斩获“科学技术奖科技进步一等奖”,这也是国内电子信 息领域的最高奖项。 该奖项由数十名院士评审,历经三轮,从三百余个申报项目中遴选 而出。由院士等组成的科技成果鉴定委员会认为:“该成果技术复杂 度高,研制难度大,创新性强,项目成果整体达到国际先进水平, 其中异质图建模与表示学习技术和超大规模图学习系统处于国际领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生0 码力 | 38 页 | 24.68 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台团队熬夜冲进度 研发透明化:不同项目清晰可见的效率、质量、进度 进度管理:根据团队客观数据,预测和确定项目规划 迭代进度一目了然 项目从无到有可核算 管理有数据科学依据 解放管理,更多时间花在 业务创新 平台运维 业务压力大,能力建设缓慢: • 大量工作花在工具链维护 • 项目间依赖复杂,环境管理难 • 交付版本依赖工单,发布风险高 • 公共资源 / 业务资源利用率低 赋能多业务:一个平台解决了多异构项目的管理和规范 Zadig 2021 “ ” “ ” 年开源以来,公司连续两年被评为 开源中国 的 年度优秀开源技术团队 , 36 氪「新经济 “ ” 之王」基础软件赛道的 年度企业 , GADI “ ” 汽车新智造创新行业峰会的 最佳数字化服务商企业 。经过几年 的快速发展, Zadig 正在成为产业数字化时代软件交付领域的规则制定者,开启软件交付的新时代,帮助 企业打造出自中国、全球领先的软件工程。0 码力 | 59 页 | 81.43 MB | 1 年前3
Go读书会第二期并发:优先考虑并发设计 Part7 – 错误处理 践行哲学,遵循惯例,认清本质,理解原理 • 错误处理的几种策略 • 优化 if err != nil • Panic 不是错误处理 错误处理:保守与创新 Part8 – 编程实践:测试、调试与性能剖析 践行哲学,遵循惯例,认清本质,理解原理 • Go 测试惯例与组织形式 • 模糊测试 (fuzzing test) • 性能基准测试、度量数据与0 码力 | 26 页 | 4.55 MB | 1 年前3
Zadig 产品使用手册工程化协同:“人、技术、流 程、工具” 四维协同基线,沉 淀全流程数据,从感知到赋 能,服务于工程师 释放云基建能力:链接任何云 及自建资源(容器、主机、车 机、端等),释放云原生价值 和企业创新力 生态开放:广泛开放系统 模块和 OpenAPI ,链接 一切流程、服务、工具和 上下游伙伴 安全简单自主可控:私有化 部署,现有服务 0 迁移成本 、体验丝滑接入容易、学习 使用门槛极低0 码力 | 52 页 | 22.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化为什么要 4KB ?原来现在操作系统管理内存是用分页 ( page ),程序的内存是一页一页贴在地址空间中的, 有些地方可能不可访问,或者还没有分配,则把这个页设 为不可用状态,访问他就会出错,进入内核模式。 • 因此硬件出于安全,预取不能跨越页边界,否则可能会触 发不必要的 page fault 。所以我们选用页的大小,因为本 来就不能跨页顺序预取,所以被我们切断掉也无所谓。 • 另外,我们可以用 malloc 时,操作系统并不会实际分配那一块内存,而是将这一段内存标记 为“不可用”。当用户试图访问(写入)这一片内存时,硬件就会触发所谓的缺页中断 ( page fault ),进入操作系统内核,内核会查找当前进程的 malloc 历史记录。如果发 现用户写入的地址是他曾经 malloc 过的地址区间,则执行实际的内存分配,并标记该段 内存为“可用”,下次访问就不会再产生缺页中断了;而如果用户写入的地址根本不是他 初始化数组时,内存被写入,所以操作系统这时候才开始实际分配内存。 • 刚才的案例里,不会初始化的 malloc ,第一次往里面赋值时,因为这时操作系统还没有给 这个数组分配内存,所以会触发缺页中断,进入操作系统内核给数组分配内存,是内核执 行内存分配的这个动作,花费了额外的时间。而第二次因为内存已经被分配上了,所以再 次访问也不会触发缺页中断,所以看起来比第一次快很多。 进一步:分配是按页面( 4KB )来管理的 •0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型Concurrency in Action )不一定就是完美解决方案,要根据实际情况判断。 真正的解决: tbb::spin_mutex 其实主要的瓶颈在于 std::mutex 会切换到操作系统内核中去调度 ,非常低效。而 tbb::spin_mutex 则是基于硬件原子指令的,完全 用户态的实现。区别: std::mutex 的陷入等待会让操作系统挂起 该线程,以切换到另一个;而 tbb::spin_mutex malloc 时,操作系统并不会实际分配那一块内存,而是将这一段内存标记为“不可 用”。当用户试图访问(写入)这一片内存时,硬件就会触发所谓的缺页中断( page fault ),进入操作系统内核,内核会查找当前进程的 malloc 历史记录。如果发现用户写 入的地址是他曾经 malloc 过的地址区间,则执行实际的内存分配,并标记该段内存为“可 用”,下次访问就不会再产生缺页中断了;而如果用户写入的地址根本不是他0 码力 | 102 页 | 9.50 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串GCC 的实现中,被换成了三个指针 [ptr, ptr + len, ptr + capacity] 来表示 。 • 但本质上是一样的,你去看 rust ,他们的 vec 也是这三个成员,没什么创新 的。 • 他们 rust 的贡献,无非是把这个概念定义为专有名词“胖指针”,仅此而已。 用胖指针表示字符串 • C++ 的 string 克服了 C 语言 0 结尾字符串的缺点: • 字符串本身可以含有0 码力 | 162 页 | 40.20 MB | 1 年前3
Rust分布式账务系统 - 胡宇第一个吃螃蟹的人从招聘到上线的干货 心路历程 落地第一个 Rust 项目 磨刀霍霍 – 技术选型 心路历程 ● 对新技术持开放态度 ● Kotlin :简洁, JVM, GC ● Rust 引入 Linux 内核 ● Android 支持 Rust ● 积极探索新技术对金融科技的改变 ● 对于核心领域系统,追求极致性能,使用 Rust Airwallex 业界 共识 厉兵秣马 - 人才培养0 码力 | 27 页 | 12.60 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 09 CUDA C++ 流体仿真实战的三维数组来表示。 • 定义求散度的核函数,首先读取速度场周围六个元素的值,然后上下做差得到散度。 投影部分: jacobi 迭代求解压强 投影部分:速度减去压强的梯度 投影部分:初步实现 • 现在调用这些内核,让 jacobi 迭代 400 次,看看效果。 • 当然, jacobi 迭代因为需要写入 pre 的同时读取 pre ,所以也要用双缓冲。 投影部分:计算未消除的散度 为了评估效果的好坏,0 码力 | 58 页 | 14.90 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming关键字给类定义一个虚函数,他其实就是在类成员里加了一个函数指针。 • 而在构造函数里,会把当前类重载过的虚函数,赋予给那个函数指针,实现多态。 • 虚函数是 C++ 的语法糖,纯 C 的 Linux 内核中也用到多态,就是用函数指针实现的。 例如左图中的虚函数,和右边的函数指针版本等价。因此性能分析时,把虚函数视为函数 指针。 • 注:实际中虚函数往往有很多个,为了存储空间的高效利用,会把多个虚函数打包成一个数组,称之0 码力 | 47 页 | 8.45 MB | 1 年前3
共 11 条
- 1
- 2













