Accélération SIMD d’un calcul matriciel : comparaison de trois plateformes Matthijs Douze IRIT/ENSEEIHT 1/14 Plan — Principe — Utilisation — Expérimentations 2/14 Extension de l’architecture fetch/decode exec MMU cache bus mémoire ALU FPU vector Principe 3/14 Registres vectoriels 0 127 128 bits 7 0 16 octets 15 8 * 16 bits (signé/non-signé) 31 0 0 4 * 32 bits (entier/flottant) 63 0 2 * 64 bits Principe 4/14 Opérations vectorielles e/s mémoire ordonnancement logiques + + + + arithmétiques comparaisons, min/max Principe 5/14 Les 3 implantations Sun, SPARC, VIS 64 bits, dans FPU, image PC, IA-32, SSE 2 interface avec scalaire Mac, PowerPC, Altivec nombreuses instructions, pas 64 bits Principe 6/14 Programmation depuis C code .c inline ou intrinsics code assembleur .s fichier .il fichier objet .o assembleur vectoriel exécutable librairie Utilisation 7/14 Librairies riches traitement signal & image convolution, FFT, morphologie, codec calcul matriciel BLAS, LAPACK cryptographie bignum Utilisation 8/14 Assembeur défini par le constructeur fichier à part appel de fonction depuis C fichier .il Sun pas d’appel de fonction assembleur inline syntaxe gcc Utilisation 9/14 100% C intrinsics un/des types vectoriels primitives de calcul syntaxe Motorola vectorisation automatique ICC restrict, aligned Utilisation 10/14 Un problème d’optimisation résoudre ) X = arg min AX - B XŒR n¥ p où AŒR N ¥n ,BŒR N ¥p N=5000, n=400, p=8 † T décomposition de Cholesky de A A †n ¥ n produits scalaires Expérimentations 11/14 Mise en œuvre valeurs entières -255..255 librairies double/float pas prévu vectorisation instruction spécialisée par blocs Expérimentations 12/14 Résultats (temps en secondes) machine scalaire vectoriel vectoriel par blocs Mac G4 866 3.8 2.1 0.54 PC Sun P4 1800 US3 Cu 900 1.4 4.1 0.44 2.8 0.17 1.5 Expérimentations 13/14 Conclusion PC rapide, Sun limité auto-vectorisation de ICC interface C de Motorola facile et efficace gros tableaux d’éléments scalaires SIMD à la mode 14/14