【发布时间】:2011-06-22 08:48:43
【问题描述】:
在评估负对数似然的情况下,我必须 执行一系列可以从矢量化中受益的操作
0) for (i = 1...n) { a[i] = 0; } // 但我认为这是
std::fill(a.begin(), a.end(), 0) 已经是最优的了
1) for (i = 1...n) { a[i] += b * c[i]; }
2) 总和 = 0; for (i = 1 .. n) { sum += a[i] * log( b[i] / c ); }
你知道是否有希望让 gcc 434 去做 自动矢量化,以及我应该如何编写循环来帮助他(例如 使用索引与使用迭代器,我应该更简单地分解(2) 循环,...) 到目前为止,我正在使用双打,必须检查我是否可以移动到浮动 至少 (1)。
【问题讨论】:
-
你指定了 -ftree-vectorize 吗?