création et optimisation de modules audio avec les instructions sse
DESCRIPTION
Création et Optimisation de Modules Audio avec les instructions SSE. Maître de stage P. Wicker Tuteur de stage M. Girin. Création et Optimisation de Modules Audio avec les instructions SSE. 1) Présentation du Stage. 2) Les instructions SSE. 3) Algorithme DSP Audio. Conclusion. - PowerPoint PPT PresentationTRANSCRIPT
Création et Optimisation de Modules Audio avec les
instructions SSE
Maître de stage P. WickerTuteur de stage M. Girin
Projet de Fin d’Etudes – Optimisation SSE1/28
1) Présentation du Stage
2) Les instructions SSE3) Algorithme DSP Audio
Conclusion
2/28
Création et Optimisation de Modules Audio avec les
instructions SSE
Projet de Fin d’Etudes – Optimisation SSE
1) Présentation du stage
3/28Projet de Fin d’Etudes – Optimisation SSE
Synthèse audio et ArturiaMoog
ArturiaSoftware
& Hardware
4/28Projet de Fin d’Etudes – Optimisation SSE
Prophet VS
Objectifs
• Etudes des instructions SSE
• Etudes des optimisations
envisageables
• Tests de performance par
algorithme
• Implémentation en situation réelle
5/28Projet de Fin d’Etudes – Optimisation SSE
2) Instructions SSE
6/28Projet de Fin d’Etudes – Optimisation SSE
Registres Xmm
7/28Projet de Fin d’Etudes – Optimisation SSE
__m128
Float[3]
Registre Xmm 128 bits
Float[2]Float[1]Float[0]
__m128i
Int[3]Int[2]Int[1]Int[0]
Double[0] Double[1]
Instructions SIMD
8/28Projet de Fin d’Etudes – Optimisation SSE
Instruction de base mulps : (multiplication verticale)
__m128 aV
a3a2a1a0
__m128 bV
b3b2b1b0
_mm_mul_ps(aV,bV) = mulps aV , bV ;
a3 x b3a2 x b2a1 x b1a0 x b0
1 instruction / 4 Floats multipliés
Instructions SIMD
9/28Projet de Fin d’Etudes – Optimisation SSE
• 8 registres• Entiers• 64 bits
MMX (vs 3DNow)
• 16 registres• Floats• 128 bits
SSE
• Instructions pour la vidéo
• Passage à 256 bits
.. AVXPentium 4AMD 64
bits
Core DuoAMD x2
Pentium 3AMD
Athlons
Instructions SSE
10/28Projet de Fin d’Etudes – Optimisation SSE
Avantages
• Permet de réduire le nombre d’instructions• Pas de problème de dénormalisation
Contraintes
• Compatibilité avec la machine• Perte de précision par rapport au x87 (très légère)• Alignement des données sur 16 bytes• Réorganisation des données pour l’utiliser efficacement dans certains algorithmes
Cahier des charges des tests
Pouvoir évaluer les performances des
algorithmes :• Mesurer facilement et précisément le temps de
calcul
• Eviter ou détecter les perturbations externes (OS,
scheduler)
• Réaliser les tests facilement (automatiquement)
sur différentes plateformes
• Garder la plate-forme évolutive pour l’avenir11/28
Projet de Fin d’Etudes – Optimisation SSE
Plate-forme de test
12/28Projet de Fin d’Etudes – Optimisation SSE
Tests Manager
Algorithme 0 :• Algorithme• Mesures du temps de calcul (Ecart type, Temps moyen, max, min)
RésultatsStatistiques par
algorithmes
Algorithme 1, …
Algorithme N
Opérateur :• Ajout d’algorithme• Définit la liste des algorithmes à tester lors du Bench
Bench Manager
• Récupération au-delà d’une deadline de temps permettant de ne pas être arrêté par le scheduler de l’OS• Tests à appeler
Résultats
13/28Projet de Fin d’Etudes – Optimisation SSE
Résultats
Points clés de l’optimisation :• Le jeu d’instruction : SSE3 semble le minimum à considérer compte
tenu des instructions horizontales pour le DSP
• Le processeur influe énormément (performance du cœur SSE):
Atom/core i5 même jeu SSE, mais des gains de performance
incomparables.
• L’organisation mémoire et les appels au cache peuvent faire
basculer la tendance entre SSE ou calcul flottant sur x87
14/28Projet de Fin d’Etudes – Optimisation SSE
Workflow d’écriture d’un algorithme SSE
15/28Projet de Fin d’Etudes – Optimisation SSE
Comprendre et tester l’algorithme
en flottants non SSE
Vérifier les dépendances entre données
Aligner les données sur 16
Bytes si nécessaire
Ecrire l’algorithme
en SSE
Tester à l’oreille dans un
premier temps
Calculer l’erreur de calcul entre SSE et flottant
pour valider
Mesurer la performance
unitaire
Mesurer la performance
après intégration
3) Algorithmes Audio
16/28Projet de Fin d’Etudes – Optimisation SSE
Exemple du DualStereoFilter
17/28Projet de Fin d’Etudes – Optimisation SSE
La Reverb
18/28Projet de Fin d’Etudes – Optimisation SSE
Conclusion
19/28Projet de Fin d’Etudes – Optimisation SSE