积分充值
 首页
前端开发
AngularDartElectronFlutterHTML/CSSJavaScriptReactSvelteTypeScriptVue.js构建工具
后端开发
.NetC#C++C语言DenoffmpegGoIdrisJavaJuliaKotlinLeanMakefilenimNode.jsPascalPHPPythonRISC-VRubyRustSwiftUML其它语言区块链开发测试微服务敏捷开发架构设计汇编语言
数据库
Apache DorisApache HBaseCassandraClickHouseFirebirdGreenplumMongoDBMySQLPieCloudDBPostgreSQLRedisSQLSQLiteTiDBVitess数据库中间件数据库工具数据库设计
系统运维
AndroidDevOpshttpdJenkinsLinuxPrometheusTraefikZabbix存储网络与安全
云计算&大数据
Apache APISIXApache FlinkApache KarafApache KyuubiApache OzonedaprDockerHadoopHarborIstioKubernetesOpenShiftPandasrancherRocketMQServerlessService MeshVirtualBoxVMWare云原生CNCF机器学习边缘计算
综合其他
BlenderGIMPKiCadKritaWeblate产品与服务人工智能亿图数据可视化版本控制笔试面试
文库资料
前端
AngularAnt DesignBabelBootstrapChart.jsCSS3EchartsElectronHighchartsHTML/CSSHTML5JavaScriptJerryScriptJestReactSassTypeScriptVue前端工具小程序
后端
.NETApacheC/C++C#CMakeCrystalDartDenoDjangoDubboErlangFastifyFlaskGinGoGoFrameGuzzleIrisJavaJuliaLispLLVMLuaMatplotlibMicronautnimNode.jsPerlPHPPythonQtRPCRubyRustR语言ScalaShellVlangwasmYewZephirZig算法
移动端
AndroidAPP工具FlutterFramework7HarmonyHippyIoniciOSkotlinNativeObject-CPWAReactSwiftuni-appWeex
数据库
ApacheArangoDBCassandraClickHouseCouchDBCrateDBDB2DocumentDBDorisDragonflyDBEdgeDBetcdFirebirdGaussDBGraphGreenPlumHStreamDBHugeGraphimmudbIndexedDBInfluxDBIoTDBKey-ValueKitDBLevelDBM3DBMatrixOneMilvusMongoDBMySQLNavicatNebulaNewSQLNoSQLOceanBaseOpenTSDBOracleOrientDBPostgreSQLPrestoDBQuestDBRedisRocksDBSequoiaDBServerSkytableSQLSQLiteTiDBTiKVTimescaleDBYugabyteDB关系型数据库数据库数据库ORM数据库中间件数据库工具时序数据库
云计算&大数据
ActiveMQAerakiAgentAlluxioAntreaApacheApache APISIXAPISIXBFEBitBookKeeperChaosChoerodonCiliumCloudStackConsulDaprDataEaseDC/OSDockerDrillDruidElasticJobElasticSearchEnvoyErdaFlinkFluentGrafanaHadoopHarborHelmHudiInLongKafkaKnativeKongKubeCubeKubeEdgeKubeflowKubeOperatorKubernetesKubeSphereKubeVelaKumaKylinLibcloudLinkerdLonghornMeiliSearchMeshNacosNATSOKDOpenOpenEBSOpenKruiseOpenPitrixOpenSearchOpenStackOpenTracingOzonePaddlePaddlePolicyPulsarPyTorchRainbondRancherRediSearchScikit-learnServerlessShardingSphereShenYuSparkStormSupersetXuperChainZadig云原生CNCF人工智能区块链数据挖掘机器学习深度学习算法工程边缘计算
UI&美工&设计
BlenderKritaSketchUI设计
网络&系统&运维
AnsibleApacheAWKCeleryCephCI/CDCurveDevOpsGoCDHAProxyIstioJenkinsJumpServerLinuxMacNginxOpenRestyPrometheusServertraefikTrafficUnixWindowsZabbixZipkin安全防护系统内核网络运维监控
综合其它
文章资讯
 上传文档  发布文章  登录账户
IT文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(24)C++(18)Rust(6)系统运维(2)DevOps(2)

语言

全部中文(简体)(26)

格式

全部PPT文档 PPT(26)
 
本次搜索耗时 0.020 秒,为您找到相关结果约 26 个.
  • 全部
  • 后端开发
  • C++
  • Rust
  • 系统运维
  • DevOps
  • 全部
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器

    find(4) begin() end() find(2) 从 set 中删除指定范围的元素(错误) • 刚刚说的: a.erase(a.find(2), a.find(4)); • 这种写法有一个很大的问题:如果集合中 没有 2 怎么办?那么 find(2) 因为找不到 就会返回 end() ,而 find(4) 成功找到返 回了指向 4 的迭代器。这样一来 find(2) 的迭代器也就是 end() 会出错,如何修复? • std::less , std::hash ,用户如何自定义他们的特化? • set 的排序函子能否有状态(有捕获变量的 lambda 表达 式) • emplace , emplace_hint , try_emplace 有什么区别? • 我需要高效去重,可 set 没法并行,有没有并行版的 set ? • 关注小彭老师不迷路,我们之后课专门讨论一下这些问题 。
    0 码力 | 83 页 | 10.23 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南

    称为主版本号,出现功能重大变更,以至于和旧 API 不兼容的时候会增加该号。 • minor 称为次版本号,功能有所变更或增加,但依然和旧的 API 兼容时会增加该号。 • patch 称为补丁版号,功能没有改变,只是修复了一些 bug 就重新发布时会增加该号。 • 也有的软件不拘一格(例如我们的 zeno ),索性用发布的日期作为版本号的三个数字, 例如 2022.11.2 。不论采用哪种编号方案,都是几个用点分开的数字,并且数字越大越新 find_package(TBB CONFIG REQUIRED COMPONENTS tbb) • target_link_libraries(yourapp PUBLIC TBB::tbb) 古代 CMake 常见问题 1. target_link_libraries(yourapp ${XXX_LIBRARIES}) 2. target_include_directories(yourapp ${XXX_INCLUDE_DIRS})
    0 码力 | 56 页 | 6.87 MB | 1 年前
    3
  • ppt文档 Zadig 面向开发者的云原生 DevOps 平台

    产品发展历程 高频极速迭代: Zadig 开源 29 个月共迭代 21 个版本 “ ” 开发者常处于 今天发版、明早升级 嗷嗷待哺状态 Zadig 优势、使用场景、解决问题域 Zadig 解决问题域 Zadig 云原生开放性:极简、 0 负担接入 Zadig 业务架构 Zadig 系统架构 1 Zadig 行业方案 对比分析 职能 传统 DevOps 方案 ZadigX 30% 统一治理内部规范,开发 自助上线;解放运维,工 作重心向业务稳定性保 障,建设平台工程体系 研发 研发时间被大量占用: • 本地开发环境难模拟 • 多业务联调艰难,诊断耗时多 • 出现问题诊断耗时多 • 流程割裂协作痛苦,响应慢 调试自测免打扰:本地 / 子环境免打扰,独立完成验证工作 自助验证更高效:自动化工作流 + 云上环境,高效验证调试 安全发布有信心: 一个平台完成日常 价值被团队感知:自动化测试从开发到发布被全团队感知 部署频率升高 1-5 倍 验证有效性提升 100% 解放测试,全面自动化 提升效率,建设质量体系 安全 安全建设被动: • 安全建设缺乏时机和抓手 • 出现问题,影响业务进度 前置安全服务:全流程嵌入安全检测,避免流入业务环节。 全流程安全门禁:关键环节设置安全门禁,快速反馈研发改进 故障拦截率提升 1-3 倍 业务响应效率提升 3-5 倍
    0 码力 | 59 页 | 81.43 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    的函数。 构造函数! 编写我们自己的 vector 类! 看来 vector 也不过如此!让我们自己实现一个 Vector 类试试看 吧 It works! 这个 Vector 类有哪些问题? 三五法则:规则类怪谈 1. 如果一个类定义了解构函数,那么您必须同时定义 或删除拷贝构造函数和拷贝赋值函数,否则出错。 2. 如果一个类定义了拷贝构造函数,那么您必须同时 定义或删除拷贝赋值函数,否则出错,删除可导致 com/isocpp/ CppCoreGuidelines 三五法则:拷贝构造函数 • 在 = 时,默认是会拷贝的。比如右边这样: • 但是这样对我们当前 Vector 的实现造成一个很大 的问题。其 m_data 指针是按地址值浅拷贝的, 而不深拷贝其指向的数组! • 这就是说,在退出 main 函数作用域的时 候, v1.m_data 会被释放两次!更危险的则是 v1 被解构而 会导致内存泄露等情况,更可能被黑客利 用空悬指针篡改系统内存从而盗取重要数 据等。 RAII 解决内存管理的问题: unique_ptr • 似曾相识的情形……是的,和我们刚刚提 到的 RAII 思想不谋而合! • 因此, C++11 引入了 unique_ptr 容器, 他的解构函数中会调用 delete p ,因此不 会有马虎犯错的问题。 • 这里 make_unique(...) 可以理解为和 之前的
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    大可不必!用 aux_source_directory ,自动搜集需要的文件后缀名 进一步: GLOB_RECURSE 了解一下!能自动包含所有子文件夹下的文件 GLOB_RECURSE 的问题:会把 build 目录里生成的临时 .cpp 文件也 加进来 解决方案:要么把源码统一放到 src 目录下,要么要求使用者不要把 build 放到和源码同一个目录里,我个人的建议是把源码放到 src 版本新增) • 如果不指定 LANGUAGES ,默认为 C 和 CXX 。 https://cmake.org/cmake/help/latest/command/project.html 常见问题: LANGUAGES 中没有启用 C 语言,但是却用到了 C 语言 解决:改成 project( 项目名 LANGUAGES C CXX) 即可 也可以先设置 LANGUAGES NONE ,之后再调用 GCC 编译器的选项,无法跨平台用于 MSVC 编 译器。 假如你一定要用动态链接库( Windows 对动态链接很不友好) 假如你一定要用动态链接库( Windows 对动态链接很不友好) 常见问题:老师,我链接了自己的 dll ,但是为什么运行时会找不到? • 这是因为你的 dll 和 exe 不在同一目录。 Windows 比较蠢,他只会找当前 exe 所在目 录,然后查找 PATH ,找不到就报错。而你的
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串

    选项。 • 但是他的输出会保存到一个字符串里。 • 调用成员函数 .str() 就能取出这个字符串了。 • 之后这个字符串就可以用作其他用途,比如 printf 打印,或者用于查询数据库,都没问题。 • 这里比较无聊,最后还是直接输出到了 cout 。 stringstream 也可以取代 stoi • 刚刚展示了 stringstream 模仿 cout 的方法。 • stringstream 和 += • 刚刚说了 + 和 += 比 append 更直观,而且只要配合 string_view ,性能上就没有区别了,为什么不用呢? • 先把程序写出来,结果跑对了,再来考虑什么优化的问题。 • 直观的程序更容易调试,而 + 是非常直观的。——沃兹基硕德 • 小彭老师锐评:跑之前先学会走,反对心理作用优化、性能强迫症 。 • 围棋术语说:本手,妙手,俗手。 • 可能你以为自己这一步是妙手,其实是擦粑粑的手。 首先映入眼帘的是 _Alloc_hider 这个奇怪的类,包装了一 下首地址指针 _M_p 。为什么要套这一层壳?这其实是为 了防止 allocator 对象浪费空间的优化手段。俗称空基类 优化,问题来了,为什么需要空基类优化? string 的空基类优化 • 如果不优化的话,是会把 allocator 直接作为成员变量放 在 basic_string 里的,但是因为 C++ 规定任何对象都要
    0 码力 | 162 页 | 40.20 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    理论带宽极限 42672 MB/s ! • 而数据量足够大时, 才回落到正常的带宽 。 • 这是为什么? CPU 内部的高速缓存 • 原来 CPU 的厂商早就意识到了内存延迟高,读写效率低 下的问题。因此他们在 CPU 内部引入了一片极小的存储 器——虽然小,但是读写速度却特别快。这片小而快的 存储器称为缓存( cache )。 • 当 CPU 访问某个地址时,会先查找缓存中是否有对应的 分量用 AOS” 这个结论,是单从内存访问效率来看的,需 要 SIMD 矢量化的话可能还是要 SOA 或 AOSOA ,比如 hw04 那种的。而 “ pos 和 vel 应该用 SOA 分开存”是没问题的。 • 而且 SOA 在遇到存储不是 vector ,而是稀疏的哈希网格之类索引有一定 开销的数据结构,可能就不适合了。这就是为什么王鑫磊最喜欢 AOSOA :在高层保持 AOS 的统一索引,底层又享受 不过其实标准库的 new 和 malloc 已经 可以保证 16 字节对齐了。如果你只需要 用 _mm_load_ps 而不用 _mm256_load_ps 的话,那直接用标准库 的内存分配也没问题。 标准库的 new 和 malloc :只保证 16 字节对齐 • 还有 _mm_malloc(n, aalign) 可以分配对齐 到任意 a 字节的内存。他在
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅

    是性能毕竟不是线性增长。 • 为什么无法做到呢?首先,为了保证缓存一致性以及其他握手协议需要运行时间开销。在 今天,双核或者四核机器在多线程应用方面,其性能不见得的是单核机器的两倍或者四倍。 这一问题一直伴随 CPU 发展至今。 并发和并行的区别 • 运用多线程的方式和动机,一般分为两种。 • 并发:单核处理器,操作系统通过时间片调 度算法,轮换着执行着不同的线程,看起来 就好像是同时运行一样,其实每一时刻只有 com/chapter/10.1007%2F978-1-4842-4398-5_12 任务域: tbb::task_arena 任务域:指定使用 4 个线程 嵌套 for 循环 嵌套 for 循环:死锁问题 死锁问题的原因 • 因为 TBB 用了工作窃取法来分配任务: 当一个线程 t1 做完自己队列里全部的工 作时,会从另一个工作中线程 t2 的队列 里取出任务,以免 t1 闲置浪费时间。 • 因此内部 tbb::parallel_sort (和标准库串行的 std::sort )加速比: 4.80 倍 重新认识改进的并行缩并 • 其实之前提到“改进后的并行缩并”,也是一 种分治法的思想:大问题一分为二变成小 问题,分派到各个 CPU 核心上,问题足够 小时直接串行求解。 • 他也可以通过 parallel_invoke 分治来实现 : 第 9 章:流水线并行 案例:批量处理数据 注意到这里的 for (auto
    0 码力 | 116 页 | 15.85 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针

    ,这样不就区分开来了吗?这叫做原码表示 法。 • 的确可以,这种表示方式牺牲了一位作为符号位,剩下 7 位继续表示值。 • 这样的设计下无符号可以表示 0 到 255 ,而有符号可以表示 -127 到 127 。 • 但是有一个问题,那 00000000 就表示 0 , 10000000 就表示 -0 ,而 0 有没有负号其 实无所谓, 0 和 -0 根本是同一个数,却有着不同的表示,这显然不对吧? • 因此,可以如 10000000 这种奇怪的东西了,而且表示范围也扩大了一位,虽然是扩 大在负数部分。 有符号整数 vs 无符号整数 • 刚刚说的让 10000000 表示 -1 , 11111111 表示 -128 的方法就叫做反码表示法。 • 但是这样还有一个问题,那就是硬件电路上,需要完全重新设计,对符号位做一些特殊判 断,才能支持有符号整数的加减法,因此如今的计算机都采用了一种更聪明的表示法: • 他们让 11111111 表示 -1 , 10000000 语言标准并没有规定 int 就是 32 位 的。 • int 甚至可以是 16 位的!只不过主流操作系统一致认为是 32 位的而已,并不是标准所保 证的。 • 为了解决不同操作系统上对类型定义混乱的问题, C 语言标准引入了 stdint.h 这个头文件 。 • 他里面包含一系列类型别名 (typedef) ,这些别名保证不论是什么操作系统什么架构,都是 固定的大小,例如: • typedef
    0 码力 | 128 页 | 2.95 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector

    vector(initializer_list list); • explicit vector(size_t n); vector 容器:构造函数 • 这在对于只能用花括号初始化的类成员来说,就 有很大问题: • vector a{4}; • 会得到长度为 1 只有一个元素 4 的数组。 • 但还是可以用这种写法强制调用显式构造函数: • vector a = vector(4); vector(initializer_list list); • explicit vector(size_t n); vector 容器:构造函数 • 这在对于只能用花括号初始化的类成员来说,就 有很大问题: • vector a{4}; • 会得到长度为 1 只有一个元素 4 的数组。 • 但还是可以用这种写法强制调用显式构造函数: • vector a = vector(4); free 函 数。 • 这样当 vector 容器分配或是释放内 存的时候,我们就能轻松看到。 • 不过这个只能 Linux 系统可以用哦 。 vector 容器: push_back 的问题 • 由于不知道你究竟会推入多少个元素, vector 的初始容 量是零,而 push_back 和 resize 一样,每次遇到容量 不足时,都会扩容两倍,如图。 • 这也体现了实际容量 (capacity)
    0 码力 | 90 页 | 4.93 MB | 1 年前
    3
共 26 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件1416Zadig面向开发开发者原生DevOps平台02111507061213
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩