0

英特尔 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自动矢量化此代码,或者我需要重写代码才能从矢量化中受益?理想情况下,我希望前三个操作并行执行,然后并行计算接下来的两个。

4

0 回答 0