C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 们来点(相对)简单的作为饭后甜点吧! C++98 :令人头疼的内存管理 • 在没有智能指针的 C++ 中,我们只能手 动去 new 和 delete 指针。这非常容易出 错,一旦马虎的程序员忘记释放指针,就 会导致内存泄露等情况,更可能被黑客利 用空悬指针篡改系统内存从而盗取重要数 据等。 RAII 解决内存管理的问题: unique_ptr • 似曾相识的情形……是的,和我们刚刚提 放时。比如:指向窗口中上一次被点击的元素。 5. 初学者可以多用 shared_ptr 和 weak_ptr 的组合,更安全。 shared_ptr 管理的对象生命周期,取决于所有引用中,最长寿的那一个。 unique_ptr 管理的对象生命周期长度,取决于他所属的唯一一个引用的寿命 。 那是不是只要 shared_ptr 就行,不用 unique_ptr 了? • 可以适当使用减轻初学者的压力,因为他的行为和0 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南现代 CMake 模块化项目管理指南 彭于斌( @archibate ) 课件 & 源码: https://github.com/parallel101/course 往期录播: https://space.bilibili.com/263032155 找不到头文 件怎么办呀 CMake Cookbook 小彭老师建议 : ~~-·~·~-·~ -~·-·~·- 第一章:文件 / 1/lib/cmake/Qt5” 设置。 举例, Windows 系统, Qt5 • 例如我把 Qt5 安装到了 D:/Qt5.12.1 。 • 首先找到他里面的 Qt5Config.cmake 文件所在位置(可以用文件管理器的“搜索”功能)。 • 假如你找到该文件的位置是 D:/Qt5.12.1/msvc2017/lib/cmake/Qt5/Qt5Config.cmake ,那 么请你设置变量 Qt5_DIR 为 阶段,可以从命令行设置(注意要加引号): • cmake -B build -DQt5_DIR=”D:/Qt5.12.1/msvc2017/lib/cmake/Qt5” • (2) 全局启用。右键“我的电脑” ->“ 管理” ->“ 高级”添加一个环境变量 Qt5_DIR 值为 D:/Qt5.12.1/msvc2017/lib/cmake/Qt5 ,然后重启 Visual Studio 。这样以后你每次构建任 何项目,0 码力 | 56 页 | 6.87 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台部署生产环境 xN 部署 / 灰度上线 xN 监控 / 告警 xN 版本归档 xN 交付追踪 xN 数据度量 xN 服务、工单管理 事件、缺陷管理 想 法 用 户 运行阶段 需求阶段 研发阶段 现代软件交付挑战:开发 5 分钟,上线 2 小时 服务一:设计 | 代码编写 | 构建 | 测试 | 服务全生命周期而非只关注代码 ● 每天多次提交提早验证 Zadig 采用「云原生产品级交付」设计理念 数字化产研协同 • 环境 - 统一开发者协作平面 • 工作流 - 统一交付变更通道 • 异构支持 - 统一产研运管理平面 重视开发者体验,工程师不再做脏活累活 传统 DevOps 体系 Zadig 云原生 DevOps 平台 高人效 低人效 低人效 / 低质量 / 低效率 / 高成 本: 人淹没在系统的海洋里,无数平台手工切换 组织能力提升 业务负责人 研发不透明,规划凭感觉: • 发版时间靠运气 • 团队熬夜冲进度 研发透明化:不同项目清晰可见的效率、质量、进度 进度管理:根据团队客观数据,预测和确定项目规划 迭代进度一目了然 项目从无到有可核算 管理有数据科学依据 解放管理,更多时间花在 业务创新 平台运维 业务压力大,能力建设缓慢: • 大量工作花在工具链维护 • 项目间依赖复杂,环境管理难 • 交付版本依赖工单,发布风险高0 码力 | 59 页 | 81.43 MB | 1 年前3
Zadig 产品使用手册台 是 国 内 落 地 程 度 最 深 、 使 用 范 围 最 广 ( 近 千 家 企 业 ) 的 云 原 生 D e v O p s 平 台 。 领先企业抢先实践 Zadig Zadig 研发数字化转型方案正成为产业数字化战略的核心环节 Zadig 设计思路:通过「平台工程」解决流程挑战,通过「技术升级」提升组织效能 01 04 02 03 工程化协同:“人、技术、流 程、工具” + Jenkins + 脚本化 运行效率低,管理维护成本高 方案局限性大,安全性风险高 无法支持敏捷交付模式 支持从需求到发布全流程敏捷交付。尤其面向 多服务并行部署发布,云原生构建环境和运行 环境,基础设施对接及企业级 SSO/ 权限管理 等 运维管理类平台 蓝鲸 Rainbond KubeSphere KubeVela 面向资源管理的运维工具集 面向开发者,需结合 CI/CD Jenkins 或 CI/CD 工具 搭建流程串接胶水平台 局限性大扩展性差 内部推广难度极高 做完后价值难被证明 通用性、可扩展性、技术先进性强,可以灵活 广泛接入各种技术和业务场景 基于代码管理的 DevOps 方案 Gitee 平台 GitLab 平台 局限性大、全流程安全性低 维护成本高 支持多个服务并行构建部署、产品级发布,可 灵活安全接入多个代码仓及周边工具链 开发 Zadig0 码力 | 52 页 | 22.95 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人2023-06-18 沈游人 数据库与大数据专场 海致简介—企业级知识图谱开创者 专业顶尖技术团队支撑 超 700 人团队,其中 80% 为技术人员,创始团队在完成全球第一个中文知 识图谱网站研发后,探索知识图谱技术在企业领域的应用。 2021 年,海致院 士专家工作站成立,站内清华大学计算机博士生占比达 90% 以上。 企业级数据解决方案专家 为建行、工行、交行、招行、上交所、深交所、中国人寿等 及长期服务。 海致专注为政府、金融、能源等客户提供大数据处理、分析、挖掘服务,在互 联网技术基础上,打造专业、易用的企业级大数据实战应用产品及解决方案。 北京中关村总部 武汉运维中心 深圳研发中心 上海应用中心 专注于数据智能技术赋能中国数字经济发展 海致高性能图计算院士专家工作站 郑纬民 - 海致科技首席科学家 中国工程院院士、清华大学计算机科学与技术系教 授、中国计算机学会前理事长,中国计算机系统结构 定国际影响的优秀成果, AtlasGraph 的获奖证明了其技术领先性、创新性、 重要性,在自主可控浪潮下,实现了对国外产品的有效替代,防止高新技术领 域“卡脖子”现象的发生。 海致科技集团、海致星图联合清华大学研发的“ AtlasGraph 大规模图数据分析平 台”荣获中国计算机学会( CCF : China Computer Federation )“ 2021 年 CCF 科 学技术奖科技进步卓越奖”。0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 晶体管的密度的确仍在指数增长,但处理器主 频却开始停止增长了,甚至有所下降。 • 很长时间之前我们就可以达到 2GHz ( 2001 年 8 月),根据 2003 年的趋势,在 2005 年 初我们就应该研发出 10GHz 的芯片。 • 可为何直到今天也生产不出 10GHz 的芯片? • 结论:狭义的摩尔定律没有失效。但晶体管数 量的增加,不再用于继续提升单核频率,转而 用于增加核心数量。单核性能不再指数增长! 队列里取出数据,即“认领任务”。然后执行,执行 完毕后才去认领下一个任务,从而即使每个任务 工作量不一也能自动适应。 • 这种技术又称为线程池( thread pool ),避免了 线程需要保存上下文的开销。但是需要我们管理 一个任务队列,而且要是线程安全的队列。 struct Task { int x0, y0; int nx, ny; }; std::queueq; 1 2 3 4 0 码力 | 116 页 | 15.85 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺Database ),专为物联网、工业互联网、金融、 IT 运维监控等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等 系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个极简的时序数据处理平台。 采用关系型数据库模型 需要建库、建表, 为提升写入和查询效率,要求一个数据采集点一张表 为实现多表聚合,引入超级表概念 流计算 • 数据订阅 • 集群、高可用 高可靠、线性扩展 + 专业技术服务 • 边云数据复制 • 跨云 / 异地数据复制 • 增量备份 • 多级存储 • 工业数据接入 全托管时序数据 管理云服务平台 • 全托管服务 • VPC 对等连接 • 多云部署( AWS/Azure/ GCP) CONTENTS 自 我 介 绍 T D e n g i n e t a o s X0 码力 | 29 页 | 2.26 MB | 1 年前3
Rust与算法 - 谢波总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 / 个人项目实践 学习中总结探索 2015 年发布,很多人近几年才知道 Rust , Rust 中国 大会也才第三届,期待 Rust 中国大会第十届 Rust 处于起步阶段0 码力 | 28 页 | 3.52 MB | 1 年前3
CeresDB Rust 生产实践 任春韶2019.02 ~ 2020.11 2021.9 自研存储引擎 1.0.0 版本发布 查询性能优化 Prometheus 协议支持 基于 InfluxDB 单机引擎研发 分布式方案 OpenTSDB 协议 内存时序数据库 存储计算分离架构 分级存储 永久代 CeresDB 开源 2022.6 2023.3 开源版本 CeresDB0 码力 | 22 页 | 6.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 的堆栈回溯便于调试 7. google/googletest - 谷歌单元测试框架 8. google/benchmark - 谷歌性能评估框架 9. glfw/glfw - OpenGL 窗口和上下文管理 10.libigl/libigl - 各种图形学算法大合集 fmt - 使用这个神奇的格式化库 • fmt::format 的用法和 Python 的 str.format 大致相似: CMake OpenVDB::openvdb 6. Boost::iostreams 7. Eigen3::Eigen 8. OpenMP::OpenMP_CXX • 不同的包之间常常有着依赖关系,而包管理器的作者为 find_package 编写的脚本(例如 /usr/lib/cmake/TBB/TBBConfig.cmake )能够自动查找所有依赖,并利用刚刚提 到的 PUBLIC PRIVATE0 码力 | 32 页 | 11.40 MB | 1 年前3
共 25 条
- 1
- 2
- 3













