gpt4 book ai didi

c++ - 以 FLOPS 估算 GPU 的效率(CUDA SAMPLES)

转载 作者:太空狗 更新时间:2023-10-29 21:41:58 29 4
gpt4 key购买 nike

在我看来,我并不完全理解 FLOPS 的概念。在 CUDA SAMPLES 中,有 Matrix Multiplication Example (0_Simple/matrixMul)。在此示例中,每个矩阵乘法的 FLOP(浮点运算)数通过以下公式计算:

 double flopsPerMatrixMul = 2.0 * (double)dimsA.x * (double)dimsA.y * (double)dimsB.x;

所以,这意味着,为了将矩阵 A(n x m) 乘以 B(m x k),我们需要做:2*n* m*k 浮点运算。

但是,为了计算结果矩阵 C (n x k) 的 1 个元素,必须执行 m 乘法和 (m-1) 加法运算。因此,操作总数(计算 n x k 元素)是 m*n*k 乘法和 (m-1)*n*k 添加。

当然,我们也可以将加法次数设置为m*n*k,那么总的操作次数就是2*n*m*k >,其中一半是乘法,一半是加法。

但是,我想乘法比加法的计算成本更高。为什么将这两种类型的操作混为一谈?在计算机科学中总是如此吗?如何考虑两种不同类型的操作?

对不起我的英语)

最佳答案

简短的回答是,是的,它们计算乘法和加法。尽管大多数浮点处理器具有融合的乘法/加法运算,但它们仍将乘法和加法视为两个单独的浮点运算。

这就是为什么人们几十年来一直提示 FLOPs 基本上是一种毫无意义的衡量标准的部分原因。稍微说一下,您几乎需要指定一些您正在测量 FLOP 的特定代码体(例如,“Linpack gigaflops”)。即使那样,您有时也需要相当严格地控制诸如允许哪些编译器优化之类的事情,以确保您测量的是真正的机器速度,而不是编译器简单地消除某些操作的能力。

最终,正是这些担忧导致组织成立,以制定基准和关于必须如何运行这些基准和报告结果的规则(例如 SPEC)。否则,可能很难确定您看到的针对两个不同处理器报告的结果在任何有意义的方面确实具有可比性。即使有它,比较也可能很困难,但如果没有这些东西,它们可能会变得毫无意义。

关于c++ - 以 FLOPS 估算 GPU 的效率(CUDA SAMPLES),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27510237/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com