Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 6 sur 6
  1. #1
    Messieurs-dames bonsoir.


    Pour des applications audio (donc 1 seule dimension), je dois effectuer du filtrage (FIR ou IIR) sur des buffer de taille fixe, avec des filtres de taille fixe également mais réglable, et pas encore connue à ce jour (à mon avis ça ira de 16 à 4096 coefs).

    J'aimerais que ça aille très vite.
    Genre, euh, vraiment ; parce que je me contente pas seulement faire de la bête égalisation mais j'utiliserai aussi des hrtf, ce genre de bêtises.
    Donc plus vite je calcule, meilleure sera la spatialisation...


    Je me suis un peu renseigné, et en gros j'ai moults choix de bibliothèque:
    - FFTW
    - IPP (mais c'est payant)
    - Blitz (bon là c'est juste histoire de dire)
    Donc j'aimerais savoir dans un premier temps si vous avez une idée lumineuse ou d'autres bibliothèques à me proposer (du genre des trucs qui utilisent le SSE et qui sont "clés en main").



    En plus de ça, Møgluglu m'a fait lorgner du côté des bibliothèques qui font le calcul sur GPU, en particulier NPP si je veux pas m'embêter à faire l'optimisation tout seul, mais ça pose plein de soucis :
    - d'abord c'est tout nouveau et j'ai pas trouvé de benchs face aux IPP par exemple
    - ensuite ce que je fais est peut-être destiné à être utilisé comme simple moteur audio dans des projets complets, donc les gars du moteur graphique vont faire la gueule
    - enfin ça marche pas sur ATI, forcément.
    Est-ce que vous savez si ont peu faire à la fois du GPGPU et utiliser la carte graphique de manière "normale" ? Est-ce que c'est compliqué, ou intrusif côté moteur graphique à mettre en place ? Est-ce qu'OpenCL serait mon Graal si je me décide à déporter les calculs sur le GPU (je crois qu'OpenCL gère aussi le SSE mais je comprends pas vraiment de quelle manière) ?



    Merci à tous !


  2. #2
    Normalement des exemples de codes pour FIR et IIR sont distribues gratuitement dans les manuels de programmation pour SSE. A une epoque (SSE2) c'etait le meme code que ce qui etait utilise dans IPP ca doit etre retrouvable en ligne donc avant d'acheter quelque chose tu devrais essayer de le retrouver (FIR c'est vraiment un exemple classique de vectorisation interressante).

    Les 2 fonctions de FIR et IIR sont relativement petites. Je te proposerais bien ce que j'avais ecris en AltiVec il y a 10 ans mais je doute que ca soit d'un quelconque interet aujourd'hui...
    fefe - Dillon Y'Bon

  3. #3
    Tu connais tes contraintes en précision et dynamique?
    Parce qu'en massacrant la précision, ça va plus vite, forcément...
    Mais si ton signal est sur 8 bits, pas besoin de virgule flottante IEEE je suppose (donc plutôt IPP/NPP que FFTW/cuFFT).

    Citation Envoyé par ElGato Voir le message
    Est-ce que vous savez si ont peu faire à la fois du GPGPU et utiliser la carte graphique de manière "normale" ? Est-ce que c'est compliqué, ou intrusif côté moteur graphique à mettre en place ?
    En principe non, c'est censé être totalement transparent (genre PhysX utilise CUDA et ça ne demande pas de réécrire le moteur graphique...)
    Par contre c'est à tour de rôle, pas simultané, donc Il faut juste éviter de bloquer le GPU sur un calcul pendent 30s...

    Est-ce qu'OpenCL serait mon Graal si je me décide à déporter les calculs sur le GPU (je crois qu'OpenCL gère aussi le SSE mais je comprends pas vraiment de quelle manière) ?
    Il "gère" le SSE parce que si tu utilises des vecteurs explicites dans ton code il génèrera des instructions SSE pour les manipuler, rien de plus (du moins dans l'implémentation d'AMD).
    Globalement, OpenCL pour le CPU n'a d'intérêt que si tu ne te soucie pas des perfs dans ce cas-là (juste éviter de planter s'il n'y a pas de GPU compatible), sinon tu auras à optimiser des versions séparées CPU / NV / AMD de toute façon et du coup autant coder la version CPU en C ou ton langage préféré multithreadé vectorisé...

  4. #4
    fefe: le truc c'est que je gagnerais sans doute énormément de temps en passant en fréquentiel (avec une FFT), en faisant la multiplication, et en revenant en temporel.
    Mais du coup ça rend les calculs un peu plus compliqués ; rien hors de ma portée mais je suis pas du tout un pro de l'optimisation (j'ai un niveau tout juste passable en C).


    edit-Møgluglu: la seule contrainte de précision c'est "faut pas que ce soit trop pourri" (je cite). Bon...Sauf que mon signal sonore c'est jusqu'à du 32 bits qui passe et ça serait bien qu'il ne descende pas en-dessous de 16bits.
    Bon par contre c'est bien que ce soit censé être transparent, faudra que je vois ça avec une simili-priorité ou autre pour configurer un peu finement le partage du GPU.


    Du coup je m'orienterais plutôt vers des calculs sur GPU, pour le coup.
    Par contre j'ai pas du tout suivi ce sujet, il me semble qu'il y a eu une époque pendant laquelle OpenCL ne fonctionnait sur AMD/ATI que sous Mac (!). C'est fini ?
    Dernière modification par ElGato ; 15/04/2010 à 20h44.


  5. #5
    Il me semblait que FFTW était plutôt orienté grosses FFT ou FFT non puissance de 2.
    4096 points ça n'est pas si une grosse FFT, tu devrais peut-être chercher avec google "sse fft".
    Ca par exemple : http://homepage.virgin.net/roy.longb...%20results.htm

    Je ne suis pas certain non plus que pour 4096 points ça vaille le coup de passer sur GPU, si ?

  6. #6
    Citation Envoyé par newbie06 Voir le message
    Je ne suis pas certain non plus que pour 4096 points ça vaille le coup de passer sur GPU, si ?
    A mon avis non, il faut du support matériel complètement pas nécessaire pour une telle application.
    Surtout que c'est du 1D, franchement avec un CPU moderne, ça devrait passer tranquillou.
    Du coup je mettrais d'abord comme critères la facilité d'intégration, la license et la gratuité...
    Après tu peux remplacer la lib par une autre facilement quand tout le reste tourne.
    Les IPP marchent bien mais je soupçonne qu'elles essaieront de te faire un enfant dans le dos sur AMD
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •