IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

C++ & audio, array/vector et opérations scalaires ? Comment éviter le membre à membre


Sujet :

C++

  1. #1
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut C++ & audio, array/vector et opérations scalaires ? Comment éviter le membre à membre
    Pour un filtre FIR je vais avoir besoin des opérations classiques sur des tab/array/vector : addition, multiplication par constantes ...

    Connaissez vous les méthodes pour pas ramer comme un chacal ?
    Du genre éviter l'addition memebre à membre dans une loop for,
    passer de for a while, des tab[i incrémenté] au pointage tab_int++,

    ou tout simplement des librairies pour des opérations scalaires,

    Un gros merci à tout ceux qui pourrons m'aider.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Regarde du côté des std::valarray, ils supportent directement les opérations les plus basiques (+, -, *, abs, cos, ...) et certaines implémentations, comme celle de gcc, sont intéressantes en terme de performances car elles évitent les temporaires inutiles en utilisant un mécanisme d'expressions template.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour.
    Regarde aussi dans boost. Devrai y avoir ce qu'il te faut

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu veux pousser ta Kawasaki à fond les ballons, il te faudrait aussi regarder du côté des bibliothèques de type "BLAS" ou même les bibliothèques de performances spéciales pour ton architecture (Intel et AMD fournissent des bibliothèques mathématiques optimisées pour leurs processeurs qui comprennent entre autres les opérations vectorielles).

    Mais là, ça peut être beaucoup de boulot en plus pour chercher la picoseconde...

    Carl

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par 5hdumatin Voir le message
    Si tu veux pousser ta Kawasaki à fond les ballons, il te faudrait aussi regarder du côté des bibliothèques de type "BLAS"
    Boost ublas par exemple
    http://www.boost.org/libs/numeric/ub...c/overview.htm

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Boost ublas par exemple
    Euh... oui, c'est bien ça! :-)

    Carl

  7. #7
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    Merci beaucoup

    Je viens de recevoir une grosse bécane (2*quadracore) pour mon projet, du coup ca booste les choses, mais ca va etre trompeur pour un utilisateur lambda

    Je regarde du coté de vos conseils, encore merci

    ou même les bibliothèques de performances spéciales pour ton architecture (Intel et AMD fournissent des bibliothèques mathématiques optimisées pour leurs processeurs qui comprennent entre autres les opérations vectorielles).
    Par contre cette soluce (tyransformer ton proc en DSP c'est ca ?), c'estdans le cas ou tu utilises uniquement ta machine non ?
    C'est possible de modifier le proc via une installation/utilisation du prog sur une machine tierce ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Modifier le processeur??? Non, mon ami, là tu t'égares! :-)

    Non, en fait Intel, AMD et j'imagine d'autres fabriquants de processeurs fournissent des bibliothèques de calcul optimisées. Tu pourrais utiliser n'importe quelle autre bibliothèque, ou même tout implémenter toi-même. Mais les fabricants connaissent leurs puces comme le fond de leur poche, et ont implémenté des algorithmes aux petits oignons pour tirer le meilleur parti possible des performances de leurs processeurs.

    Les processeurs actuels sont des processeurs généraux, donc qui peuvent faire ce que font les DSP, mais parfois avec de moins bonnes performances (pas de FFT en matériel, par exemple). Typiquement, dès que tu lances un programme qui synthétise du son, tu transformes de facto ton CPU en DSP. CQFD.

    Carl

  9. #9
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    Merci 5hdumatin, donc du coup il faut que mes calculs/algo audio soit basées sur des outils qui s'emboite avec les processeurs généraux, imparfaits pour le traitement du signal ?

    Du coup ca donne quoi au niveau des vecteurs par ex ?
    Je travaille sur du wav, j'ai cru comprendre que les valarray étaient bien...
    FFTW pour les fft, libsndfile pour les read/write, tu vois quelque chose d'autre ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ces pauvres processeurs généraux ne sont pas moins parfaits que les autres: ils sont juste plus généraux... Les CPU généraux sont devenus de facto des DSP, vu la quantité de son et lumière qu'ils traitent en permanence. Et ça marche!

    Au niveau des vecteurs, l'avantage des bibliothèques hautement spécifiques pour tel ou tel fabricant de processeurs, c'est qu'elles utilisent les opérations vectorielles fournies par les processeurs. Je ne suis pas très familier de la programmation MMX, SSE et compagnie, mais ces extensions proposent des instructions spéciales pour traiter les vecteurs de données. Là, on dépasse mes compétences pratiques en la matière, et il faut aller voir les docs idoines.

    Regarde aussi (en vrac):


    Carl

  11. #11
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    Et portaudio dans tout ca ? LibSNDFile ? C'est utile pour développer des plugs ou c'est vraiment que pour l'édition ?

  12. #12
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par 5hdumatin Voir le message
    www.dspguide.com
    Je l'ai trouvé très bien, abordable même pour un novice, à condition de parler anglais.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ttone Voir le message
    Et portaudio dans tout ca ? LibSNDFile ? C'est utile pour développer des plugs ou c'est vraiment que pour l'édition ?
    La liste est longue...

    Carl

  14. #14
    Membre éclairé Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Par défaut
    La liste est longue...
    D'un coté tant mieux , mais par exemple les plugs Native Instrument c'est basé sur quoi ?

  15. #15
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Je sais pas, mais si tu trouves leur code source, tu fais tourner

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/07/2008, 17h33
  2. array [0..10] of TRGBTriple : Comment ça marche ?
    Par Pierre de Nice dans le forum Débuter
    Réponses: 6
    Dernier message: 08/07/2008, 10h04
  3. Problème entre boost::array std::copy et les vector
    Par Davidbrcz dans le forum Boost
    Réponses: 4
    Dernier message: 27/03/2008, 19h20
  4. vertex array et std::vector marche pas, help!
    Par filoo dans le forum OpenGL
    Réponses: 14
    Dernier message: 07/07/2007, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo