AVX优化的代码没有在linux redhat 5.6上运行

Kri*_*ian 3 linux redhat icc avx

我有一些简单的测试代码,我试图生成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;
}
Run Code Online (Sandbox Code Playgroud)

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

icc -xavx -vec-report1  main.cpp
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

我确信该处理器具有AVX功能,但是其他人是否在Redhat 5.6上遇到AVX问题?

Jas*_*n R 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系列向后移植的功能之一.根据波特兰集团(编译器制造商)论坛上的这篇文章,直到版本6.2(CentOS基本上等同于RHEL)才出现全面支持.