2012-02-08 7 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カーネルバージョンを使用します。さらに、レッドハットは、リリースファミリの寿命の間に適合すると見なされるように、最新のカーネルバージョン から、選択したパッチと新しい機能をバックポートします。したがって、カーネルは2.6.18に基づいていますが、後でメインラインのカーネルバージョンにしか現れないいくつかの追加機能を見るかもしれません。

Linuxカーネルはバージョン2.6.30(reference)までAVXをサポートしていなかったので、これはRed Hatが5.xシリーズにバックポートした機能の1つではないようです。 Portland Group(コンパイラメーカー)フォーラムのthis postによれば、バージョン6.2(CentOSは本質的にRHELに相当)まで完全なサポートは出ていませんでした。

+0

あなたは正しいです、Rehat 5.6はちょうど古すぎます。私は、インテルから、カーネル2.6.32以降、およびiccバージョン12.1のアップデート8が必要であると答えたことがあります。 – Kristian

関連する問題