web-dev-qa-db-ja.com

LinuxカーネルAVX2のサポート

LinuxカーネルがAVX2命令セットの完全サポートを組み込むように変更されたのはいつか知りたいです。

Linuxコンピューターで他の誰かが手にしたほうが20%速いと主張するAVX2命令セットを使用していくつかのソフトウェアをテストしましたが、カーネルを使用して/proc/cpuinfoに従ってavx2をサポートするサーバーでテストを行いました:3.10.0 -229.1.2.el7.x86_64

カーネル3.10.0はAVX2を完全にサポートするのに十分最近のものですか?

PS:コメントから言い換えると:最新バージョンのGCCでコンパイルされたバイナリに対してAVX2を完全にサポートするカーネルは何ですか?おそらくAVX2サポートに最適ですか?

1
719016

Avx2コードでアプリケーションを実行するには、タスクを切り替えるときにカーネルがCPUの状態の保存/復元を適切に処理する必要があります。これは2.6.30で行われました( https://kernelnewbies.org/Linux_2_6_ )。 swにはavx2コードも含まれている必要があります(含めるかどうかはコンパイル時の決定である可能性があります)。 avx2がもたらすメリットは、CPUによっても異なります(一部のCPUはサポートしていますが、さまざまな理由により実際にはメリットがありません。Intelcpusは一般にAMD cpusよりもメリットがあり、新しい世代ごとにメリットがあります)。

カーネル自体には、暗号化、ハッシュ、圧縮など、その恩恵を受けるためのavx2最適化コードを含めることもできます(すべてが機能するわけではなく、理論的には、avx2を使用して正しい方法でコーディングするのが非常に難しいものもあります。コンパイル時に使用される設定に応じて、同じことを行うスカラーコードよりも高速です。

これは、dmesg |のようなことで確認できます。 grep avx2または構成ファイル(現在実行中のカーネルのコンパイルに使用される構成は/proc/config.gzにある場合があります)を読み取り、avx2を探します。

1