2012-02-08 61 views
3

我有一些簡單的測試代碼,我試圖在Linux Redhat 5.6上使用icc v12.1生成AVX優化代碼。代碼如下所示:未在Linux上運行的AVX優化代碼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。 – 2012-02-08 13:24:24

回答

5

紅帽企業Linux 5.x系列使用2.6.18的基本Linux內核版本。最重要的是,Red Hat從後續內核版本 中反向選擇了補丁和新功能,因爲它認爲它適合發佈系列的整個生命週期。因此,儘管內核基於2.6.18,但您可能會看到一些僅在稍後的mainline內核版本中出現的其他功能。因此,Linux內核在版本2.6.30(reference)之前不支持AVX,所以看起來這並不是紅帽支持5.x系列的功能之一。根據波特蘭集團(編譯器製造商)論壇上的this post,在版本6.2(CentOS基本上等同於RHEL)之前並未出現完全支持。

+0

你說得對,Rehat 5.6太老了。我有一個來自英特爾的答案,它說我需要內核2.6.32或更新版本,而icc版本12.1更新8才能使其工作。 – Kristian 2012-02-09 09:00:01