所以我有以下代码,这对我来说似乎很简单:
#define MODS_COUNT 5
int start1 = <calc at runtime>;
int start2 = <calc at runtime>;
for (int j=0; j<MODS_COUNT; j++) // loop 5 times doing simple addition.
logModifiers[start1 + j] += logModsThis[start2 + j];
此循环是外部循环的一部分(不确定这是否有所不同)
编译器说:
message : loop was not vectorized: vectorization possible but seems inefficient.
为什么这个循环不能被矢量化?这对我来说似乎很简单。如何强制矢量化并自己检查性能?
我有英特尔 C++ 编译器 2013 更新 3。
如果有人感兴趣,完整的代码在这里:http: //pastebin.com/Z6H5ZejW
编辑:我知道编译器认为它效率低下。我在问:
为什么效率低下?
我怎样才能强制它,以便我可以对自己进行基准测试?
Edit2:如果我将其更改为 4 而不是 5,那么它将被矢量化。是什么让 5 效率低下?我认为它可以在 2 条指令中完成,第一条是 4 条指令,第二条是“正常”的 1 条指令,而不是 5 条指令。