Modérateurs: Modération Forum Haute-Fidélité, Modération Forum Univers Casques, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: mouchli et 72 invités

Toutes les solutions de traitement du signal : différentes méthodes, matériel et logiciel, mise en œuvre...

cudaFIR : filrage FIR accéléré par GPU Nvidia sous Linux

Message » 10 Mar 2021 12:21

Bonjour,
Je ne sais pas si cela va intéresser grand monde, mais j'avais ce projet dans mes cartons depuis bien longtemps et je me suis enfin décidé à en sortir une 1ère version :
cudaFIR : un plugin ALSA de filtrage FIR accéléré par GPU (NVIDIA).
https://github.com/TLeconte/cudaFIR

Le titre est suffisamment abscons pour nécessiter un petit lexique :
  • ALSA : le sous systeme de gestion du son en Linux.
  • plugin : un morceau de code que l'on peut insérer, par simple configuration, dans toute chaine de traitement ALSA.
  • filtrage FIR : je ne vais pas expliquer dans cette section du forum, vous savez ce que c'est.
  • accéléré par GPU Nvidia : Les processeurs des cartes graphique (GPU) sont bien adaptés à l’exécution de calculs simples mais répétitifs. cudaFIR, utilise l'environnement de programmation cuda (d'ou le nom :roll: ) pour effectuer le calcul de convolution par le GPU.

En gros, cudaFIR fait la même chose que BruteFIR, c'est à dire la convolution du signal via FFT et partitionnement de la réponse impulsionnelle du filtre (pour réduire la latence) , sauf que :
  1. C'est moi qu'il l'ai fait 8)
  2. Il est plus facile à mettre en œuvre (pas d'utilisation de loopback) et il s'adapte facilement aux changements de fréquence d'échantillonnage.
  3. Le calcul via le GPU permet le filtrage FIR avec des grandes longueurs d'impulsion, même sur une machine peu puissante, à partir du moment où elle a un GPU Nvidia (pas trop vieux).

Pour l'instant c'est assez expérimental, même si je l'utilise quotidiennement depuis quelques jours sans problème.
Je ne l'ai testé que sur une plateforme Jetson TX1 et ce n'est pas vraiment plug&play : il faut le compiler pour sa plateforme et pour cela il faut avoir le toolkit cuda de Nvidia d'installé. Bref, c'est quand même un peu réservé à ceux qui connaissent le domaine, même si c'est pas non plus trop compliqué.
Je ne l'utilise qu'en correction globale, mais il pourrait, sans doute, directement servir pour du filtrage actif (j'ai pas essayé , il peut toujours y avoir des bugs et je n'ai pas de carte son multicanaux).
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 10 Mar 2021 12:33

Bonjour Tcli,

Cool comme projet, et tu sors le son au niveau HDMI ou tu le redistribues comme tu veux derrière sur un autre carte son ?
Esscobar
 
Messages: 7942
Inscription Forum: 27 Sep 2016 18:10
Localisation: 86 - Châtellerault
  • online

Message » 10 Mar 2021 16:17

Pas de hdmi dans cette affaire. Le GPU ne sert que pour la partie calcul.

*: d'ailleurs Nvidia vend aussi des cartes GPU sans sortie graphique :mdr:
https://www.nvidia.com/fr-fr/data-center/tesla-t4/
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 23 Mar 2021 17:40

Excellent projet ! :bravo:
Je n'ai pas de Nvidia pour tester mais c'est bien dommage !
zx
 
Messages: 343
Inscription Forum: 06 Sep 2003 14:06
Localisation: Normandie
  • offline

Message » 31 Mar 2021 8:19

Salut tcli
j'ai fini par passer quelques minutes pour regarder ton travail :)
Bravo ! et surtout bravo d'être aller jusqu'au bout de l'intégration cuda. On voit bien en jetant un oeil dans convolution.cu que y a du taf pour comprendre le mécanisme d'échange entre cuda et le host et pour déclencher les fft et ifft avec la synchro qui va bien selon les flux alsa...
aussi l'histoire du partitionement de l'impulse ne s'invente pas si on ne maitrise pas le traitement du signal :ohmg:
tu pourrais nous expliquer çà et comment çà réduit la latence ?
aussi pardonne mon ignorance, je pensais voir des fonctions de fenêtrage avant fft, pas nécessaire en traitement continu ?
Tu aurais la possibilité de faire des tests de SNR avec REW sur ta plateforme ? j'aime bien quand on frôle le ppm :hehe:

ca donne envie d'acheter une petite plateforme cuda (Nvidia Jetson Nano à 80 balles sur amazon) juste pour le plaisir de tester ton code :ane:
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 06 Avr 2021 8:50

65 balles chez RS composants! commandée ce jour :ane:
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 07 Avr 2021 18:09

ca va chauffer :hehe:
nvidia jetson nano.png

je pourrais prendre quoi comme distributeur simple avec mpd et alsa déjà embarquées ...?
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline

Message » 07 Avr 2021 18:22

Normalement ca vient avec sa propre distrib (Ubuntu) et il faut la conserver si tu veux avoir toutes les bonnes lib et kernel.
Alsa est de base avec tout Linux et pour mpd, apt install mpd devrait fonctionner.
tcli
 
Messages: 4066
Inscription Forum: 23 Nov 2009 22:40
Localisation: Complètement à l'ouest
  • offline

Message » 09 Avr 2021 15:05

Salut,
je viens de charger l'image Jetson (ubuntu 18.04, 14giga) et de configurer la carte nvidia jetson nano.
après un apt-get update et upgrade et un reboot, jai fait un git clone de cudaFIR
le cmake renvoi une erreur demandant CUDACXX
il suffit de faire
export CUDACXX=/usr/local/cuda-10.2/bin/nvcc
et de relancer cmake .. et make et tout semble compiler à merveille;
Capture d’écran 2021-04-09 à 15.04.28.png

faire un cp libasound_module_pcm_cudaFIR.so /usr/lib/arm-linux-gnueabihf/alsa-lib
et ca doit fonctionner dans alsa.
pour info l'architecture cuda de la jetson nano est "5.3" et c'est donc pile poil la valeur indiqué dans le cmakelist.txt par tcli :bravo:
a suivre, je dois configurer mon ~/.asoundrc et faire une impulse pour aller plus loin
maxidcx
Membre HCFR Contributeur
Membre HCFR Contributeur
 
Messages: 3103
Inscription Forum: 25 Avr 2007 10:50
  • offline


Retourner vers Correction active et logiciels de mesure