2012-04-23 2 views
1

Étant donné un programme parallèle et un matériel bien défini, comment déterminer son rapport de calcul-à-communication (CCR). Ceci permet de déterminer la granularité d'un programme et l'analyse ultérieure. La littérature décrit ce terme et l'utilise pour se rapporter à la granularité d'un programme mais je n'ai rien trouvé pour estimer le CCR s'il est haut ou bas.Comment déterminer le rapport calcul-à-communication

Répondre

1

Pour comparer le calcul et la communication, vous devez mesurer les deux dans une unité commune. En général, j'utiliserais une mesure de temps. Vous pourriez alors constater qu'un programme a un ratio de 80:20 (calculer: communiquer)

Bien que l'on puisse affirmer qu'un rapport de 50:50 est une valeur élevée pour la communication, ces chiffres ne prennent réellement sens que par rapport à chiffres comparables pour d'autres programmes parallèles. Donc, si le programme A et le programme B résolvent le même problème mais que A a un rapport de 80:20 et B de 70:30, alors vous pouvez faire l'affirmation que A fait plus de calculs que B dans chaque tick de l'horloge. S'ils ne résolvent pas le même problème, vous pourriez vous retrouver à comparer des pommes et des oranges.

Et tandis que le calcul est généralement préféré à la communication, encore une fois ces facteurs sont relatifs. Étant donné les programmes A et B, bien sûr B fait (relativement) plus de communication, mais il est aussi possible que B prenne moins de temps que A - peut-être que B passe plus de temps à envoyer des messages plus importants messages. Choisissez le programme que vous préférez pour les raisons que vous aimez. Si vous avez suffisamment d'expérience de ces questions, vous pouvez généralement faire des suppositions éclairées sur le rapport de l'examen de la structure du programme, mais à la fin, vous allez devoir le mesurer pour tirer des conclusions raisonnables.

+0

D'accord. Je pensais à ce que les paramètres doivent être chronométrés pour obtenir ce ratio. Ou y a-t-il des fonctionnalités du noyau qui suggèrent cela? – marc

+0

C'est un domaine où les outils sont très utiles. Pour les programmes MPI, j'utilise Intel VTune, dans le passé j'ai utilisé Allinea OPT, et il existe des outils open source. Si vous utilisez MPI, vous pouvez avoir un ensemble de routines sous l'apparence de MPE qui sont utiles pour le chronométrage de parties de programmes. À défaut de tels outils, vous pouvez faire vos propres estimations raisonnablement utiles en insérant des relevés de temps dans vos codes aux endroits d'intérêt. –

Questions connexes