Код, оптимизированный для AVX, не работает в Linux RedHat 5.6

У меня есть простой тестовый код, который я пытаюсь создать, оптимизированный для AVX, для использования icc v12.1 в Linux Redhat 5.6. Код выглядит следующим образом:

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, но есть ли у кого-нибудь еще проблемы с AVX на Redhat 5.6?


person Kristian    schedule 08.02.2012    source источник
comment
Redhat 5.6 был выпущен, по-видимому, в 2010 году, поэтому неудивительно, что он не распознает Sandy Bridge/AVX.   -  person Paul R    schedule 08.02.2012


Ответы (1)


Серия Red Hat Enterprise Linux 5.x использует базовую версию ядра Linux 2.6.18. Кроме того, Red Hat поддерживает отдельные исправления и новые функции из более поздних версий ядра по мере необходимости в течение срока действия семейства выпусков. Таким образом, хотя ядро ​​основано на 2.6.18, вы можете увидеть некоторые дополнительные функции, которые появились только в более поздних основных версиях ядра.

При этом ядро ​​Linux не поддерживало AVX до версии 2.6.30 (ссылка ), поэтому похоже, что это не было одной из функций, которые Red Hat перенесла в серию 5.x. Согласно этот пост в Portland Group (создатель компилятора) форумах, полная поддержка не появлялась до версии 6.2 (CentOS по сути эквивалентен RHEL).

person Jason R    schedule 08.02.2012
comment
Вы правы, Rehat 5.6 просто устарел. Я получил ответ от Intel, в котором говорится, что мне нужно ядро ​​2.6.32 или новее, и icc версии 12.1, обновление 8, чтобы заставить его работать. - person Kristian; 09.02.2012