在 AVX2 环境下,Intel 的 __m256d _mm256_log2_pd (__m256d a) 函数与除 Intel 之外的其他编译器不兼容据报道,AMD 处理器的性能有所下降。为了解决这个问题,让我们探索一种提供效率和广泛兼容性的替代实现。
通常,log2(ab) 计算为 log2(a) log2 (二)。由于a由2^指数尾数表示,因此计算简化为指数log2(尾数)。尾数的有限范围(1.0 到 2.0)允许定制多项式近似来计算 log2(尾数)。
泰勒级数展开式通常用作系数的起点,但是建议使用极小极大拟合来最小化目标范围内的误差。为了获得接近 1.0 的值的更高精度,可以使用尾数 1.0 作为多项式输入,从而无需常数项。
所需的精度级别将影响实现选择。由于额外的计算步骤,更高的精度通常会以速度为代价。 Agner Fog 的 VCL 库提供了高度精确的函数,但采用了复杂的技术,这些技术可能不是所有应用程序都必需的。
VCL 的 log2 函数涉及以下步骤:
提高准确性:
要优化速度:
以上是如何在不依赖 Intel 编译器的情况下在 AVX2 中高效实现 log2(__m256d)?的详细内容。更多信息请关注PHP中文网其他相关文章!