création et optimisation de modules audio avec les instructions sse

19
Création et Optimisation de Modules Audio avec les instructions SSE Maître de stage P. Wicker Tuteur de stage M. Girin Projet de Fin d’Etudes – Optimisation SSE 1/28

Upload: branxton

Post on 15-Jan-2016

33 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 2: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 3: Création et Optimisation de Modules Audio avec les instructions SSE

1) Présentation du stage

3/28Projet de Fin d’Etudes – Optimisation SSE

Page 4: Création et Optimisation de Modules Audio avec les instructions SSE

Synthèse audio et ArturiaMoog

ArturiaSoftware

& Hardware

4/28Projet de Fin d’Etudes – Optimisation SSE

Prophet VS

Page 5: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 6: Création et Optimisation de Modules Audio avec les instructions SSE

2) Instructions SSE

6/28Projet de Fin d’Etudes – Optimisation SSE

Page 7: Création et Optimisation de Modules Audio avec les instructions 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]

Page 8: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 9: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 10: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 11: Création et Optimisation de Modules Audio avec les instructions SSE

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

Page 12: Création et Optimisation de Modules Audio avec les instructions 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

Page 13: Création et Optimisation de Modules Audio avec les instructions SSE

Résultats

13/28Projet de Fin d’Etudes – Optimisation SSE

Page 14: Création et Optimisation de Modules Audio avec les instructions 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

Page 15: Création et Optimisation de Modules Audio avec les instructions 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

Page 16: Création et Optimisation de Modules Audio avec les instructions SSE

3) Algorithmes Audio

16/28Projet de Fin d’Etudes – Optimisation SSE

Page 17: Création et Optimisation de Modules Audio avec les instructions SSE

Exemple du DualStereoFilter

17/28Projet de Fin d’Etudes – Optimisation SSE

Page 18: Création et Optimisation de Modules Audio avec les instructions SSE

La Reverb

18/28Projet de Fin d’Etudes – Optimisation SSE

Page 19: Création et Optimisation de Modules Audio avec les instructions SSE

Conclusion

19/28Projet de Fin d’Etudes – Optimisation SSE