【免费下载链接】cpu-performance-engineeringA reading path for CPU performance engineering, from one instruction to production inference. Primary sources only, with a runnable benchmark for every section.项目地址https://gitcode.com/gh_mirrors/cp/cpu-performance-engineering点击查看免费下载CPU Performance Engineeringcpu-performance-engineering 开源项目是一条面向 CPU 性能工程的完整学习路径从单条指令一路到生产级推理每一节都配一个可复现、可直接运行的基准测试。本文聚焦其中第 14 号实验在混用 P-core性能核与 E-core能效核的异构芯片上同一份代码两种核心的速度差最高达 12 倍——而这正是两个基准数字能否比较这一前提问题的核心。一、CPU 性能工程中的 P-core 与 E-core异构 CPU 基础现代 CPU 性能工程不能再假设芯片上的核都一个速度。异构芯片混装两种核心P-coreperformance core性能核管线宽、主频高、缓存大负责交互式、低延迟任务E-coreefficiency core能效核管线窄、功耗低、缓存小负责同步、索引等后台任务调度器决定每个线程落在哪种核上。同一份二进制两种核心可以差出数倍——你无法默认代码跑在标准核上。实验机为Apple M4 Pro10 个 P-core 4 个 E-core无 SMT机器完整描述见 misc/benchmarks/README.md#L26-L37。二、实验设计同一份代码、三种瓶颈、四种放置14-pcore-vs-ecore 实验把 3 个覆盖 CPU 性能工程三大瓶颈类型的微基准跑在 4 种线程放置方式上微基准度量瓶颈类型dep_add_chain依赖加法链有效主频每周期 1 次加法CPU 时钟fma_l116 累加器 NEON FMA向量计算吞吐 GFLOP/s计算管线宽度stream_sum64 MiB 流式求和流式读取 GB/s带宽与访存并行度四种放置源码 bench.c① 主线程默认启动② pthread 不设 QoS③ pthread 请求QOS_CLASS_BACKGROUND通常认为的E-core 提示④ 整个进程用taskpolicy -c background钳制到后台类。⚠️关键设计macOS 不向用户态开放 CPU 亲和性 API实验没有钉死任何线程而是让每个采样都记录线程起止时实际所在的 cpu id以及线程真实的 CPU 时间占比——看调度器到底把活放到了哪而不是信任提示。三、实测 12 倍差距P-core 与 E-core 性能对比结果调度器实际只把第 ④ 种放到了 E-corecpu id 0-3前三种都留在了 P-core。结果摘录数据源 results/summary.md#L10-L15放置方式实际核心时钟中位FMA GFLOP/s流式 GB/s主线程默认P-core4.50 GHz144.182.2进程级 background 钳制E-core0.74 GHz*12.08.4* 墙钟口径E-core 与系统后台任务共享线程实际只获得 75.8% 时间按线程 CPU 时间口径中位主频为 1.12 GHz。差距不是一个数而随瓶颈类型变化P-core / E-core 比值口径时钟计算 FMA内存流式墙钟6.12×12.01×9.82×线程 CPU 时间4.03×9.01×7.52×同一台机器、同一份代码三个微基准给出三种不同的差距因子。四、差距拆解时钟 × 管线宽度 × 带宽为什么计算差距12×远大于时钟差距约 4-6×按每周期口径看P-core 维持4.00 FMA/cycle4 条向量管线喂满E-core 只有1.97管线宽度约一半计算差距 ≈ 时钟差距 × 管线宽度差距4.03 × 4.00/1.97 ≈ 8.2实测 9.01内存流式同理E-core 每周期搬 10.6 字节P-core 是 18.2——流式差距比时钟差距还大。因为单条读流受限于单核能同时保持多少个未命中请求访存并行度和预取器能提前多远这两样 E-core 都更少。另一个发现E-core 也不是单一速度——同一次运行中主频在 1.52 GHz最快采样到 1.12 GHz中位之间漂移变异系数 9.8%钳制后的簇频率被那里还跑着什么带着走。五、基准可比性的前提每个数字必备的 7 个字段本项目的核心主张也是 CPU 性能工程的基本纪律一个不说清核心类型和主频的基准结果是没有单位的数字不能与另一个结果比较。项目 README.md#L690-L705 定义了每个数字必须携带的 7 个字段缺一项即不予引用#字段1CPU 型号与微架构2使用的核心数3主频含 turbo 与 SMT 状态4编译器与编译参数5工作负载6基线7测量方法完整原始数据机器描述、负载、每个采样的 cpu id见 results/raw.txt。六、如何在自己机器上复现 P-core E-core 基准测试源码为 C11 pthreads带#if守卫可同时在 Linux x86-64 / arm64 编译非 Apple 平台跳过钳制放置可用taskset/cpuset 代替。若本地尚无仓库git clone https://gitcode.com/gh_mirrors/cp/cpu-performance-engineeringcd misc/benchmarks/14-pcore-vs-ecore ./run.sh # 完整运行约 10 秒 QUICK1 ./run.sh # 冒烟测试约 2 秒run.sh 会先在输出顶部写入机器描述与负载均值再用 common/clock_estimate.c 的依赖加法链估算主频本机P-core 约 4.49 GHzbackground 钳制下约 1.04 GHz。七、给新手的 3 条启示比较数字前先问哪个核核心类型和主频是结果的单位就像 GB/s 本身只是单位。提示不等于钉死线程级QOS_CLASS_BACKGROUND这次调度器根本没理会仍留在 P-core只有进程级钳制才真正换了核——所以必须记录工作实际跑在哪而不是信任你的设置。差距不能外推12× 的计算差距与约 8-10× 的内存差距来自同一台机器的不同瓶颈把 P/E 核差距当成一个固定倍率会高估或低估你的每一项优化。项目其余 13 个基准覆盖分支误预测、缓存延迟、测量陷阱、伪共享、NUMA first-touch、协同遗漏等主题完整清单见 misc/benchmarks/README.md。赞分享【免费下载链接】cpu-performance-engineeringA reading path for CPU performance engineering, from one instruction to production inference. Primary sources only, with a runnable benchmark for every section.项目地址https://gitcode.com/gh_mirrors/cp/cpu-performance-engineering点击查看免费下载相关推荐HandBrake性能基准测试不同CPU/GPU的转码速度对比HandBrake性能基准测试不同CPU/GPU的转码速度对比 引言为什么转码性能至关重要 在当今视频内容爆炸的时代无论是专业创作者还是普通用户都面临音视频视频处理桌面应用Synergy-core性能基准测试不同硬件配置下的表现对比Synergy core性能基准测试不同硬件配置下的表现对比 Synergy core作为开源跨平台键盘鼠标共享工具的核心组件在Windows、macOS和桌面应用网络通信CANN/hcomm线程资源获取超时设置HcommThreadResAcquireTimeOut 产品支持情况 Ascend 950PR/Ascend 950DT支持 Atlas A3 训练系列产品通信高性能计算人工智能CANNAscend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考