Question

J'utilise la version filetée de FFTW (une bibliothèque FFT) pour essayer d'accélérer un code sur une machine à double processeur. Voici la sortie de temps w / seulement 1 fil:

131.838u 1.979s 2:13.91 99.9%

Ici, il est avec 2 fils:

166.261u 30.392s 1:52.67 174.5%

Les temps de l'utilisateur et les pourcentages de charge CPU semblent indiquer qu'il est enfilait assez efficace, mais le temps d'horloge (qui est ce que je me soucie vraiment) me dit (je pense) qu'il prend environ 28 secondes supplémentaires pour traiter avec les filets. Est-ce une façon de décrire la situation? Si oui, est-il assez normal, ou dois-je sans doute quelque chose de mal configuré? Merci pour toute la lumière.

Était-ce utile?

La solution

Je l'ai utilisé la FFTW une bonne quantité, et nous avons constaté que, à moins que vous allez plus de deux processeurs, il est presque toujours une solution propre à simplement utiliser la version mono-thread. Il est plus rapide parce qu'il ya moins de communication inter-thread, ou tout au moins, qui a été mon expérience.

Quelques choses à vérifier:

  1. Vous configurez votre sagesse correctement et l'utiliser? La sagesse, une fois créé, fera votre transformation couler beaucoup plus rapidement. Si vous ne l'utilisez pas, vous devriez être.
  2. Vous appelez la bibliothèque d'un fil, ou de deux? Cela a toujours été mon problème, verrouillait thread appelle plusieurs dans la bibliothèque d'apprendre à être douloureux.
  3. Quelle sont vos transformations? Essayez-vous d'un petit au début, juste pour voir comment ça se passe, puis élargissement?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top