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

无数据

分类

全部后端开发(15)C++(12)系统运维(2)DevOps(2)Rust(2)数据库(1)Go(1)MySQL(1)云计算&大数据(1)Kubernetes(1)

语言

全部中文(简体)(17)中文(简体)(2)

格式

全部PPT文档 PPT(19)
 
本次搜索耗时 0.017 秒,为您找到相关结果约 19 个.
  • 全部
  • 后端开发
  • C++
  • 系统运维
  • DevOps
  • Rust
  • 数据库
  • Go
  • MySQL
  • 云计算&大数据
  • Kubernetes
  • 全部
  • 中文(简体)
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    -j4 • sudo make install • cd .. • 需要先创建 build 目录 • 切换到 build 目录 • 在 build 目录运行 cmake < 源码目录 > 生成 Makefile • 执行本地的构建系统 make 真正开始构建( 4 进程并 行) • 让本地的构建系统执行安装步骤 • 回到源码目录 现代 CMake 提供了更方便的 -B 和 --build 上调用 devenv.exe ) • 结论:从现在开始,如果在命令行操作 cmake ,请使用更方便的 -B 和 --build 命令。 // 在源码目录用 -B 直接创建 build 目录并生成 build/Makefile // 自动调用本地的构建系统在 build 里构建,即: make -C build -j4 // 调用本地的构建系统执行 选项:指定配置变量(又称缓存变量) • 可见 CMake 项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 • 会在 build 目录下生成本地构建系统能识别的项目文件( Makefile 或是 .sln ) • 第二步是 cmake --build build ,称为构建阶段( build ),这时才实际调用编译器来编译代码
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串

    语言程序的思路,利用张心欣蒙眼的特性,利用他的粑粑,来 覆盖系统软件重要的数据结构(比如一个正在吃三文鱼刺身的西装),从而改变西装的行为。 弱引用失效案例 • 被引用的 string 本体修改的时候,原先生成的 string_view 会失 效(因为 ptr 和 len 改变了)。 • 因此建议创建 string_view 以后,不要改写原字符串。 举例:常见容器及其相应的弱引用 强引用 弱引用 Linux 命令行实验 Linux 命令行实验 字符串应用实战(作业) 第 10 章 课后作业 • 输入是一个文本文件 a.txt : • 1 xxx • 4 yyyyyyy • 3 zzzz • 2 wwwww • 要求按照前面的数字排序,输 出到另一个文本文件 b.txt : • 1 xxx • 2 wwwww • 3 zzzz • 4 yyyyyyy 非常感谢相依同学提供了这道有趣的题目:
    0 码力 | 162 页 | 40.20 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化

    简单来说:哪个索引最连续,就在后面,最不连 续的那个索引,就在最前面。 那么行主序其实是 XY 序,列主序其实是 YX 序。 如果你和盆友在电话里实在说不清楚,直接把扁 平化用的公式 (z * ny + y) * nx + x 通过文本信 息发给他也可,他看完就知道是 ZYX 序了。 主流程序都会用 YX 序, ZYX 序。 二维数组的遍历 • 二维数组在内存中的布局有 YX 序, XY 序。 • 二维数组的循环遍历也有 YX 的二进制数,交错打包成一个长度 2*n 的二进制数。而莫顿编码的逆运算,就是莫顿解码: • mdec(m1m2m3m4)=(m2m4, m1m3) • 莫顿码的几何意义在于,以 (x,y)=mdec(t) 为参数方程,可以生成一 条分形(自相似)的 Z 字型曲线。该曲线的有一个性质,上面两个 (x,y) 坐标相近的点,他们的 t 也相近(大概率)。 • 意义:可以用一维的 t 遍历二维的网格,然后用 mdec(t)
    0 码力 | 147 页 | 18.88 MB | 1 年前
    3
  • ppt文档 谈谈MYSQL那点事

    SQL SQL 语句的编写 语句的编写  谨慎建立 谨慎建立 unique unique 类型的索引(唯一索引) 类型的索引(唯一索引)  大文本字段不建立为索引,如果要对大文本字段进行检索, 大文本字段不建立为索引,如果要对大文本字段进行检索, 可以考虑全文索引 可以考虑全文索引  频繁更新的列不适合建立过多索引 频繁更新的列不适合建立过多索引 应用优化 应用优化
    0 码力 | 38 页 | 2.04 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    https://zhuanlan.zhihu.com/p/350136757 未来: C++20 允许函数参数为自动推断( auto ) 未来: C++20 引入协程( coroutine )和生成器( generator ) 未来: C++20 标准库加入 format 支持 跑远了! • 鉴于 C++20 还没有普遍落地(例如 CMake 不支持 C++20 modules )因此我们的课程 static_cast(ptr) 的错误 。 • 虽然作者也经常会忍不住在 zeno 中用 编译器默认生成的构造函数:无参数(小心 POD 陷阱!) • 除了我们自定义的构造函数外,编译器还会自动生成一些构造函数。 • 当一个类没有定义任何构造函数,且所有成员都有无参构造函数时,编译器会自动生成一 个无参构造函数 Pig() ,他会调用每个成员的无参构造函数。 • 但是请注意,这些类型不会被初始化为 编译器默认生成的构造函数:无参数( POD 陷阱解决方案) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,会在编译器自 动生成的构造函数里执行。 编译器默认生成的构造函数:无参数( POD 陷阱解决方案,续) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,不仅会在编译 器自动生成的构造函数里执行,也会用户自定
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起

    什么是编译器 • 编译器,是一个根据源代码生成机器码的程序。 • > g++ main.cpp -o a.out • 该命令会调用编译器程序 g++ ,让他读取 main.cpp 中的字符串(称为源码),并根据 C+ + 标准生成相应的机器指令码,输出到 a.out 这个文件中,(称为可执行文件)。 • > ./a.out • 之后执行该命令,操作系统会读取刚刚生成的可执行文件,从而执行其中编译成机器码, 其中使用 -c 选项指定生成临时的对象文件 main.o ,之后再根据一系列对象文件进行链接 ,得到最终的 a.out : • > g++ hello.o main.o -o a.out 为什么需要构建系统( Makefile ) • 文件越来越多时,一个个调用 g++ 编译链接会变得很麻烦。 • 于是,发明了 make 这个程序,你只需写出不同文件之间的依赖关系,和生成各文件的规则。 • hello.o ,而不需要把 main.o 也重新编译一遍。 2. 能够自动并行地发起对 hello.cpp 和 main.cpp 的编译,加快编译速度( make -j )。 3. 用通配符批量生成构建规则,避免针对每个 .cpp 和 .o 重复写 g++ 命令( %.o: %.cpp )。 • 但坏处也很明显: 1. make 在 Unix 类系统上是通用的,但在 Windows 则不然。
    0 码力 | 32 页 | 11.40 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程

    用这个特性,我们可以用 CMake 的生成器表达式来实 现只对 .cu 文件开启此选项(不然给到 gcc 就出错 了)。 • 当然, constexpr 里没办法调用 printf ,也不能用 __syncthreads 之类的 GPU 特有的函数,因此也不能 完全替代 __host__ 和 __device__ 。 通过 #ifdef 指令针对 CPU 和 GPU 生成不同的代码 • CUDA msvc )生成 CPU 部分的指令码。然后送到真 正的 GPU 编译器生成 GPU 指令码。最后再链接成同一个文件 ,看起来好像只编译了一次一样,实际上你的代码会被预处理很 多次。 • 他在 GPU 编译模式下会定义 __CUDA_ARCH__ 这个宏,利用 #ifdef 判断该宏是否定义,就可以判断当前是否处于 GPU 模式 ,从而实现一个函数针对 GPU 和 CPU 生成两份源码级不同的 html#extended-notation 针对不同的架构,使用不同的代码 通过 CMake 设置架构版本号 • 可以用 CMAKE_CUDA_ARCHITECTURES 这个变量 ,设置要针对哪个架构生成 GPU 指令码。 • 小彭老师的显卡是 RTX2080 ,他的版本号是 75 ,因 此最适合他用的指令码版本是 75 。 • 如果不指定,编译器默认的版本号是 52 ,他是针对 GTX900
    0 码力 | 142 页 | 13.52 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    4GB 限制外,也有一定性能优势。 8 位, 16 位, 32 位, 64 位版本 al, ax, eax, rax r15b, r15w, r15d, r15 AT&T 汇编语言 GCC 编译器所生成的汇编语言就属于这种 返回值:通过 eax 传出 movl $42, %eax 相当于: eax = 42; 前 6 个参数:分别通过 edi , esi , edx , ecx , r8d , rsi 并不是指针 整数加常数乘整数:都可以被优化成 leal 因为这种线性变换在地址索引 中很常见,所以被 x86 做成 了单独一个指令。这里尽管不 是地址,但同样可以利用 lea 指令简化生成的代码大小。 eax = rdi + rsi * 8 指针访问对象:线性访问地址 rsi = (int64_t)esi eax = *(int *)(rdi + rsi * 4) 为什么乘以 :一个 float 加法。 • addsd :一个 double 加法。 • addps :四个 float 加法。 • addpd :两个 double 加法。 省流助手: 如果你看到编译器生成的汇编里,有大量 ss 结尾 的指令则说明矢量化失败;如果看到大多数都是 ps 结尾则说明矢量化成功。 xmm0 xmm1 xmm0 addss %xmm1, %xmm0 addps %xmm1
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming

    指令检测是否支持,如果在不支持 cmov 的 CPU 上使用会产生 SIGILL 错误。不过现在 64 位的 x86 CPU 都保证自带了 cmov 和 sse 拓展,所以不需要手动 开启什么开关编译器就会自动生成利用 cmov 和 sse 指令的高效代码,这也是 x86-64 的优点之一。 https://www.felixcloutier.com/x86/cmovcc https://www.felixcloutier (cond) * b // 方法 2 • 还有一种“摆烂”的做法: • (cond ? a : b) // 方法 3 • 三目运算符通常会变成和 if-else 一样的分 支,同样会生成条件跳转指令,理应一样 低效。但是有时候编译器会检测到,可以 帮你自动优化成无分支版本的。 “ 妙用加减乘”进行无分支优化的通用公式 • 我比较喜欢方法 2 ,因为他可以很直观地同样适用于多个分支的情况,例如: 我们照常编写了测试用例,禁止内联优化,同样 生成 10^7 个随机数( -512 到 512 区间)。 • 为什么采用需要三个分支的 clamp 做测试? • 优化级别在 -O1 以上时,对于只有两个分支的 if-else ,编译器往往会自动检测到可以优化,帮你 应用“妙用加减乘”了,无法体现手动优化的意义。 不同写法的性能测试 • 我们照常编写了测试用例,禁止内联优化,同样生成 10^7 个随机数(
    0 码力 | 47 页 | 8.45 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程

    func(int N); • 一个是模板参数,一个是函数参数,有 什么区别?有很大区别! • template 传入的 N ,是一个编译期常量,每个不同的 N ,编译器都会单独生成一份代码,从而可以对他做单独的优化 。 • 而 func(int N) ,则变成运行期常量,编译器无法自动优化,只 能运行时根据被调用参数 N 的不同。 • 比如 show_times<0>() 编译器就可以自动优化为一个空函数。 因此模板元编程对高性能编程很重要。 • 通常来说,模板的内部实现需要被暴露出来,除非使用特殊的手 段,否则,定义和实现都必须放在头文件里。 • 但也正因如此,如果过度使用模板,会导致生成的二进制文件大 小剧增,编译变得很慢等。 boost 编译慢的原因找到了……因为他们用了大量的模板 。 模板的应用:编译期优化案例 • 在右边这个案例中,我们声明了一个 sumto 函数,作用是求出从 是运行时判断,这样即 使是 debug 为 false 也会浪费 CPU 时 间。 模板的应用:编译期优化案例(续) • 因此可以把 debug 改成模板参数,这样 就是编译期常量。编译器会生成两份函数 sumto 和 sumto 。前者保 留了调试用的打印语句,后者则完全为性 能优化而可以去掉打印语句。 • 后者其实在编译器看来就是 • if (false)
    0 码力 | 82 页 | 12.15 MB | 1 年前
    3
共 19 条
  • 1
  • 2
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件111507MySQL0201080403
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩