2012-02-08 6 views
3

Linux Redhat 5.6에서 icc v12.1을 사용하기 위해 AVX에 최적화 된 코드를 생성하려고하는 간단한 테스트 코드가 있습니다.AVX에 최적화 된 코드가 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 가능하다고 확신 하나 Redhat 5.6에서 AVX에 문제가있는 사람이 있습니까?

+0

Redhat 5.6이 2010 년에 릴리스되었습니다. 따라서 Sandy Bridge/AVX를 인식하지 못하는 것은 그리 놀라운 일이 아닙니다. –

답변

5

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과 동일 함)까지 완전한 지원이 제공되지 않았습니다.

+0

네가 맞다. 레 5.6은 너무 오래되었다. Intel에서 커널 2.6.32 이상, icc 12.1 업데이트 8이 필요하다고 대답했습니다. – Kristian