1 votes

Support AVX2 du noyau Linux

J'aimerais savoir quand le noyau Linux a été modifié pour intégrer le support complet des jeux d'instructions AVX2.

J'ai testé un logiciel utilisant le jeu d'instructions AVX2 que quelqu'un d'autre prétend être 20% plus rapide dans ses mains sur un ordinateur Linux, mais mes tests ont été faits sur un serveur avec le support avx2 selon /proc/cpuinfo en utilisant un noyau : 3.10.0-229.1.2.el7.x86_64

Le noyau 3.10.0 est-il assez récent pour un support AVX2 complet ?

PS : reformulation d'un commentaire : quel est le noyau qui supportera pleinement AVX2 pour un binaire compilé avec la dernière version de GCC, qui est vraisemblablement la meilleure pour le support AVX2 ?

1voto

orange_juice6000 Points 135

Pour faire fonctionner des applications avec du code avx2, le noyau doit gérer correctement le stockage/restauration de l'état du processeur lors du passage d'une tâche à l'autre, ce qui a été fait dans la 2.6.30 ( https://kernelnewbies.org/Linux_2_6_30 ). Le programme doit également contenir (il peut être décidé à la compilation de l'inclure ou non) du code avx2 et l'utiliser (ou il peut contenir les deux et décider à l'exécution mais pour cela il doit détecter que votre processeur supporte l'avx2). Les avantages de l'avx2 dépendent aussi du processeur (certains processeurs le supportent mais n'en tirent pas vraiment profit pour diverses raisons). Les processeurs Intel en bénéficient généralement plus que les processeurs AMD et chaque nouvelle génération en bénéficie davantage).

Le noyau lui-même peut aussi contenir du code optimisé par avx2 pour des choses comme le cryptage, le hachage, la compression et tout autre chose qui en bénéficie (tout ne le fait pas et certaines choses qui le font en théorie sont très difficiles à coder en utilisant avx2 d'une manière qui soit à la fois correcte et plus rapide que le code scalaire faisant la même chose) selon les paramètres utilisés au moment de la compilation.

Vous pouvez vérifier cela en faisant des choses comme dmesg | grep avx2 ou en lisant le fichier de configuration (la configuration utilisée pour compiler le noyau en cours d'exécution peut parfois être trouvée dans /proc/config.gz) et rechercher avx2.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X