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

无数据

分类

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

语言

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

格式

全部PPT文档 PPT(26)
 
本次搜索耗时 0.018 秒,为您找到相关结果约 26 个.
  • 全部
  • 后端开发
  • C++
  • Rust
  • 系统运维
  • DevOps
  • 数据库
  • MySQL
  • 全部
  • 中文(简体)
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器

    • 读取 map 中指定键值的元素有两种方法。 • val = m[“key”]; // 读取键值为 “ key” 的元素,如果不存在,那就创建 “ key” 元素 • val = m.at(“key”); // 读取键值为 “ key” 的元素,如果不存在,抛出异常 • 所以 [] 和 at() 唯一的区别,在于键值不存在这一特殊情况的处理方式。 理方式。 • [] 默默创建。 • at() 抛出异常。 读取 map 元素 • map m; • val = m[“key”]; • 读取键值为 “ key” 的元素,如果不存在,那就创建一个 “ key” 元素并初始化为 0 。等价于: • it = m.find(“key”); • if (it == m.end()) { • it = m.insert({“key” map m; • val = m.at(“key”); • 读取键值为 “ key” 的元素,如果不存在,那就抛出异常,导致程序异常退出。等价于: • it = m.find(“key”); • if (it == m.end()) { • throw std::out_of_range(“ 找不到键值” ); • } • val = it->second; 从 map 中读取元素:
    0 码力 | 90 页 | 8.76 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型

    map 基于红黑树,会按照键值排序,需要键值具有 operator< 重载,复杂度 O(logn) C++11 新增的 unordered_map 基于哈希表,不保证顺序但更高效,需要键值能被哈希,复杂度 O(1) 用 unordered_map 按 16x16 分块存储 分块能减少 unordered_map 中存储的表项数量,从而减轻哈 希的压力。但意味着键值在空间上需要具有一定的局域性,否 segf 了? 按理说不会越界才对? C 语言 % 的特色:负数 • 7 % 4 = 3 • -7 % 4 = -3 • 也就是说 a % b 如果 a 是负数,则得到的模也是负数。 Python 的 % 就没问题 • 7 % 4 = 3 • -7 % 4 = 1 • Python 的模运算 a % b 的值始终是 [0, b) 区间内的正数,非常方便。 对稀疏数据结构造成的问题 • • 如果这里的 x 是负数,则 x % B 也是负数,会造成对 m_block 的越界访问。 • 因此 % 会返回负数对 CFD 用户来说是个很大的坑点,很多人想当然地用 % 做循环边界, 然而这对负方向会不起作用。 解决: (a % b + b) % b • 我看一些 CFD 用户喜欢写 (a + b) % b 做循环边界 ,从而避免负方向上出错。然而这还是避免不了 a < -b 时的出错。
    0 码力 | 102 页 | 9.50 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程

    比如这里设置了 RTX3000 系列的架构版 本号 86 ,在 RTX2080 上就运行不出结 果。 • 最坑的是他不会报错!也不输出任何东西 !就像没有那个 kernel 一样!所以一定 要注意调对你的版本号。否则就会这样 kernel 好像没有执行过一样,只有 CPU 上的代码被执行了。 指定多个版本号 • 可以指定多个版本号,之间用分号分割。 • 运行时可以自动选择最适合当前显卡的版 不过我还是建议把要相互调用的 __device__ 函数放在 同一个文件,这样方便编译器自动内联优化(第四课讲 过)。 两种开启方式:全局有效 or 仅针对单个程序 只对 main 这个程序启用: 对下方所有的程序启用(推荐): 顺便一提, CXX_STANDARD 和 CUDA_ARCHITECTURES 也有 这两种方式,我一般推荐直接设置全局的 CMAKE_CXX_STANDARD 即可应用到全部 • vector 在初始化的时候(或是之后 resize 的时候)会调用所 有元素的无参构造函数,对 int 类型来说就是零初始化。然而 这个初始化会是在 CPU 上做的,因此我们需要禁用他。 • 可以通过给 allocator 添加 construct 成员函数,来魔改 vector 对元素的构造。默认情况下他可以有任意多个参数,而 如果没有参数则说明是无参构造函数。 • 因此我们
    0 码力 | 142 页 | 13.52 MB | 1 年前
    3
  • ppt文档 谈谈MYSQL那点事

    以上,推荐是 16M ,该选项对 排序 order by , group by 起作用 record_buffer 128K 64M 每个进行一个顺序扫描的线程为其扫描的每 张表分配这个大小的一个缓冲区,可以设置 为 2M 以上 table_cache 64 1024 为所有线程打开表的数量。增加该值能增加 mysqld 要求的文件描述符的数量。 MySQL 对每个唯一打开的表需要 2 个文件描述符。 代表日志只大约每秒写入日志文件并且日志文件 刷新到磁盘 ; 1 为执行完没执行一条 SQL 马上 commit; 2 代表日志写入日志文件在每次提交 后 , 但是日志文件只有大约每秒才会刷新到磁盘上 . 对速度影响比较大,同时也关系数据完整性 innodb_log_file_size 8M 512M 在日志组中每个日志文件的大小 , 一般是 innodb_buffer_pool_size 的 25% ,官方推荐是 像性别、状态值等等建立索引没有意义  字段唯一,最少,不可为 字段唯一,最少,不可为 null null  对大数据量表建立聚集索引,避免更新操作带来的碎片。 对大数据量表建立聚集索引,避免更新操作带来的碎片。  尽量使用短索引,一般对 尽量使用短索引,一般对 int int 、 、 char/varchar char/varchar 、 、 date/tim date/tim
    0 码力 | 38 页 | 2.04 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅

    最后只需将 4 个小块拼接起来即可得到完整 的 cornell box 图像。总共只花了 1 分钟。 图形学爱好者:我看中的是多核,目的是加速比,如果是单核,那多线程对我无用! 某互联网公司:我看中的是异步,目的是无阻塞,即使是单核,多线程对我也有用。 因特尔开源的并行编程库: TBB https://link.springer.com/chapter/10.1007%2F978-1-4842-4398-5_2 4*1+1*3=7 度电 总用时: 1+3=4 秒 结论:并行缩并的时间复杂度为 O(n/c+c) ,工作复杂度为 O(n) ,其中 n 是元素个数 改进的并行缩并( GPU ) • 刚才那种方式对 c 比较大的情况不友好, 最后一个串行的 for 还是会消耗很多时间 。 • 因此可以用递归的模式,每次只使数据缩 小一半,这样基本每次都可以看做并行的 for ,只需 log2(n) 次并行 个逻辑核心。 • 似乎这里 reduce 的加速比是逻辑核心数量,而 for 的加速比是物理核心的数量? • 剧透:因为本例中 reduce 是内存密集型, for 是计算密集型。 • 超线程对 reduce 这种只用了简单的加法,瓶颈在内存的算法起了作用。 • 而本例中 for 部分用了 std::sin ,需要做大量数学运算,因此瓶颈在 ALU 。 • 这里卖个关子,欲知后事如何,请待下集揭晓!
    0 码力 | 116 页 | 15.85 MB | 1 年前
    3
  • ppt文档 Zadig 产品使用手册

    专门面向开发者的生产力平台,涵盖需求到开 发,测试,运维的云原生一体化技术底座支撑 云厂商 DevOps 平台 华为云 DevCloud 阿里云效 腾讯 CODING 云厂商引流为主,锁定风险高 对多云跨地域支持不够 实施负担较重难以推广 面向多云友好,厂商中立,全球多地跨云跨域 安全可靠自动化部署 云原生 CI/CD 工具 Tekton Argo 使用门槛高、学习成本高 需要额外建设全流程能力 、研发利用率极低 环境不透明、测试效率低下、测 试有效性低、大量手工、价值难 以体现 上下游烟囱式、协作效率低、团 队花大量时间在碎片化沟通和流 程制定上、各方能力受限、无法 快速响应市场需求 层级越高、对产研状态越模糊 管理低效、延误战机 少量配置、快速拉起环境、稳定 性有保障、减少 90% 手工操作、 赋能开发、员工成就感高 碎片化:手工协作 + 复杂工具链 工程化:一个平台 一键发布 工作流、环境配置自动更新、高 程 实 践 : • 持 续 集 成 ( C I 针 对 代 码 ) • 持 续 交 付 ( C D 针 对 需 求 ) • 持 续 部 署 ( C D 针 对 服 务 ) • 持 续 测 试 ( C T 针 对 全 流 程 ) • 持 续 安 全 ( C S 针 对 全 流 程 ) • 持 续 运 营 ( C O 针 对 全 流 程 ) 涉 及 角 色 : • 开 发 •
    0 码力 | 52 页 | 22.95 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    int 数组里赋值 1 比赋值 0 慢一倍? 第 1 章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( memory-bound )。 • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环 • funcC 用了 6 核才饱和。 • 结论:要想利用全部 CPU 核心,避免 mem-bound ,需要 func 里有足够的计算 量。 • 当核心数量越多, CPU 计算能力越强,相 对之下来不及从内存读写数据,从而越容 易 mem-bound 。 1 2 4 6 8 10 0 50 100 150 200 250 300 350 funcA funcB funcC 因此带宽是 31198 MB/s 。 • 和理论带宽 42672 MB/s 相差不多,符合我的预期 。 第 2 章:缓存与局域性 针对不同数据量大小的带宽测试 • 我们试试看 a 不同的大小,对带宽有什么影响。 针对不同数据量大小的带宽测试(续) • 可见数据量较小时,实际带宽甚至超过了 理论带宽极限 42672 MB/s ! • 而数据量足够大时, 才回落到正常的带宽 。 • 这是为什么?
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    可以拆分成三个部分: add , s , s 1. add 表示执行加法操作。 2. 第一个 s 表示标量 (scalar) ,只对 xmm 的最低位进行运算;也可以是 p 表示矢量 (packed) ,一次对 xmm 中所有位进行运算。 3. 第二个 s 表示单精度浮点数 (single) ,即 float 类型;也可以是 d 表示双精度浮点数 (double) ,即 double 类型。 • addss Procedure Linkage Table 的缩 写,即函数链接表。链接器会查找其他 .o 文件中是否定义了 _Z5otheri 这个符号, 如果定义了则把这个 @PLT 替换为他的地 址。 对 PLT 感兴趣?看 https://www.cnblogs.com/pannengzhi/p/2018-04-09-about-got-plt.html 编译器优化: call 变 jmp 多个函数定义在同一个文件中 而我们可以用 const 禁止写入访问。 结论:所有非 const 的指针都声明 __restrict 。 禁止优化: volatile 结论:加了 volatile 的对象,编 译器会放弃优化对他的读写操作 。 做性能实验的时候非常有用。 注意一下区别 1. volatile int *a 或 int volatile *a 2. int *__restrict a • 语法上区别:
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 Zadig 面向开发者的云原生 DevOps 平台

    专门面向开发者的生产力平台,涵盖全流程需求到 开发,测试,运维的云原生一体化技术底座支撑 云厂商 DevOps 平台 华为云 DevCloud 阿里云效 腾讯 CODING 容器云厂商 云厂商引流为主,锁定风险高 对多云跨地域支持不够 实施负担较重难以推广 面向多云厂商友好,实施迁移成本极低,可扩展性 强,全球多地跨云跨域安全可靠自动化部署 企业基于 CI/CD 工具自建 DevOps 流程平台 配置变更 生产观测 数据变更 灰度发布 流程自动化 特色模块(二) – 客户交付 供应商产品生命周期管理 为客户提供生命周期管理 管理不同渠道的版本 可部署到任何环境 简 化 对 客 户 的 本 地 、 私 有 云 、 离 线 环 境 的 产 品 发 布 、 许 可 和 支 持 的 管 理 产品各版本功能差异 基础版注重工程师体验,专家版保障稳定可靠高效发布;企业版安全发布、数据运营及企业扩展定制 极氪汽车平台工程落地成果 随着中国车企全球增长,海外业务拓展带来全球研发、交付、推广和运营挑战,在这出海挑战中,早期路特斯的软件交付流程 是基于 Jenkins 流水线设计的, Jenkins 的部署与数据中心一一对应。由于路特斯使用的是混合云,且数据中心遍布海外,导 致 Jenkins 数量庞大,随着业务扩张,早期架构难以适应快速变化,大量重复的事务性工作使得运维的人力捉襟见肘。 Zadig 的引入助力
    0 码力 | 59 页 | 81.43 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 05 C++11 开始的多线程编程

    不同在于:他的解构函数里会 自动调用 join() 函数,从而保证 pool 解 构时会自动等待全部线程执行完毕。 小彭老师快乐吐槽时间 • 多线程、异步、无阻塞、并发,能提升程序响应速度,对现实世界中的软件工程至关重要 。 • 反面教材: blender 在运行物理解算的时候,界面会卡住,算完一帧后窗口才能刷新一遍 ,导致解算过程中基本别想做事,这一定程度上归功于 opengl 原始的单线程设计。 data-race )现象。 std::mutex :上锁,防止多个线程同时进入某一代码段 • 调用 std::mutex 的 lock() 时,会检测 mutex 是否已经上锁。 • 如果没有锁定,则对 mutex 进行上锁。 • 如果已经锁定,则陷入等待,直到 mutex 被 另一个线程解锁后,才再次上锁。 • 而调用 unlock() 则会进行解锁操作。 • 这样,就可以保证 mtx.lock() lock() ,从而也不会出现一方等着对 方的同时持有了对方等着的锁的情况。 解决 2 :保证双方上锁顺序一致 • 其实,只需保证双方上锁的顺序一致,即 可避免死锁。因此这里调整 t2 也变为先 锁 mtx1 ,再锁 mtx2 。 • 这时,无论实际执行顺序是怎样,都不会 出现一方等着对方的同时持有了对方等着 的锁的情况。 解决 3 :用 std::lock 同时对多个上锁 • 如果没办法保证上锁顺序一致,可以用标
    0 码力 | 79 页 | 14.11 MB | 1 年前
    3
共 26 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件171008MySQL06Zadig产品使用手册使用手册0704面向开发开发者原生DevOps平台05
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩