【发布时间】:2011-04-01 02:44:39
【问题描述】:
这是我尝试使用 SSE 加速的示例 C 代码,这两个数组的长度为 3072 个元素,带有双精度数,如果我不需要双精度数,可以将其降为浮点数。
double sum = 0.0;
for(k = 0; k < 3072; k++) {
sum += fabs(sima[k] - simb[k]);
}
double fp = (1.0 - (sum / (255.0 * 1024.0 * 3.0)));
无论如何,我目前的问题是如何在 SSE 寄存器中为双精度或浮点数执行 fabs 步骤,以便我可以将整个计算保留在 SSE 寄存器中,使其保持快速,并且我可以通过部分展开来并行化所有步骤这个循环。
这是我找到的一些资源 fabs() asm 或者可能是这个 flipping the sign - SO 但是第二个资源的弱点需要条件检查。
【问题讨论】: