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

无数据

分类

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

语言

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

格式

全部PPT文档 PPT(31)
 
本次搜索耗时 0.016 秒,为您找到相关结果约 31 个.
  • 全部
  • 后端开发
  • C++
  • Rust
  • 系统运维
  • DevOps
  • 数据库
  • Go
  • MySQL
  • 云计算&大数据
  • Kubernetes
  • 全部
  • 中文(简体)
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 RustBelt - Rust 的形式化语义模型

    第三届中国 Rust 开发者大会 王俊吉 RustBelt - Rust 的形式化语义模型 Outline Background • RustBelt Project • Rust Types Overview Rust Semantics • Type System • The own Predict • Exclusive Ownership & Mutable Borrow
    0 码力 | 21 页 | 2.63 MB | 1 年前
    3
  • ppt文档 Borsh 安全高效的二进制序列化

    第三届中国 Rust 开发者大会 安全高效的二进制序列化 Daniel Wang @ NEAR Borsh • 运行、编码效率 • 确定性 • 跨平台兼容性 二进制序列化的问题 Binary Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 执行速度 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark • 编译后的体积更小 • borsh 序列化后的二进制更精简 轻量级 序列化结果体积对比 Borsh 基本用法 Case Study NEAR NEAR 智能合约 Case Study Solana 智能合约 Case Study • non self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用
    0 码力 | 21 页 | 3.35 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南

    CMake 模块化项目管理指南 彭于斌( @archibate ) 课件 & 源码: https://github.com/parallel101/course 往期录播: https://space.bilibili.com/263032155 找不到头文 件怎么办呀 CMake Cookbook 小彭老师建议 : ~~-·~·~-·~ -~·-·~·- 第一章:文件 / 目录组织规范 C/C++ 项目,如何优雅地、模块化地组织大量源文件 ? 推荐的目录组织方式 • 目录组织格式: • 项目名 /include/ 项目名 / 模块名 .h • 项目名 /src/ 模块名 .cpp • CMakeLists.txt 中写: • target_include_directories( 项目名 PUBLIC include) • 源码文件中写: • #include < com/parallel101/course/tree/master/16/00 推荐的目录组织方式 • 头文件(项目名 /include/ 项目名 / 模块名 .h )中写: • #pragma once • namespace 项目名 { • void 函数名 (); • } • 实现文件(项目名 /src/ 模块名 .cpp )中写: • #include < 项目名 / 模块名 .h>
    0 码力 | 56 页 | 6.87 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针

    表示不下,则自动选择较大的类型 标准化的类型: stdint.h • 而实际上,尽管主流操作系统上 int 都是 32 位的, C 语言标准并没有规定 int 就是 32 位 的。 • int 甚至可以是 16 位的!只不过主流操作系统一致认为是 32 位的而已,并不是标准所保 证的。 • 为了解决不同操作系统上对类型定义混乱的问题, C 语言标准引入了 stdint.h 这个头文件 。 • 他里面包含一系列类型别名 typedef int int32_t; • typedef long long int64_t; • 这样不论操作系统对类型的定义如何混乱,这些标准化的类型都是确定的大小。 • 这就避免了跨平台的麻烦,而且直接他们在类型名字中直接写明了类型的大小,更直观。 标准化的类型: stdint.h • 除了有符号的 int32_t 系列外,也提供了无符号 uint32_t 系列: • typedef unsigned unsigned short uint16_t; • typedef unsigned int uint32_t; • typedef unsigned long long uint64_t; 标准化的类型: stdint.h 类型 大小 是否有符号 int8_t 8 位 有 int16_t 16 位 有 int32_t 32 位 有 int64_t 64 位 有 uint8_t 8 位
    0 码力 | 128 页 | 2.95 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 • 会在 build 目录下生成本地构建系统能识别的项目文件( Makefile 或是 .sln ) • 第二步是 cmake --build build ,称为构建阶段( build ),这时才实际调用编译器来编译代码 • 在配置阶段可以通过 -D 设置缓存变量。第二次配置时,之前的 现在只需要写一次 CMakeLists.txt ,他会视不同的操作系统,生成不同构建系统的规则文件。 • 那个和操作系统绑定的构建系统( make 、 MSBuild )称为本地构建系统( native buildsystem )。 • 负责从 CMakeLists.txt 生成本地构建系统构建规则文件的,称为生成器( generator )。 -G 选项:指定要用的生成器 • Linux 启动时会把每个文件都检测一遍, 浪费很多时间。特别是有很多文件,但是实 际需要构建的只有一小部分,从而是 I/O Bound 的时候, Ninja 的速度提升就很明 显。 然而某些专利公司的 CUDA toolkit 在 Windows 上只允许用 MSBuild 构建,不能 用 Ninja (怕不是和 Bill Gates 有什么交 易) 第 1 章:添加源文件 一个 .cpp 源文件用于测试
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程

    里直接加你 的 .cu 文件,和 .cpp 一样。 https://www.nvidia.cn/docs/IO/51635/NVIDIA_CUDA_Programming_Guide_1.1_chs.pdf CUDA 编译器兼容 C++17 • CUDA 的语法,基本完全兼容 C++ 。包括 C+ +17 新特性,都可以用。甚至可以把任何一个 C++ 项目的文件后缀名全部改成 .cu ,都能编 CUDA 的一大好处, CUDA 和 C++ 的关 系就像 C++ 和 C 的关系一样,大部分都兼容 ,因此能很方便地重用 C++ 现有的任何代码库 ,引用 C++ 头文件等。 • host 代码和 device 代码写在同一个文件内,这 是 OpenCL 做不到的。 编写一段在 GPU 上运行的代码 • 定义函数 kernel ,前面加上 __global__ 修 饰符,即可让他在 GPU CUDA 编译器。 GCC 编译器相应的私货则 是 __attribute__((“inline”)) 。 • 注意声明为 __inline__ 不一定就保证内联了,如果函数太大编 译器可能会放弃内联化。因此 CUDA 还提供 __forceinline__ 这个关键字来强制一个函数为内联。 GCC 也有相应的 __attribute__((“always_inline”)) 。 • 此外,还有
    0 码力 | 142 页 | 13.52 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    令解码和指令缓存的压力等原因,出现加速超过 4 倍的情况。 第 1 章:化简 编译器优化:代数化简 编译器优化:常量折叠 编译器优化:举个例子 编译器优化:我毕竟不是万能的 结论:尽量避免代码复杂化,避免使用会造 成 new/delete 的容器。 简单的代码,比什么优化手段都强。 造成 new/delete 的容器:我是说,内存分配在堆上的容器 • 存储在堆上(妨碍优化): • vector 写,即函数链接表。链接器会查找其他 .o 文件中是否定义了 _Z5otheri 这个符号, 如果定义了则把这个 @PLT 替换为他的地 址。 对 PLT 感兴趣?看 https://www.cnblogs.com/pannengzhi/p/2018-04-09-about-got-plt.html 编译器优化: call 变 jmp 多个函数定义在同一个文件中 如果 _Z5otheri 定义在同一个文件中,编 译器会直接调用,没有 译器会直接调用,没有 @PLT 表示未定义 对象。减轻了链接器的负担。 编译器优化:内联化 只有定义在同一个文件的函数可以被内联 !否则编译器看不见函数体里的内容怎么 内联呢? 为了效率我们可以尽量把常用函数定义在 头文件里,然后声明为 static 。这样调用 他们的时候编译器看得到他们的函数体, 从而有机会内联。 内联:当编译器看得到被调用函数( other )实现的时候 ,会直接把函数实现贴到调用他的函数(
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程

    编译器就可以自动优化为一个空函数。 因此模板元编程对高性能编程很重要。 • 通常来说,模板的内部实现需要被暴露出来,除非使用特殊的手 段,否则,定义和实现都必须放在头文件里。 • 但也正因如此,如果过度使用模板,会导致生成的二进制文件大 小剧增,编译变得很慢等。 boost 编译慢的原因找到了……因为他们用了大量的模板 。 模板的应用:编译期优化案例 • 在右边这个案例中,我们声明了一个 )的,不能分离声明和定义在另一个文件里。标准库的很多函数如 std::min 也是 constexpr 函数,可以放心大胆在模板尖括号内使用。 模板的难题:移到另一个文件中定义 • 如果我们试着像传统函数那样分离模板函数的声明与实现: • 就会出现 undefined reference 错误: 模板的难题:移到另一个文件中定义(续) • 这是因为编译器对模板的编译是惰性的,即只有当前 .cpp 文件用到了这个模板,该模板 sumto<> 函数的两份声明,从而出错。 • 解决:在看得见 sumto<> 定义的 sumto.cpp 里,增加两个显式编译模板的声明: 一般来说,我会建议模板不要 分离声明和定义,直接写在头 文件里即可。如果分离还要罗 列出所有模板参数的排列组合 ,违背了开 - 闭原则。 模板的惰性:延迟编译 • 要证明模板的惰性,只需看这个例子: • 要是编译器哪怕细看了一眼:字符串怎么可能被写入呢?肯定是会出错的。
    0 码力 | 82 页 | 12.15 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起

    a.out 这个文件中,(称为可执行文件)。 • > ./a.out • 之后执行该命令,操作系统会读取刚刚生成的可执行文件,从而执行其中编译成机器码, 调用系统提供的 printf 函数,并在终端显示出 Hello, world 。 厂商 C C++ Fortran GNU gcc g++ gfortran LLVM clang clang++ flang 多文件编译与链接 • 单文件编译虽然方便,但也有如下缺点: 单文件编译虽然方便,但也有如下缺点: 1. 所有的代码都堆在一起,不利于模块化和理解。 2. 工程变大时,编译时间变得很长,改动一个地方就得全部重新编译。 • 因此,我们提出多文件编译的概念,文件之间通过符号声明相互引用。 • > g++ -c hello.cpp -o hello.o • > g++ -c main.cpp -o main.o • 其中使用 -c 选项指定生成临时的对象文件 选项指定生成临时的对象文件 main.o ,之后再根据一系列对象文件进行链接 ,得到最终的 a.out : • > g++ hello.o main.o -o a.out 为什么需要构建系统( Makefile ) • 文件越来越多时,一个个调用 g++ 编译链接会变得很麻烦。 • 于是,发明了 make 这个程序,你只需写出不同文件之间的依赖关系,和生成各文件的规则。 • > make a.out •
    0 码力 | 32 页 | 11.40 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践

    html 类型擦除利用的是 C++ 模板的惰性实例化, Java 的泛型是做不到滴 • 由于 C++ 模板惰性编译的特性,这个擦除掉的表达式会在你实例化 AnimalWrapper 的时候 自动对 T 进行编译。这意味着如果你给他一个不具有一个名为 speak 成员函数的类(比如这里 的 Phone 类只有 play 函数)就会在实例化的那行出错。 • 注意:这里的 m_inner.speak() speak() 只是一个例子,其实不一定是成员函数,完全可以是 std::sort(m_inner.begin(), m_inner.end()) 之类的任意表达式,只要语义上通过,就可以实例化。 • (把 sort 封装成虚函数,留作回家作业) Zeno 中对 OpenVDB 的类型擦除 • 结合类型擦除技术,自动虚克隆技术。 • VDBGrid 作为所有网格类的基类提供各个 操作做为虚函数, C/C++ 程序中 第一个执行的函数,是程序的入口点。 • 但,他真的是第一个执行的吗? 全局变量初始化的妙用 • 我们可以定义一个 int 类型全局变量 helper ,然后他的右边其实是可以写一个表达 式的,这个表达式实际上会在 main 函数之 前执行! • 全局变量的初始化会在 main 之前执行,这实 际上是 C++ 标准的一部分,我们完全可以放 心利用这一点来执行任意表达式。
    0 码力 | 54 页 | 3.94 MB | 1 年前
    3
共 31 条
  • 1
  • 2
  • 3
  • 4
前往
页
相关搜索词
王俊吉RustConf2023RustBeltRustBorshC++高性性能高性能并行编程优化课件16121108040301
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩