生产厂商:SPEC产品类别:系统工具
FPMark 是嵌入式行业首个浮点运算基准测试软件套件。浮点运算对于音频、视频、DSP、图形、汽车和电机控制等嵌入式应用至关重要。正如 CoreMark® 旨在成为“更优秀的 Dhrystone”一样,FPMark 也比“略显怪异”的 Whetstone 和 Linpack 更胜一筹。
虽然目前已有一些常用的浮点运算基准测试工具(例如 Linpack、Nbench 和 Livermore 循环),但尚未有人致力于标准化这些工具的版本或测试运行方法。FPMark 正好解决了这两个问题。
FPMark 由多个内核组成,这些内核被配置成不同的工作负载。工作负载的区别在于浮点精度:单精度 (SP) 和双精度 (DP);以及数据集大小(小、中、大)。这些组合反映了广泛的微控制器和平台。
FPMark 支持多核处理器。它基于 EEMBC 多实例测试框架 (MITH) 构建,允许运行时配置上下文或工作线程的数量,以检验平台的并行性能。内核被分组到不同的测试分数中,以便于概括性能表现。MITH 框架对浮点运算库的支持要求极低,并且兼容 POSIX 线程(如果不支持线程库,则还提供单线程版本)。FPMark 支持 RToS、裸机和 Linux 系统。
所有工作负载都是自验证的,这意味着预期结果将与 IEEE 64 位精度生成的“黄金标准”进行比较。
FPMark 开箱即用,可使用 GNU make 工具进行编译。为了方便起见,我们提供了一个 PERL 脚本,用于计算数十个组件运行的所有汇总分数。以下示例输出展示了运行所有内核并计算所有分数的情况。在下面的示例中,每个内核都使用三种不同大小的数据集(小、中、大)以及单精度 (SP) 和双精度 (DP) 两种精度运行。最终分数反映了这些内核结果几何平均值的不同分组。基准测试使用 XCMD='-c4' 运行,该参数会在四个上下文中运行基准测试。与单核运行相比,最后一列显示了四个上下文与一个上下文之间的缩放因子。
算法
以下列出了 FPMark 中使用的算法(以及源代码中使用的 kernel name )。每种算法都使用三种不同大小的数据集运行,并分别测试了单精度和双精度两种精度。
· ArcTan( atan ): 通过使用直角三角形两边的比值来计算它们之间的角度,从而计算直角三角形的角度。
· Black-Scholes( blacks ):一种用于描述包含衍生投资工具的金融市场动态的数学模型。
· 霍纳法 ( horner ):一种近似求多项式根的方法;更多信息请参见维基百科 。
· 快速傅里叶变换 ( radix2 ):接受任何函数并将其转换为一组等效的正弦波;应用包括音频、频谱分析和图像压缩(以基数 2 计算)。
· 线性代数 ( linear_alg ):源自 Linpack;例如,可用于理解结构工程中的力平衡、相对论中参考系之间的转换、求解微分方程以及理解旋转和流体流动。
· 增强型利弗莫尔循环 ( loops , inner-product ):该内核包含二十多个从劳伦斯利弗莫尔国家实验室使用的程序中提取的真实世界函数。它们用于测试并行硬件的计算能力,涵盖二维粒子网格、三对角消元和普朗克分布等领域。
· LU 分解 ( lu ):执行下上矩阵分解 。
· 神经网络 ( nnet ):一个小型神经网络推理引擎。
· 光线追踪器 ( ray ):一种通过追踪光线在图像平面中像素间的路径并模拟其与虚拟物体相遇的效果来生成图像的技术。
· 傅里叶系数 ( xp1px ): 用于计算级数或用复指数的离散和表示周期函数的数值分析例程,也称为 (x+1)^x,定义在区间 [0+epsilon,2-epsilon] 上。








