附录A和B

news/2025/2/1 18:04:38/

动态评率调节

动态频率调节是一种在运行苛刻任务时通过自动提高CPU频率来提高系统性能的技术。Intel CPU的Turbo Boost就是此类。

同步多线程

一个物理核中可以同时执行2个线程。通常,架构状态会被复制成多份,但执行资源(ALU、缓存)不会被复制。

缩放调试器

Linux内核可以基于不同目的控制CPU频率,目的之一是节省电力。

CPU亲和性

处理器亲和性可以将进程绑定在某个CPU核上,在LInux可以使用taskset工具完成该操作。如perf stat -e --taskset -c 0 a.exe命令。

进程优先级

在linux中,可以用nice工具提高进程优先级。 优先级从-20(最高)到19(最低)不等,默认是0。perf stat -r 10 -- sudo nice -n -5 taskset -c 1 a.exe命令。

文件系统缓存

未知迭代次数的循环

循环不会处于完整清晰的状态,向量化程序必须猜测和假设丢失的信息,并在运行时检查详细信息。如果假设证明是错误的,向量化程序将回退到标量循环中。

对于n不是向量宽度的倍数,向量化程序必须将最后几次迭代作为标量代码执行,而保留循环的标量副本会增加代码大小。

运行时指针检查

一些程序员会使用restrict关键字通知编译器指针不连续。不过,有时LLVM循环向量化程序通过放置某些代码来检查两个指针是否指向不连续的内存地址。

规约

循环传递依赖会阻止向量化,但规约变量除外。

If转换

LLVM向量化能够扁平化代码中的if语句,生成单个指令流。

数学函数向量化

LLVM循环向量化内建数学函数。

向量化过程中的部分展开

SLP向量化

Superword-level parallelism, SLP向量化程序试图将多个标量运算黏合在一起,形成向量运算。它自下而上跨多个基本块处理代码,以寻找要组合的标量值。

外循环向量化

CUDA和OpenCL依赖外循环向量化,因为它们指定的迭代在循环外部维度上彼此独立。

        1. 硬件性能增长速度在放缓,软件性能调优越来越重要;
        2. 有意义的性能分析应该考虑噪声,并使用统计方法来分析性能测量数据;
        3. 预测特定代码段的性能几乎是不可能得。一定要测量!
        4. 性能调优很难,工程师需要从不同的角度解决问题,需要了解可用的性能分析方法和工具(硬件和软件)。比如屋顶线模型和TMA,利用LBR\PEBS和PT等其他硬件监控功能。
        5. 了解应用程序性能的限制因素以及解决相关问题的方法。
        6. 如果代码修改的好处可以忽略不计,则应该将代码保持为最简单、干净的形式。


http://www.ppmy.cn/news/1055543.html

相关文章

可视化绘图技巧100篇基础篇(五)-环形图(一)

目录 前言 适用场景 图例 圆环图分类 1. 标准圆环图 2. 布尔圆环图 3. 标签圆环图

云服务器(Centos7系统)配置JAVA+mysql+tomcat 环境

文章主要内容来源云服务器(Centos7系统)部署javaweb项目(二)配置JAVAmysqltomcat 环境_man_zuo的博客-CSDN博客 模仿途中遇到的问题 连接无效 有时连接无法下载,可能是过期了,将其更换为官网给的下载连接即…

Flutter性能揭秘之RepaintBoundary

作者:xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新,那就只能重绘了。尽管如此,Flutter同样会重新绘制一些Widget,而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能,有时…

kafka复习:(3)自定义序列化器和反序列化器

一、实体类定义: public class Company {private String name;private String address;public String getName() {return name;}public void setName(String name) {this.name name;}public String getAddress() {return address;}public void setAddress(String a…

手机NFC功能是什么?

手机NFC功能是什么? 随着智能手机的不断发展和普及,NFC(近场通讯)功能已经成为了我们生活中不可或缺的一部分。NFC是一种无线通信技术,可以让手机和其他设备之间进行快速的数据交换和支付操作。那么,手机NFC功能是什么&#xff1…

OpenEuler 23.03恢复python3

OpenEuler 23.03装好后&#xff0c;无脑又装了一下python 3.11 .发现yum dnf 都不能用了&#xff0c;提示&#xff1a; Traceback (most recent call last): File "/usr/bin/yum", line 61, in <module> from dnf.cli import main ModuleNotFoundError:…

PyTorch翻译官网教程-PROFILING YOUR PYTORCH MODULE

官网链接 Profiling your PyTorch Module — PyTorch Tutorials 2.0.1cu117 documentation 分析pytorch模块 PyTorch包含一个分析器API&#xff0c;用于识别代码中各种PyTorch操作的时间和内存成本。分析器可以很容易地集成到代码中&#xff0c;结果可以作为表格打印或以JSON…

『SEQ日志』在 .NET中快速集成轻量级的分布式日志平台

&#x1f4e3;读完这篇文章里你能收获到 如何在Docker中部署 SEQ&#xff1a;介绍了如何创建和运行 SEQ 容器&#xff0c;给出了详细的执行操作如何使用 NLog 接入 .NET Core 应用程序的日志&#xff1a;详细介绍了 NLog 和 NLog.Seq 来配置和记录日志的步骤日志记录示例&…