3

我有一些简单的测试代码,我正在尝试生成 AVX 优化代码,以便在 linux Redhat 5.6 上使用 icc v12.1。代码如下所示:

int main() {
    double sum = 0.0;
    for (unsigned int i = 0; i < 1024; i++) {
        sum += static_cast<double>(i);
    }

    std::cout << "Sum: "<< sum << std::endl;
    return 0;
}

我编译它(并且矢量报告说循环是矢量化的):

icc -xavx -vec-report1  main.cpp

当我运行代码时,出现以下错误:

Fatal Error: This program was not built to run in your system.
Please verify that both the operating system and the processor support Intel(R) AVX.

我确定该处理器支持 AVX,但其他人是否对 Redhat 5.6 上的 AVX 有问题?

4

1 回答 1

5

Red Hat Enterprise Linux 5.x 系列使用 2.6.18 的基本 Linux 内核版本。最重要的是,Red Hat 从更高版本的内核版本中向后移植选择的补丁和新功能,因为它认为适合发布系列的生命周期。因此,虽然内核基于 2.6.18,但您可能会看到一些仅在以后的主线内核版本中出现的附加功能。

话虽如此,Linux 内核直到版本 2.6.30(参考)才支持 AVX,因此这似乎不是 Red Hat 向后移植到 5.x 系列的功能之一。根据Portland Group(编译器制造商)论坛上的这篇帖子,直到 6.2 版(CentOS 本质上等同于 RHEL)才出现完全支持。

于 2012-02-08T14:14:52.623 回答