问题标签 [flops]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 FLOPS 中估计 GPU 的效率(CUDA SAMPLES)
在我看来,我并不完全理解 FLOPS 的概念。在 CUDA SAMPLES 中,有矩阵乘法示例 (0_Simple/matrixMul)。在此示例中,每个矩阵乘法的 FLOP(浮点运算)数通过以下公式计算:
所以,这意味着,为了将矩阵乘以A(n x m)
,B(m x k)
我们需要做:2*n*m*k
浮点运算。
但是,为了计算结果矩阵的 1 个元素C (n x k)
,必须执行m
乘法和(m-1)
加法运算。因此,操作总数(计算n x k
元素)是m*n*k
乘法和(m-1)*n*k
加法。
当然,我们也可以设置加法的次数为m*n*k
,总运算次数为2*n*m*k
,一半是乘法,一半是加法。
但是,我想,乘法比加法计算成本更高。为什么这两种操作混在一起?计算机科学总是如此吗?如何考虑两种不同类型的操作?
对不起我的英语不好)
c - 确定我们 ASM 程序的 FLOPS
我们必须实现一个 ASM 程序,以将坐标方案格式 (COOS) 和压缩行格式 (CSR) 中的稀疏矩阵相乘。现在我们已经实现了所有这些算法,我们想知道与通常的矩阵乘法相比,它们的性能提高了多少。我们已经实现了代码来测量所有这些算法的运行时间,但现在我们决定我们还想知道每秒可以执行多少次浮点运算 (FLOPS)。关于如何测量/计算这个的任何建议?
这里有一些关于所用系统的背景信息:
我们现在的第一个想法是实现一种 FPO 计数器,我们在每次浮点运算(算术运算以及比较和移动运算)之后递增,但这意味着我们必须在整个代码中插入递增运算,这也会减慢关闭应用程序...有谁知道是否有某种硬件计数器可以计算浮点运算的数量,或者是否存在某种性能工具可以用来监视我们的程序并测量 FPO 的数量。任何建议或指示将不胜感激。
这是使用计数方法评估矩阵乘法的 FLOP。我们首先测量了我们感兴趣的每条指令的运行时间,而不是插入的计数器,然后我们计算了每秒浮点操作的数量。
cycle - 如何计算 1 个核心的浮点加法的周期/问题?
(不是作业!!)这是我的处理器:Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
核心数:2
我正在阅读 FLOPS 我遇到了一个问题,询问计算周期 / 问题为 1 个核心的浮点加法。(我知道我拥有的核心数量)我应该研究我的机器的架构并计算周期吗???)
我不确定什么是问题(指令??),您将如何计算周期?如果有人可以提示我,我将不胜感激。
谢谢你。
c - 计算 FLOP
我正在编写一个程序来计算我的 CPU 执行一个“FLops”所需的持续时间。为此,我编写了下面的代码
我重复相同操作的问题。编译器不会优化这种“事物”吗?如果是这样,我必须做什么才能获得正确的结果?
我没有使用“rand”函数,所以它不会与我的结果冲突。
sse - 对于 Intel Haswell 上的 XMM/YMM FP 操作,可以使用 FMA 代替 ADD 吗?
这个问题适用于 Haswell 上带有 XMM/YMM 寄存器的打包单精度浮点运算。
因此,根据 Agner Fog 整理的令人敬畏的、令人敬畏的 表,我知道 MUL 可以在端口 p0 和 p1 上完成(recp thruput 为 0.5),而仅 ADD 仅在端口 p1 上完成(recp thruput 为 1 )。我可以排除这个限制,但我也知道 FMA 可以在端口 p0 或 p1 上完成(recp thruput 为 0.5)。因此,当 FMA 可以使用 p0 或 p1 并且它同时执行 ADD 和 MUL 时,为什么普通的 ADD 将仅限于 p1,这让我感到困惑。我误解了这张桌子吗?或者有人可以解释为什么会这样吗?
也就是说,如果我的阅读是正确的,英特尔为什么不直接使用 FMA 运算作为普通 MUL 和普通 ADD 的基础,从而增加 ADD 和 MUL 的吞吐量。或者,什么会阻止我使用两个同时的、独立的 FMA 操作来模拟两个同时的、独立的 ADD 操作?执行 ADD-by-FMA 的相关处罚是什么?显然,使用的寄存器数量更多(2 reg 用于 ADD,3 reg 用于 ADD-by-FMA),但除此之外呢?
c# - 在 C# 中乘以浮点数需要多少个周期
我有一个数字密集型应用程序,在互联网上寻找 GFLOPS 后,我决定做自己的小基准测试。我只是做了数千次单线程矩阵乘法来获得大约一秒钟的执行时间。这是内部循环。完整
自从我处理 FLOPS 以来已经有好几年了,所以我预计每个 FLOP 会得到大约 3 到 6 个周期。但是我得到了 30(100 MFLOPS),当然如果我并行化这个我会得到更多,但我只是没想到会这样。这可能是 dot NET 的问题吗?或者这真的是 CPU 性能吗?
这是完整基准代码的小提琴。
编辑:即使在发布模式下,Visual Studio 也需要更长的时间来运行,可执行文件本身在每个 FLOP(250 MFLOPS)中运行 12 个周期。仍然有任何 VM 影响吗?
performance - FLOPS 包括哪些所有操作?
FLOPS 代表每秒浮点运算,我知道浮点是什么。我想知道这些操作是什么?+, -, *, /
像取对数(),指数()这样的唯一操作或操作也是 FLO 吗?
+
两个花车的和是否 *
需要相同的时间?如果他们花费不同的时间,那么我应该从声明中得出什么解释:Performance is 100 FLOPS。一秒钟内有多少+
和*
有多少。
我不是计算机科学专家,所以请尽量减少技术含量。如果我完全理解错了,也请告诉我。
谢谢
intel - FLOP测量
我正在尝试使用 intel vtune Amplifier 为我的应用程序估算 FLOPS,我在这里使用这篇文章作为指导:https ://software.intel.com/en-us/articles/estimating-flops-using-event-基于采样-ebs/
问题是我在 vtune gui 中找不到 FP_COMP_OPS_EXE 事件。当我使用此事件配置运行 amplxe-cl 时,我收到以下错误:
amplxe:错误:无效事件 FP_COMP_OPS_EXE.X87 被丢弃。
我正在开发 CentOS,我的处理器是英特尔至强
任何帮助,将不胜感激
c++ - 为什么数学库经常被 FLOPS 比较?
数学库经常根据 FLOPS 进行比较。当我看到 FLOPS 与大小的图以及几个不同数学库的点集时,向我传达了什么信息?
如果比较是在相同算法的两个实现之间或在两个不同硬件上的相同软件之间进行比较,那么作为性能衡量标准的 FLOPS 对我来说会更有意义。我不明白为什么它是比较矩阵-矩阵乘法之类的适当或流行的方法。
这是否意味着底层算法几乎相同,并且通过最小化开销来最快地提供浮点单元的代码获胜?
例子比比皆是。
http://eigen.tuxfamily.org/index.php?title=基准
https://code.google.com/p/blaze-lib/wiki/Benchmarks
另一方面,这些 LAPACK 和 Armadillo 基准测试使用给定操作的绝对时间,这对我来说更有意义。
http://www.netlib.org/lapack/lug/node71.html
http://arma.sourceforge.net/speed.html
相关的:
c++ - 如何计算 C++ 程序中函数的 GFLOPs?
我有一个 C++ 代码,它计算 int 数据类型的阶乘、浮点数据类型的添加和每个函数的执行时间,如下所示:
现在,我想为“添加”功能测量 GFLOP。所以,请建议我将如何计算它。因为,我对 GFLOP 完全陌生,所以请告诉我我们是否可以为只有 foat 数据类型的函数计算 GFLOP?并且 GFLOPs 值也随着不同的功能而变化?