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

我有一些简单的测试代码,我试图生成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问题?

解决方法:

Red Hat Enterprise Linux 5.x系列使用2.6.18的基本Linux内核版本.最重要的是,Red Hat向后端内核版本反向选择了补丁和新功能
因为它认为在释放家庭的一生中是合适的.因此,虽然内核基于2.6.18,但您可能会看到一些仅在以后的主线内核版本中出现的其他功能.

话虽如此,Linux内核在版本2.6.30(reference)之前不支持AVX,所以看起来这不是Red Hat向5.x系列后移的功能之一.根据波特兰集团(编译器制造商)论坛上的this post,直到版本6.2(CentOS基本上等同于RHEL)才出现全面支持.

上一篇:Redhat 6.8部署oracle 12c


下一篇:加载共享库时出错:libcudart.so.4:无法打开共享对象文件:没有这样的文件或目录