英特尔 CPU 能够使用矢量化操作执行 512 或 1024 位操作。假设我有一个如下所示的代码片段:
#include <stdio.h>
int main()
{
_Bool i0, i1, i2, i3, w0, w1, w2, w3, w4;
i0 = 1;
i1 = 1;
i2 = 0;
i3 = 0;
w0 = i0 & i1;
w1 = i1 & i2;
w2 = i0 & i3;
w3 = w0 & w1;
w4 = w1 & w2;
printf("%d %d %d %d\n", i0, i1, i2, i3);
printf("%d %d %d %d %d\n", w0, w1, w2, w3, w4);
return 0;
}
英特尔编译器是否GCC
自动矢量化此代码,或者我需要重写代码才能从矢量化中受益?理想情况下,我希望前三个操作并行执行,然后并行计算接下来的两个。