2017-01-16 2 views
0

J'essaye de faire de la programmation multithread pour un processeur ARM multicœur. J'utilise valgrind pour le profilage. Je peux voir à partir du callgraph des appels de fonction sous la fonction principale. Comment interpréter la dépendance des données entre les fonctions? Deux de mes fonctions sont dérivées de la fonction principale et je suppose que cela signifie qu'il n'y a pas de dépendance entre les données et qu'elles peuvent fonctionner en parallèle, mais ce n'est pas le cas. Quelqu'un peut-il expliquer avec un exemple ou où savoir à ce sujet?Analyser la dépendance des données entre les fonctions avec callgraph en utilisant vagrind

Répondre

0

Callgrind (et son outil de visualisation kcachegrind) ne pas montre quelle partie de votre programme peut être exécutée en parallèle. Callgrind est un profileur: elle montre quelle partie de votre programme consomme CPU, ou est en train de faire beaucoup d'erreurs de cache, ou ... kcachegrind le graphique permet de visualiser appel à afficher cette consommation. Si vous voyez une flèche entre les fonctions principales et autres, cela signifie simplement que principal a appelé ces fonctions.

Je ne sais pas un outil qui analyse un programme et détermine ce qui pourrait fonctionner en parallèle.

Valgrind a cependant 2 outils qui peuvent détecter les conditions de course dans un programme multi-thread . Une fois que vous avez parallélisé votre algorithme, ces outils peuvent détecter des bogues (tels qu'un accès non protégé à des variables partagées).