Emballage efficace des éléments gauches basé sur un masque avec AVX2 et BMI2
Dans AVX2, obtenir un emballage gauche efficace nécessite l'utilisation d'instructions et de techniques spécifiques. Une approche consiste à exploiter à la fois les vpermps (_mm256_permutevar8x32_ps) d'AVX2 pour le brassage des variables de croisement de voies et le pext (Parallel Bits Extract) de BMI2 pour les opérations au niveau du bit.
Exploiter BMI2 pour la génération de masques
L'instruction pext de BMI2 permet au extraction de bits spécifiques à partir d'un masque de bits, fournissant un mécanisme permettant de générer dynamiquement des données de contrôle de croisement de voies à la volée. Cela élimine le besoin d'une grande table de recherche précalculée (LUT).
L'algorithme
L'algorithme implique :
Considérations relatives aux performances
L'avantage de cette approche réside dans sa capacité à générer le masque de croisement de voie à la volée, évitant ainsi la création et le stockage d'une grande LUT. Cette approche pourrait être avantageuse dans les situations où la saisie du masque est dynamique. Cependant, il est important de noter que les opérations pdep/pext peuvent être relativement lentes sur les processeurs AMD antérieurs à Zen 3, donc des méthodes alternatives telles que les vecteurs 128 bits ou les approches basées sur LUT peuvent être plus adaptées à de telles architectures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!