Bonjour � tous,
J'ai besoin d'optimiser un morceau d'algorithme faisant une convolution.
Cod� en Matlab, la convolution (conv2) d'une matrice de taille 4000*1600 par un noyau de taille 105*81 est de l'ordre de 6s sur un P4 standard.
A priori, on ne sait pas comment Matlab convolue avec conv2. Je pense qu'il utilise la FFT.
J'aimerais r�duire ce temps en passant en C ou C++. Je me penche donc sur l'utilisation de la FFT. En utilisant FFTW, on arrive � une quinzaine de seconde pour effectuer les FFT et IFFT sur une image de 4096*2048. On remarque �galement que la fonction FFT2 de Matlab mets � peur pr�s 2 � 3 fois moins de temps que la librairie C FFTW.
Quelqu'un a-t-il une id�e � proposer pour acc�l�rer le processus de convolution? Je reste surpris de ne pas r�ussir � faire mieux en C.
J'ai vu rapidement les librairies MKL de chez Intel o� une FFT est cod�e. Des id�es quant � son efficacit�?
Pensez-vous qu'il soit possible de r�duire le temps de convolution par FFT (ou pas d'ailleurs) � 1 seconde environ pour les tailles donn�es en d�but de post?
Merci d'avance pour vos avis,
Adrien
Partager