Comment emballer efficacement la gauche en fonction d'un masque à l'aide d'AVX2 ?
Aperçu du problème :
Étant donné un tableau d'entrée et un tableau de sortie, l'objectif est d'écrire uniquement les éléments qui transmettent une condition spécifique dans le tableau de sortie. Cette opération est cruciale dans diverses applications, notamment le filtrage de données et la manipulation d'images.
Approche SSE :
Dans SSE, ce processus était traditionnellement réalisé en utilisant une approche de contrôle aléatoire des données. , comme décrit dans l'extrait de code fourni. Cependant, cette méthode devient lourde pour AVX, qui dispose de vecteurs de largeur 8, nécessitant une grande table de recherche.
Solution AVX2 :
Pour résoudre ce problème, AVX2 propose deux options :
Utiliser BMI2 Instructions :
Lut Approche :
Meilleure méthode :
L'approche optimale dépend des exigences spécifiques de l'application. Pour les grands ensembles de données, l’approche LUT peut être préférée en raison de sa moindre surcharge et de l’amélioration de l’efficacité du cache. Cependant, pour les ensembles de données plus petits ou les applications qui privilégient la vitesse, la solution basée sur BMI2 peut offrir de meilleures performances.
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!