2017-02-17 1 views
0

En ce moment, je suis en train de faire de la programmation parallèle en utilisant OpenMP dans Multi Core Machine. Je suis un nouveau dans la programmation parallèle.Vous avez besoin d'aide pour la programmation parallèle avec OpenMP?

Jusqu'à présent, je l'ai fait suivant chose:

1 million x 1 million programme de multiplication de matrices en utilisant OpenMP

Calculer le temps d'exécution avec une variation du nombre de fils à différentes machines (comme comme Corei5, corei3)

J'ai vu que quand no de thread = 4, c'est le temps minimum nécessaire pour exécuter mon code. (Je ne sais pas pourquoi)

Globalement, c'est une analyse de performance. Maintenant, je veux aller gem5. Maintenant, que puis-je faire ou quelle est la bonne façon pour moi? Je veux savoir, que puis-je faire à partir d'ici. J'ai besoin d'une idée.

Répondre

0

J'ai vu que quand aucun de fil = 4, c'est le temps minimum nécessaire pour exécuter mon code. (Je ne sais pas pourquoi)

Les performances et les temps de fonctionnement des programmes dépendent de l'architecture de l'ordinateur. Alors probablement, vous pouvez raisonner si vous parcourez les spécifications techniques de votre PC. Je suppose que c'est un processeur quad-core ...

Cela peut également dépendre du flux de contrôle réel, des frais généraux de création de threads et d'autres aspects similaires.

Les prochaines étapes que vous pourriez prendre peut être:

  • Rechercher un meilleur algorithme de multiplication matricielle qui présente une complexité temporelle asymptotique inférieure!
  • Améliore le temps d'exécution actuel; En identifiant les parties chaudes de code à l'aide des outils de profilage comme gprof ...
  • Explorer les constructions avancées de openMP pour extraire le parallélisme maximum de votre code