我目前正在移植一些应用程序以使用 ARM SVE 功能和 SVE 的 ARM C 语言扩展中定义的内在函数。
在检查文档后,我遇到了两个函数来使用归约来总结浮点向量的元素。那是使用从左到右和基于树的减少。
float64_t svadda[_f64](svbool_t pg, float64_t initial, svfloat64_t op);
float64_t svaddv[_f64](svbool_t pg, svfloat64_t op);
文档:
这些函数 (ADDV) 对浮点向量的所有活动元素求和。他们使用基于树而不是从左到右的缩减,因此结果可能与 ADDA 产生的结果不同。”
为什么基于树的归约不同于从左到右的归约?他们的意思是因为舍入错误还是我遗漏了什么?