gpt4 book ai didi

c++ - 为什么经常用 FLOPS 来比较数学库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:22 30 4
gpt4 key购买 nike

数学库经常根据 FLOPS 进行比较。当我看到 FLOPS 与大小的关系图以及几个不同数学库的点集时,向我传达了什么信息?

如果比较相同算法的两个实现或两个不同硬件上的相同软件,FLOPS 作为性能衡量标准对我来说更有意义。我不明白为什么它是比较矩阵-矩阵乘法之类事物的合适或流行的方式。

这是否意味着底层算法几乎相同,并且通过最小化开销获胜以最快的速度提供浮点单元的代码?

例子比比皆是。

http://eigen.tuxfamily.org/index.php?title=Benchmark

https://code.google.com/p/blaze-lib/wiki/Benchmarks

https://software.intel.com/en-us/articles/a-simple-example-to-measure-the-performance-of-an-intel-mkl-function

另一方面,这些 LAPACK 和 Armadillo 基准测试使用给定操作的绝对时间,这对我来说更有意义。

http://www.netlib.org/lapack/lug/node71.html

http://arma.sourceforge.net/speed.html

相关:

What is FLOP/s and is it a good measure of performance?

最佳答案

通常,人们比较数学库是为了选择一个能最大限度地减少程序运行时间的库。对于此类基准测试,需要考虑两件事:库在给定输入上的性能,以及该输入是否代表您的用例。

如果我们假设每个任务(例如 vector 缩放)需要相同数量的浮点运算,那么人们会期望 FLOPS 最多的库首先完成。

在某些情况下,假设每个库将执行相同数量的浮点运算是合理的。但是完全有可能两个库对于同一个任务(比如矩阵矩阵乘法)需要不同数量的浮点运算。如果是这种情况,那么与执行更多 FLOPS 的库相比,一个库可能执行更少的 FLOPS,但完成时间更短。因此,在这些情况下,查看总运行时间是合理的。如果作者以 FLOPS 为单位发布比较,则意味着他们相信每个库执行的运算总数相同;或者只是将理论上完成任务所需的操作数除以总运行时间(这也很常见)。您想要查看基准测试方法。

比较性能(例如 FLOPS)与大小的目的是帮助人们了解其用例的代表性输入的性能。如果您知道您会有很多小 vector ,例如小于 10 的 vector ,那么您不会关心库对于 1gb 大小的 vector 有多快,也不希望这些输入影响比较。

一般来说,计算 FLOPS 一直很流行(可能部分是因为它很容易向数学家解释)。我想一个动机是说“你可以以 10000 FLOPS 的速度出售一个 size=10 的 vector ,但以 100 FLOPS 的速度出售一个 size=100 的 vector ”比说“你可以在 0.001 秒内缩放一个 size=10 的 vector ,但一个 size=100 的 vector ”更容易理解=1 秒内 100 个 vector 。”如果您报告总运行时间,您可能希望按输入大小进行缩放以进行比较。

关于c++ - 为什么经常用 FLOPS 来比较数学库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30406598/

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