【发布时间】:2012-09-22 17:43:35
【问题描述】:
假设我有一个非常简单的代码,例如:
double array[SIZE_OF_ARRAY];
double sum = 0.0;
for (int i = 0; i < SIZE_OF_ARRAY; ++i)
{
sum += array[i];
}
我基本上想用 SSE2 做同样的操作。我该怎么做?
【问题讨论】:
-
如果你真的必须使用双精度,那么它可能不值得打扰,因为现在大多数现代 x86 CPU 都有两个 FPU。如果您可以降低到单精度(即浮点数),那么它可能值得做。您需要提高多少性能?
-
强烈推荐使用 Kahan 求和。此处问答中提出的解决方案容易出错。