C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南OpenCV::videoio 这 两个组件,如果没有这两个组件也会报错。 • find_package(OpenCV REQUIRED OPTIONAL_COMPONENTS core videoio) • 查找名为 OpenCV 的包,找不到就报错,可具有 OpenCV::core 和 OpenCV::videoio 这两个 组件,没有这两组件不会报错,通过 ${OpenCV_core_FOUND} ${OpenCV_core_FOUND} 查询是否找到 core 组件。 find_package 说是找“包”,到底是在找什么? • find_package(OpenCV) 实际上是在找一个名为 OpenCVConfig.cmake 的文件。 • 注:出于历史兼容性考虑,除了 OpenCVConfig.cmake 以外 OpenCV-config.cmake 这 个文件名也会被 CMake 识别到。 • 同理, find_package(Qt5) 是找不到的。 • 这时你需要手动指定一个变量告诉他在哪儿,可以是普通变量 ${Qt5_DIR} ,也可以是环 境变量 $ENV{Qt5_DIR} ,两个中只要设置了任何一个 find_package 都可以识别到。 • 变量一般通过命令行 -DQt5_DIR=”C:/Program Files/Qt5.12.1/lib/cmake/Qt5” 设置。 举例, Windows 系统, Qt5 • 例如我把0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南CMake 项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 • 会在 build 目录下生成本地构建系统能识别的项目文件( Makefile 或是 .sln ) • 第二步是 cmake --build build ,称为构建阶段( build ),这时才实际调用编译器来编译代码 • 在配置阶段可以通过 find_package(Qt5 REQUIRED) 出错了 原因: Qt5 具有多个组件,必须指定你需要哪些组件 find_package 生成的伪对象 (imported target) 都按照“包名 :: 组件名”的格式命名。 你可以在 find_package 中通过 COMPONENTS 选项,后面跟随一个列表表示需要用的组件。 测试一下能否找到 Qt 的头文件并编译通过 常见问题:小彭老师, Windows0 码力 | 166 页 | 6.54 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人图注意力网络 • 图自编码器 图查询及其应用场景 图查询 • 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 联 当前图的典型应用场景 路径识别 群体挖掘 节点识别 相似节点 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 … 人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘 分布式事务技术方案 MVOCC 处理流程 全面的算法支持 覆盖全部常用算法 • 路径计算、社区检测、相似度计算 等 丰富的自研图算法 • 环路识别、链路识别、节点间全路径、 发散子图识别、汇聚子图识别、金字塔 子图识别 与图数据库的深度结合 使用 cypher 语句直接调用 支持在用户筛选出的子图上计算 灵活的参数设定 自研图计算系统架构、极致的性能优化 用户授权管理 • 中文及显示别名支持 图模型设计 WebUI—— 可视化图探索分析 【亮点】 • K 步邻居查询、属性过滤 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在 线图挖掘分析 • 实体、边可视化统计分析 • 树、层次、分组等多种布 局方式 • 基于 D3 自研的万级别实 体展现 可视化图探索分析 AtlasGraph 架构及实现 图技术简介0 码力 | 38 页 | 24.68 MB | 1 年前3
夏歌-使用Rust构建LLM应用5 调用 OpenAI , 并把结果返回。 "0.1.0" 基于 ChatGPT 的 Telegram 机器人 在 ocr 这个 function 里 识别 图片中的文字, text_detection 是把识别的图片转化为 base64 https://github.com/flows-network/review-any- pr-with-chatgpt 使用 Rust Slash 开头的 telegram command ,就启动不同的 Prompt "0.1.0" 基于 ChatGPT 的 Telegram 机器人 OCR 识别图片中的文 字, text_detection 是把识别 的图片转化为 base64 招聘 Rust 实习生 请与 vivian@secondstate.io 联系 一个小广告 Thank you !0 码力 | 36 页 | 38.31 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起CMake 认为一个包 (package) 可以提供多个库,又称组件 (components) ,比如 TBB 这个包,就包含了 tbb, tbbmalloc, tbbmalloc_proxy 这三个组件。 • 因此为避免冲突,每个包都享有一个独立的名字空间,以 :: 的分割(和 C++ 还挺像的) 。 • 你可以指定要用哪几个组件: • find_package(TBB REQUIRED0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化优化后: 挪到外面来:优化失败 然而只要去掉 (dt * dt) 的括号就会优化失败: 因为乘法是左结合的,就相当于 (b[i] * dt) * dt 编译器识别不到不变量,从而优化失败。 因此,要么帮编译器打上括号帮助他识别,要 么手动提取不变量到循环体外。 调用不在另一个文件的函数: SIMD 优化失败 因为编译器看不到那个文件的 other 函数里是什么,哪怕 other 在定0 码力 | 108 页 | 9.47 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化不用等待,就可以直接开始处理 a[2] ,避免等待数据的 时候 CPU 空转浪费时间。 • 这种策略称之为预取( prefetch ),由硬件自动识别你程序的访存规律 ,决定要预取的地址。一般来说只有线性的地址访问规律(包括顺序、 逆序;连续、跨步)能被识别出来,而如果你的访存是随机的,那就没 办法预测。遇到这种突如其来的访存时, CPU 不得不空转等待数据的抵 达才能继续工作,浪费了时间。0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串而且即使搞错了也能正常编译通过(一些高级的编译器会 给出警告),但是运行结果不对,或者还有可能崩溃。 泛型的 iostream 应运而生 • 得益于 C++ 的重载技术, cout 不用你手动指定类型,他 会自动识别参数的类型,帮你调用相应的格式化函数。 c_str 和 data 的区别 • s.c_str() 保证返回的是以 0 结尾的字符串首地址指针,总长度为 s.size() + 1 。 • s find_first_of 应用案例:按空格分割字符串 • 刚刚说 ASCII 的时候提到过 isspace 这个函数,他会把 ‘ ’、‘ \t’ 、‘ \v’ 、‘ \f’ 、‘ \n’ 、‘ \r’ 识别为空格(因为他们显示 出来的确都是空的),我姑且称之为空格类字符 ( whitespace )。 • 如何找到第一个出现的空格类字符?如果要找第一个出现 的空格,可以用 s.find(‘ ’) ,如果要找到第一个出现的空格0 码力 | 162 页 | 40.20 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台Zadig 每天数百次构建部署持续交付 “ 星云科技是我们持续创业的新业务,我们从一开始就采用了公有云、云原生等最新的理念, 结合以往的技术经验,毫无悬念的直接选择 Zadig 作为持续交付的核心组件,从最头打造最 高效的研发体系。 Zadig 解决了云原生环境的持续交付的难题,与 GitLab 等已在业界广泛 ” 使用的系统集成顺畅,互操作性强,是目前行业中最优雅的方案 去年, 我们整个微服务已经达到了 400 多个,还用传统那种运维方式很消耗内部开发资源。我们在 探索过程中发现了 Zadig ,今天 Zadig 技术体系已经成为我们的核心持续交付组件。 —— 研发负责人 詹佳杭 3 个集群、 15 个项目、 240 个服务、 52 条工作流、 18 个环境, 2397 个交付物 构建 3907 次,部署 2446 次0 码力 | 59 页 | 81.43 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming的时候手动优化才有优势,开 启 -O1 优化以后都区别不大了。 • 因此对于简单的分支,完全可以不考虑优化, 交给编译器自动优化掉。 • 一般只需要把 if-else 改成三目运算符 ?: 编 译器就能成功识别了(见开头的例子)。 • 建议只有当性能遇到瓶颈时,再去针对性对 “热代码”优化,而不是一股脑儿全部改成无分 支,影响可读性。 “ 妙用加减乘”的无分支优化是万能的吗? • return x0 码力 | 47 页 | 8.45 MB | 1 年前3
共 12 条
- 1
- 2













