- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何确定类(class)的 CPE?例如,我有一个循环的汇编代码:
# inner4: data_t = float
# udata in %rbx, vdata in %rax, limit in %rcx,
# i in %rdx, sum in %xmm1
1 .L87: # loop:
2 movss (%rbx,%rdx,4), %xmm0 # Get udata[i]
3 mulss (%rax,%rdx,4), %xmm0 # Multiply by vdata[i]
4 addss %xmm0, %xmm1 # Add to sum
5 addq $1, %rdx # Increment i
6 cmpq %rcx, %rdx # Compare i:limit
7 jl .L87 # If <, goto loop
我必须使用 float 据类型找到由关键路径确定的 CPE 的下限。我相信关键路径指的是最慢的可能路径,因此是程序必须执行 mulss 指令的路径,因为它占用了最长的时钟周期数。
但是,似乎没有任何明确的方法来确定 CPE。如果一条指令占用两个时钟周期,另一条占用一个时钟周期,那么后者能否在前者的第一个时钟周期之后开始?任何帮助,将不胜感激。谢谢
最佳答案
如果你想知道它需要多长时间,你应该测量它。执行循环大约 10^10 次,花费所需的时间并乘以时钟频率。您得到周期总数,除以 10^10 得到每次循环迭代的时钟周期数。
执行时间的理论预测几乎永远不会是正确的(而且大部分时间都很低),因为决定速度的因素有很多:
cmp
和 jl
可以融合)根据 CPU 并假设内存访问全部命中 L1 缓存,我认为循环每次迭代至少需要 3 个时钟周期,因为最长的依赖链有 3 个元素长。在具有较慢的 mulss
或 addss
指令的旧 CPU 上,所需时间会增加。
如果您真的对加速代码感兴趣,而不仅仅是一些理论观察,您应该对其进行矢量化。您可以使用类似的东西将性能提高 4-8 倍
.L87: # loop:
vmovdqa (%rbx,%rdx,4), %ymm0 # Get udata[i]..udata[i+7]
vmulps (%rax,%rdx,4), %ymm0, %ymm0 # Multiply by vdata[i]..vdata[i+7]
vaddps %ymm0, %ymm1, %ymm1 # Add to sum
addq $8, %rdx # Increment i
cmpq %rcx, %rdx # Compare i:limit
jl .L87 # If <, goto loop
之后您需要水平添加所有 8 个元素,当然还要确保对齐方式为 32 且循环计数器可被 8 整除。
关于performance - 如何判断CPE : Cycles Per Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419316/
我是一名初学者,正在学习 python (+pandas),希望我能很好地解释这一点。我有一个超过 300 万行的大型时间序列 pd 数据框,最初有 12 列跨越多年。这涵盖了从不同地点取票的人,这些
我们目前正在审查我们的 WCF 服务设计,困扰我的一件事是在 Per-Call 和 Per-Session 服务之间做出决定。我相信我了解两者背后的概念,但我并没有真正看到按调用服务的优势。我知道使用
这几天我在 Web 应用程序中从头开始构建一个新应用程序。 (技术是 Asp.Net,我使用的 ORM 是 Entity Framework。如果重要的话) 我不确定广泛使用的模式 session p
嗨,我收到以下错误,导致构建失败,但在 bin 中创建了 Wix 安装程序 MSI。我怎样才能避免这些错误或抑制? 错误 LGHT0204:ICE57:组件 'cmp52CD5A4CB5D668097
错误“错误 LGHT0204:ICE57:组件“XXX”同时具有每用户数据和可以是每用户或每台机器的 key 路径”是什么意思? 是否可以修复此错误? 无论如何,Wix 都会创建 msi 文件,并且可
我正在使用 NodeJS 和 amqplib构建一个简单的作业队列库(有点类似于 Jackrabbit) 用于服务,该服务应该解析包含有关许多不同事件的信息的相当大的提要。 信息被解析后,它被分发到数
我有一个 subversion 存储库,其中包含多个子文件夹,对应于构成我的项目的各种应用程序、配置文件、DLL 等(我将它们称为“模块”)。现在我们开始“分支”成几个相关的项目。也就是说,每个高级项
Google PageRank 是按整个网站(域)的一个值计算还是按每个网页计算? 最佳答案 Google 在多大程度上遵循众所周知的 PageRank 算法是他们的商业 secret 。在通用算法中
我正在构建一个网络爬虫,它有两个主要功能,它们都作为线程执行:- getter (抓取网站并将文件中的单独链接存储到数据库中)。- 下载器(根据 fetcher 返回的 url 下载文件)。 我有一个
我有一个运行 web 应用程序的 tomcat 服务器。在 webapp 的启动过程中,我使用为 interface ServletContextListener 实现的类设置了一些上下文参数。我在这
我正在建立一个系统,我希望每天为每个用户(1000+)添加一组值。 假设:我可以在这个系统中记录 Alice 和 Bob 何时醒来以及他们在 2019 年 8 月 1 日或 2024 年晚餐吃了什么。
我有一个包含选票的数据库。这些投票记录包括:“时间戳;分数” 分数是一个整数。 我想创建一个热图,所以我想要一个数据框,其中包含每个工作日每个小时的值以及该时间范围内所有分数的平均分。 如果该工作日的
我注意到您可以为 Opsworks 堆栈中的每个层创建 EBS 卷。 我的问题 :EBS 卷是在层的实例之间共享,还是每个实例都有自己的 EBS? (那么,是创建了一个 EBS,还是创建了多个?) 为
我们都知道我们应该将我们的 CSS 合并到一个文件中,但是是按站点还是按页面?我发现了两者的优缺点。 场景如下: 大型网站 CSS 文件分解为一个文件用于全局样式,多个文件用于模块 解决方案 A:将整
我有一组销售报告,其中包含报告“每天”或“每月”销售数据的商店。当我将它们绘制在同一张图表上时,“每月”数字看起来像尖峰,使图表难以理解。 我希望将那些“每月一次”的数字转换为在一个月中的几天内平均分
Google Drive API 有一个名为Queries per 100 seconds *per user* 的配额 - 但用户到底是什么?是根据 OAuth 2.0 客户端 ID 还是根据源 I
我知道 ServiceStack 提供了一个 RequiredRole 属性来控制权限,但是,这并不完全适用于我的用例。我有一个包含大量用户生成内容的网站。用户只能编辑他们有明确权限的文档。权限是按对
我有一个以下形式的数据框,其中每一行对应于机器上运行的一个作业: import pandas as pd df = pd.DataFrame({ 'MachineID': [4, 3, 2,
我有一个以下形式的数据框,其中每一行对应于机器上运行的一个作业: import pandas as pd df = pd.DataFrame({ 'MachineID': [4, 3, 2,
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是一名优秀的程序员,十分优秀!