积分充值
 首页
前端开发
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文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(25)C++(19)Rust(5)系统运维(2)DevOps(2)数据库(1)Go(1)MySQL(1)

语言

全部中文(简体)(27)中文(简体)(1)

格式

全部PPT文档 PPT(28)
 
本次搜索耗时 0.017 秒,为您找到相关结果约 28 个.
  • 全部
  • 后端开发
  • C++
  • Rust
  • 系统运维
  • DevOps
  • 数据库
  • Go
  • MySQL
  • 全部
  • 中文(简体)
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串

    实际上会被编译器翻译成他对应的 ASCII 码: 97 。写 ‘ a’ 和写 (char)97 是完全一样的,方便阅读的语法糖而已。 “char 即整数”思想应用举例 “char 即整数”思想应用举例 C 语言帮手函数 帮手函数大全 • isupper(c) 判断是否为大写字母(‘ A’ <= c && c <= ‘Z’ )。 • islower(c) 判断是否为小写字母(‘ a’ <= c && c <= ‘z’ <= 31 或 c == 127 )。 • toupper(c) 把小写字母转换为大写字母,如果不是则原封不动返回。 • tolower(c) 把大写字母转换为小写字母,如果不是则原封不动返回。 帮手函数大全 http://c.biancheng.net/ref/ctype_h/ 关于 char 类型的一个冷知识 • C 语言其实只规定了 unsigned char 是无符号 8 位整数, signed 。 • hello 每个字符都连续地排列在这个数组中,那么末尾的 0 是怎么回事?原来 C 语言的字符串因为只保留数组的 首地址指针(指向第一个字符的指针),在以 char * 类型 传递给其他函数时,其数组的长度无法知晓。为了确切知 道数组在什么地方结束,规定用 ASCII 码中的“空字符”也 就是 0 来表示数组的结尾。这样只需要一个首地址指针就 能表示一个动态长度的数组,高,实在是高。
    0 码力 | 162 页 | 40.20 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 未来: C++20 允许函数参数为自动推断( auto ) 未来: C++20 引入协程( coroutine )和生成器( generator ) 未来: C++20 标准库加入 format 支持 跑远了! • 鉴于 C++20 还没有普遍落地(例如 CMake 不支持 C++20 modules )因此我们的课程 基于 C++17 标准,有时会谈到 C++20 作为扩展阅读。 C++ 有哪些面向对象思想? 这种情况出现时,就意味着你需要把成员变量的读写封装为成员函数 不变性:请勿滥用封装 • 仅当出现“修改一个成员时,其他也成员要 被修改,否则出错”的现象时,才需要 getter/setter 封装。 • 各个成员之间相互正交,比如数学矢量类 Vec3 ,就没必要去搞封装,只会让程序员 变得痛苦,同时还有一定性能损失:特别 是如果 getter/setter 函数分离了声明和定 义,实现在另一个文件时!
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针

    48 位一致(符号扩展),也就是虚拟地址空间只有 48 位。 • 而经过 MMU 映射后实际给内存的地址只有 39 位,因此如今的 x64 架构实际上只能访 问 512GB 内存,如果插了超过这个大小的内存条他也不会认出来。 • 此外, 16 位计算机实际上能通过额外的段寄存器访问到 20 位的内存地址( 1MB )。 • 32 位计算机还能通过 PAE 技术(物理地址扩展)访问到 36 位的内存地址( 实验:不同大小之间的整数互转 • C 语言可以用 (short)x 的形式来强制把任意类型的 x 转换为 short 类型。 • 如果源类型比目的类型小,那么会根据目的类型是有 符号还是无符号的,自动扩展他的符号位。 • 例如 char 类型的 -128 是 10000000 • 强制转换为 short 后是 11111111 10000000 • 可见符号位被完全填充到了 short 的前一个字节,这 的但是大小相等,则结果是 unsigned 的。 • unsigned int + int = unsigned int • 只有两边都是有符号的 int 时,结果才是有符号的 int 。 浮点与标准库数学函数 浮点数的二进制表示 • float 由 4 个字节组成,也就是 32 个位。 • 最高位是符号位,接着的 8 位是指数位 (e) 。 • 剩下的 23 位是底数位 (m) 。 • 值得注意的是指数位
    0 码力 | 128 页 | 2.95 MB | 1 年前
    3
  • ppt文档 新一代分布式高性能图数据库的构建 - 沈游人

    效利用硬件资源,高可用,高 可靠,故障自愈,低成本运维 HTAP Hybrid Transactional/Analytical Processing ,高性能图计算引 擎,预置 20 余种图计算算法 ,可扩展的分析引擎支持更复 杂的数据挖掘和机器学习场景 MPP Massively Parallel Processing 架构,大规模集群 分布式存储及并行计 算, Shared Nothing 模式支 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 易用 AQL(Atlas Graph Query Language) ,类 SQL 的图查询 语言,内置上百种分析函数, 面向分析师友好,拥抱标准, 基于 openCypher 向 ISO GQL 迈进 实时大图 支持万亿节点存储及流式计算 引擎的结合,最新数据实时入 库构图,为在线业务决策分析 提供有力支撑 Docker/K8S/VM X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 - 多副本管理保证数据服务高可用 - 在线备份提供容灾保障 高速
    0 码力 | 38 页 | 24.68 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming

    char 一样只占据 1 字节( al 寄存器就 1 字节) • 而 C 语言可以自动把 bool 转换成 int 类型( movzx 把 1 字节的 al 转换成 4 字节的 eax ,零扩展:高 3 字节 填充零) • 返回类型 int 占据 4 字节( eax 寄存器就是 4 字节的) • 返回值都放 eax 寄存器(刚刚算得的就在 eax ,直接返 回) 无分支优化:从语法角度分析 以上时,对于只有两个分支的 if- else ,编译器往往会自动检测到可以优化,帮你应用 “妙用加减乘”了,无法体现手动优化的意义。 • 注:此处采用函数指针不仅是为了重用代码,也可以 避免 clamp 被编译器自动内联到 test 函数体内。 • 微软编译器的同学,要把 __attribute__((noinline)) 换成 __declspec(noinline) 才能编译。 不同写法的性能测试 EDOM ,产生副作用。而原先的三目运算 符 ?: 由于具有“短路”特性,当 x < 0 时第一个分支 sqrt(x) 不会执行,没有副作用。不一 样了! • 总之,对于这种有副作用的函数,或是有可能返回 NaN 的函数,无法“妙用加减乘”优化 。 冷静分析,学会变通 • return x >= 0 ? sqrt(x) : 0; • 但是我们可以变通一下,既然从返回值优化不行,从参数入手怎样?首先已知
    0 码力 | 47 页 | 8.45 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器

    这样只会按字符串指针的地址去判断相等, 而不是所指向字符串的内容。 set 的排序:自定义排序函数 • set 作为模板类,其实有两 个模板参数: set • 第一个 T 是容器内元素的类 型,例如 int 或 string 等。 • 第二个 CompT 定义了你想 要的比较函子, set 内部会 调用这个函数来决定怎么排 序。 • 如果 CompT 不指定,默认 会直接用运算符 化。 set 的排序:自定义排序函数 • 恶搞一下,这里我们把比较 函子 MyComp 定义成只比 较字符串第一个字符 a[0] < b[0] 。 • 神奇的一幕发生了,“ any” 不见了!为什么?因为去重 ! • 为什么 set 会把 “ arch” 和 “ any” 视为相等的元素?明 明内容都不一样? set 的排序:自定义排序函数 • 首先搞懂 set 内部是怎么确定 只需要一个 比较函子,不需要相等函子的 原因。 set 的排序:自定义排序函数 • 所以我们这里写了 a[0] < b[0] 就相当于让相等条件变成了 a[0] == b[0] 。也就是说只要第 一个字符相等就视为字符串相 等,所以 “ arch” 和 “ any” 会 被视为相等的元素,从而被 set 给去重了! • 扩展知识:其实, map 无非就是个只比较 K 无视 T
    0 码力 | 83 页 | 10.23 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 通用寄存器: 32 位时代 • 32 位 x86 架构中的通用寄存器有: • eax, ecx, edx, ebx, esi, edi, esp, ebp • 其中 esp 是堆栈指针寄存器,和函数的调用与返回相关。 • 其中 eax 是用于保存返回值的寄存器。 通用寄存器: 64 位时代 • 64 位 x86 架构中的通用寄存器有: • rax, rcx, rdx, rbx, rsi *)(rdi + rsi * 4) size_t 在 64 位系统上相当于 uint64_t size_t 在 32 位系统上相当于 uint32_t 从而不需要用 movslq 从 32 位符号扩展 到 64 位,更高效。而且也能处理数组大 小超过 INT_MAX 的情况,推荐始终用 size_t 表示数组大小和索引。 浮点作为参数和返回: xmm 系列寄存器 xmm0 = xmm0 +
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    另一种方式:先创建目标,稍后再添加源文件 如果有多个源文件呢? 逐个添加即可 使用变量来存储 建议把头文件也加上,这样在 VS 里可以出现在“ Header Files” 一栏 使用 GLOB 自动查找当前目录下指定扩展名的文件,实现批量添加源文件 启用 CONFIGURE_DEPENDS 选项,当添加新文件时,自动更新变量 如果源码放在子文件夹里怎么办? 必须把路径名和后缀名的排列组合全部写出来吗?感觉好麻烦 表示启用 GCC 特有的一些扩展功能; OFF 则关闭 GCC 的扩展功能,只使用标准的 C++ 。 • 要兼容其他编译器(如 MSVC )的项目,都会设为 OFF 防止不小心用了 GCC 才有的 特性。 • 此外,最好是在 project 指令前设置 CMAKE_CXX_STANDARD 这一系列变量,这样 CMake 可以在 project 函数里对编译器进行一些检测,看看他能不能支持 "Visual Studio 2019", etc.) 一个标准的 CMakeLists.txt 模板 第 3 章:链接库文件 main.cpp 调用 mylib.cpp 里的 say_hello 函数 改进: mylib 作为一个静态库 改进: mylib 作为一个动态库 改进: mylib 作为一个对象库 https://www.scivision.dev/cmake-object-libraries/
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型

    数,总共占据 16 位,所以又称 float16 。精度很 低,但是节省内存空间! • 然而只有 GPU (比如 CUDA )支持 half 类型 , CPU 需要支持 AVX512fp16 这个扩展才能用 。 • 据说深度学习(很多都是 membound )很喜欢 用 half ,因为可以省一半内存,从而加快一倍。 • 反正小彭老师的 CPU 是不支持 AVX512fp16…… • 因此,想要追求稀疏的我们,最好想办法绕 开 glibc ,直接和操作系统打交道。 解决:绕开 glibc ,直接调用操作系统的 mmap 分配 • 那么就要用到 Unix 类操作系统的 mmap 函数,他位于 sys/mman.h 头文件里。 • Windows 可以用 VirtualAllocateEx 之类。 • mmap 出来的起始地址保证是对齐到 4KB 的,读写访问其 中偏移 wisc.edu/~sifakis/papers/SPGrid.pdf 今天的回家作业 • 用稀疏数据结构改良康威生命游戏 (conway’s game of life) 的代码。 • 要求:自动扩展边界,按需分配内存,垃圾回收及时释放全零的块,用量化的 bit 压缩空 间,使用 omp 或 tbb 并行,用 accessor 缓存坐标以减轻锁的压力。 • 评分规则:加速了多少倍就是多少分。
    0 码力 | 102 页 | 9.50 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践

    INode 一切节点的公共基类。 多态的经典案例 • IObject 具有一个 eatFood 纯虚函数,而 CatObject 和 DogObject 继承自 IObject ,他 们实现了 eatFood 这个虚函数,实现了多态。 • 注意这里解构函数( ~IObject )也需要是虚函数 ,否则以 IObject * 存储的指针在 delete 时只 会释放 IObject 里的成员,而不会释放 m_catFood 。所以 这里的解构函数也是多态的,他根据类型的不同 调用不同派生类的解构函数。 多态用于设计模式之“模板模式” • 这样之后如果有一个任务是要基于 eatFood 做文章,比如要重复 eatFood 两遍。 • 就可以封装到一个函数 eatTwice 里,这个函数只需接受他们共同的基类 IObject 作为参数,然后调 用 eatFood 这个虚函数来做事(而不是直接操作具体的猫和狗本身)。 dont-repeat-yourself ), 也让函数的作者不必去关注点从猫和狗的其他具体细节,只需把握住他们统一具有的“吃”这个接口。 小知识: shared_ptr 如何深拷贝? 浅拷贝: 深拷贝: 思考:能不能把拷贝构造函数也作为虚函数? • 现在我们的需求有变,不是去对同一个对象调用两次 eatTwice ,而是先把对象复制一份 拷贝,然后对对象本身和他的拷贝都调用一次 eatFood 虚函数。 • 代码如下
    0 码力 | 54 页 | 3.94 MB | 1 年前
    3
共 28 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件150212游人RustCCAtlasGraph14041110
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩