Qu'est-ce que Vectorisation ?

Optimisation qui transforme un même calcul effectué élément par élément dans une boucle en un traitement de plusieurs éléments à la fois par instructions SIMD. Elle exige l'absence de dépendances de données entre itérations.

Nom japonais: ベクトル化

« Vectorisation » apparaît dans 3 questions d'entraînement réparties sur 2 thèmes, dont Compilateurs, Hiérarchie mémoire.

Domaine: Compilateurs

S'entraîner : questions sur Vectorisation

Quel type d'instructions la vectorisation automatique du compilateur utilise-t-elle ?

  1. ADes instructions déclenchant des interruptions
  2. BDes instructions SIMD traitant plusieurs données simultanément
  3. CDes instructions effaçant d'un coup tout le contenu du cache
Afficher la réponse et l'explication

Réponse : B. Des instructions SIMD traitant plusieurs données simultanément

La vectorisation automatique repère les boucles effectuant le même calcul sur chaque élément d'un tableau et les remplace par des instructions SIMD traitant plusieurs éléments à la fois. Par exemple, un registre SIMD de 128 bits additionne simultanément quatre nombres de 32 bits ; dans le meilleur cas, le nombre d'opérations de la boucle est divisé par quatre. Elle suppose l'absence de dépendance entre itérations et des données contiguës, et elle est parfois abandonnée en cas de recouvrement possible des pointeurs. Elle n'a rien à voir avec les instructions d'interruption ou de gestion du cache.

« Vectorisation » dans les explications

Questions mentionnant « Vectorisation » (3)

  1. Quel type d'instructions la vectorisation automatique du compilateur utilise-t-elle ?
  2. Quelle est la principale raison pour laquelle la boucle ci-dessus est difficile à vectoriser avec des instructions SIMD ?
  3. Pourquoi le traitement ci-dessus, qui additionne uniquement les coordonnées x, devient-il généralement plus rapide une fois réécrit sous forme de structure de tableaux (chaque composante dans un tableau séparé) ?

Termes associés

SIMD Interruption Allocation de registres Analyse lexicale Analyse syntaxique Arbre syntaxique abstrait (AST) Bloc de base Compilation JIT Débordement (spill) Déroulage de boucle (loop unrolling)

Retour au glossaire