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

无数据

分类

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

语言

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

格式

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

    TBB 开启的并行编程之旅 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: reduce , scan ,矩阵乘法等 10.存储大规模三维数据的关键:稀疏数据结构 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 第 0 章:从并发到并行 摩尔定律:停止增长了吗?
    0 码力 | 116 页 | 15.85 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器

    m) • 由于刚刚说了, map 真正的“元素类型”是 K-V 对,所以这里的 auto 如果不省略应该是 : • for (pair tmp: m) • 如果要单独访问 K 或者 V 怎么办?我们看一下 pair 的定义,里面只有两个成 员: • struct pair { • T1 first; T2 second; • }; }; map 的遍历:用 C++17 range-based loop • 所以 for (auto tmp: m) 这里 tmp 的类型是 pair 。 • 如果要单独访问 K 或者 V 怎么办?我们看一下 pair 的定义,里面只有两个成 员: • struct pair { • T1 first; • T2 second; } map 的遍历:用 C++17 range-based loop • 所以 for (auto tmp: m) 这里 tmp 的类型是 pair 。 • 如果要单独访问 K 或者 V 怎么办?我们看一下 pair 的定义,里面只有两个成 员: • struct pair { • T1 first; • T2 second;
    0 码力 | 90 页 | 8.76 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    s/104060927 环境变量的访问方式: $ENV{xx} • 用 ${xx} 访问的是局部变量,局部变量服从刚刚所说的父子模块传播规则。 • 而还有一种特殊的方式可以访问到系统的环境变量( environment variable ): $ENV{xx} 。 • 比如 $ENV{PATH} 就是获取 PATH 这个环境变量的值。 缓存变量的访问方式: $CACHE{xx} • 此外,还可以用 此外,还可以用 $CACHE{xx} 来访问缓存里的 xx 变量。 • 缓存变量和环境变量是不论父子模块都共用的,没有作用域一说。 ${xx} 找不到局部变量时,会自动去找缓存变量 • ${xx} 当找不到名为 xx 的局部变量时,就会去在缓存里查找名为 xx 的缓存变量。 • 因此这里 CMAKE_BUILD_TYPE 虽然在代码里没被 set ,但是他被 -D 参数固定在缓存 里了。
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程

    原来,三重尖括号里的第二个参数决定着启动 kernel 时所用 GPU 的线程数量。 • GPU 是为并行而生的,可以开启很大数量的 线程,用于处理大吞吐量的数据。 获取线程编号 • 可以通过 threadIdx.x 获取当前线程的编 号,我们打印一下试试看。 • 这是 CUDA 中的特殊变量之一,只有在 核函数里才可以访问。 • 可以看到线程编号从 0 开始计数,打印出 了 0 , 1 , 2 。这也是我们指定了线程数 之前执行了 ,这是因为板块之间是高度并行的,不保 证执行的先后顺序。线程之间也是,这里 线程打印顺序没乱,不过是碰巧小于 32 而 已。 注意不要混淆 • 当前线程在板块中的编号: threadIdx • 当前板块中的线程数量: blockDim • 当前板块的编号: blockIdx • 总的板块数量: gridDim • 线程 (thread) :并行的最小单位 • 板块 (block) :指整个任务,包含若干个板块 • 从属关系:线程<板块<网格 • 调用语法: <<>> 区分板块和线程有点麻烦?“扁平化”他们! • 你可能觉得纳闷,既然已经有线程可以并行了 ,为什么还要引入板块的概念?稍后会说明区 分板块的重要原因。 • 如需总的线程数量: blockDim * gridDim • 如需总的线程编号: blockDim * blockIdx
    0 码力 | 142 页 | 13.52 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( memory-bound )。 • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环体,并行才有较好的加速效果。称为计算瓶颈( cpu- bound )。 • 并行能减轻计算瓶颈,但不减轻内存瓶颈,故后者是优化的重点 并行能减轻计算瓶颈,但不减轻内存瓶颈,故后者是优化的重点 。 浮点加法的计算量 • 冷知识:并行地给浮点数组每个元素做一次加法反而更慢。 • 因为一次浮点加法的计算量和访存的超高延迟相比实在太少了。 • 计算太简单,数据量又大,并行只带来了多线程调度的额外开销 。 • 小彭老师经验公式: 1 次浮点读写 ≈ 8 次浮点加法 • 如果矢量化成功( SSE ): 1 次浮点读写 ≈ 32 次浮点加法 • 如果 CPU 符合小彭老师的经验公式。 • “right” 和“ wrong” 指的是分支预测是否成功。 多少计算量才算多? • 看右边的 func ,够复杂了吧?也只是勉勉强强超过一 点内存的延迟了,但在 6 个物理核心上并行加速后, 还是变成 mem-bound 了。 • 加速比: 1.36 倍 • 应该达到 6 倍(物理核心数量)才算理想加速比。 加速曲线 • funcA 用了 2 核就饱和。 • funcB
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起

    学 C++ 从 CMake 学起 by 彭于斌( @archibate ) 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: reduce , scan ,矩阵乘法等 10.存储大规模三维数据的关键:稀疏数据结构 11.物理仿真实战:邻居搜索表实现 流体求解 12.C++ 在 ZENO 中的工程实践:从 primitive 说起 13.结业典礼:总结所学知识与优秀作业点评 I 硬件要求: 64 位( 32 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业)
    0 码力 | 32 页 | 11.40 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程

    com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: reduce , scan ,矩阵乘法等 10.存储大规模三维数据的关键:稀疏数据结构 流体求解 12.C++ 在 ZENO 中的工程实践:从 primitive 说起 13.结业典礼:总结所学知识与优秀作业点评 I 硬件要求: 64 位( 32 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业)
    0 码力 | 82 页 | 12.15 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    bilibili.com/263032155 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: reduce , scan ,矩阵乘法等 10.存储大规模三维数据的关键:稀疏数据结构 流体求解 12.C++ 在 ZENO 中的工程实践:从 primitive 说起 13.结业典礼:总结所学知识与优秀作业点评 I 硬件要求: 64 位( 32 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业)
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践

    我们可以定义一个全局的函数表(右图中的 functab ),然后利用小彭老师的静态初始化 大法,把这些函数在 main 之前就插入到全局 的函数表。 • 这样 main 里面就可以仅通过函数名从 functab 访问到他们,从而 catFunc 和 dogFunc 甚至不需要在头文件里声明(只需 要他们的函数签名一样即可放入 function 容 器)。 静态初始化的顺序是符号定义的顺序决定的,若在不同文件则顺序可能打乱
    0 码力 | 54 页 | 3.94 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming

    分支预测成败对性能的影响 排序为什么对有分支的版本影响那么大 为什么需要流水线 • 为了高效, CPU 的内部其实是一个流水 线 (pipeline) 。流水线的目的是能把原本 串行的一系列指令并行化。为了理解为什 么需要流水线,我们先反过来,假设没有 流水线,会有什么坏处。 • 例如,右边你今天早上的任务清单。 • 请问你这些任务总共需要多少时间? 任务 时间 占用资源 洗脸 5 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 (无条件)跳转到结束 去医院 10 分钟 全身 结束 跳转指令对流水线效率的影响 • 然而跳转指令的存在使得流水线的并行变得很困难了。例如我们本来可以烧开水和刷牙同 时进行节省时间的,但是因为烧好开水以后还要判断“是否烫伤”才能决定接下来是正常刷牙 还是去医院。这意味着流水线不得不在跳转指令前后发生断层(俗称流水线里的气泡)。
    0 码力 | 47 页 | 8.45 MB | 1 年前
    3
共 25 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件0617110807010302
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩