2

J'utilise FFTW 3.1.2 avec Fortran pour effectuer des FFT réelles à complexes et complexes à réelles. Cela fonctionne parfaitement sur un fil.Multi-thread FFTW 3.1.2 sur un ordinateur à mémoire partagée

Malheureusement, j'ai quelques problèmes lorsque j'utilise le FFTW multi-thread sur un ordinateur à mémoire partagée 32 CPU. J'ai deux plans, un pour 9 FFT réel à complexe et un pour 9 FFT complexe à réel (taille de chaque champ réel: 512 * 512). J'utilise Fortran et je compilent (en utilisant ifort) mon code reliant aux bibliothèques suivantes:

-lfftw3f_threads -lfftw3f -lm -lguide -lpthread -mp 

Le programme semble compiler correctement et la fonction sfftw_init_threads retourne une valeur entière non nulle, généralement 65527.

Cependant, même si le programme fonctionne parfaitement, il est plus lent avec 2 ou plus de threads qu'avec un. Une commande top indique une charge CPU étrange supérieure à 100% (et beaucoup plus grande que n_threads * 100). Une commande htop montre qu'un processeur (disons le numéro 1) fonctionne à 100% de la charge sur le programme, tandis que tous les autres processeurs, y compris numéro 1, travaillent sur ce même programme, à une charge de 0% , 0% de mémoire et 0 TIME.

Si quelqu'un a une idée de ce qui se passe ici ... merci beaucoup!

Répondre

2

Cela ressemble à un problème de synchronisation. Vous pouvez obtenir ce type de comportement si tous les threads sauf un sont verrouillés, par ex. par un sémaphore à un appel de bibliothèque.

Comment appelez-vous le planificateur? Tous vos appels de fonction sont-ils correctement synchronisés? Créez-vous les plans dans un seul thread ou sur tous les threads? Je suppose que vous avez lu les notes sur thread safety dans les documents FFTW ...;)

1

À moins que vos FFT soient assez grandes, le multithreading automatique dans FFTW est peu susceptible d'être une vitesse de victoire sage. Le temps de synchronisation à l'intérieur de la bibliothèque peut dominer le calcul en cours. Vous devez définir différentes tailles et voir où se situe le seuil de rentabilité.

Questions connexes