【问题标题】:AVX-optimized code not running on linux redhat 5.6AVX 优化代码未在 linux redhat 5.6 上运行
【发布时间】:2012-02-08 12:54:00
【问题描述】:

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

【问题讨论】:

  • Redhat 5.6 显然是在 2010 年发布的,所以我想它不能识别 Sandy Bridge/AVX 也就不足为奇了。

标签: linux redhat icc avx


【解决方案1】:

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 系列的功能之一。根据 Portland Group(编译器制造商)论坛上的this post,直到 6.2 版(CentOS 本质上等同于 RHEL)才出现完全支持。

【讨论】:

  • 你说得对,Rehat 5.6 太旧了。我得到了 Intel 的答复,说我需要内核 2.6.32 或更高版本,并且需要 icc 版本 12.1 更新 8 才能使其工作。
猜你喜欢
  • 2014-12-31
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多