【发布时间】:2015-09-13 04:16:32
【问题描述】:
我在 AVX2 上工作,需要计算 64 位 x64 位 -> 128 位加宽乘法,并以最快的方式获得 64 位高位部分。既然AVX2没有这样的指令,那我用Karatsuba算法提高效率和速度是否合理?
【问题讨论】:
-
这在很大程度上取决于架构。 25 年前,我确实在 32 位 SPARC 处理器上使用 Karatsuba 进行 64x64->128 位乘法,以提高性能。我还没有看过 AVX2,我的机器中缺少 Haswell 级 CPU。您是否搜索了文献(或一般的互联网)以查看其他人发现了什么?使用标准方法,您的基于 AVX2 的 64x64->128 位乘法有多快?
-
你真的需要 64bx64b 到 128b 吗?或者你可以使用 56bx56b 到 106b 吗?
-
其实我需要 64bx64b -> 64b 高位,这样codepaste.net/29m5qm `
-
另外我认为你应该在你的问题中说明你想要 64bx64b 到高 64b。
-
你的问题会更有趣,我想如果你问是否有一种使用 AVX2 的快速方法来做
high(64bx64b)。您的问题可以被视为xy problem,因为您确实想找到一种更快的方法来处理high(64bx64b)。
标签: c++ performance parallel-processing simd avx2