3

Linux Redhat 5.6でicc v12.1を使用するためにAVXに最適化されたコードを生成しようとしているいくつかの簡単なテストコードがあります。コードは次のようになります。

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 に問題がある人はいますか?

4

1 に答える 1

5

Red Hat Enterprise Linux 5.x シリーズは、ベース Linux カーネル バージョン 2.6.18 を使用します。その上、Red Hat は、リリース ファミリーの存続期間中に適合すると判断した後のカーネル バージョンから選択したパッチと新機能をバックポートします。そのため、カーネルは 2.6.18 に基づいていますが、それ以降のメインライン カーネル バージョンでのみ登場したいくつかの追加機能が表示される場合があります。

そうは言っても、Linux カーネルはバージョン 2.6.30 (参照) まで AVX をサポートしていなかったため、これは Red Hat が 5.x シリーズにバックポートした機能の 1 つではなかったようです。ポートランド グループ (コンパイラ メーカー) フォーラムのこの投稿によると、完全なサポートはバージョン 6.2 まで表示されませんでした (CentOS は基本的に RHEL と同等です)。

于 2012-02-08T14:14:52.623 に答える