2017-04-03 4 views
0

J'ai couru la référence de la bande passante de la mémoire de flux (https://www.cs.virginia.edu/stream/) sur un ordinateur avec 10 processeurs. La référence a indiqué qu'après 3 ou 4 processeurs, l'accélération s'est stabilisée à environ 3x. Quelles sont les implications pratiques de ce résultat pour la performance d'un code MPI? Pour plus de simplicité, supposons que le programme exécute plusieurs processus localement sur cette machine multicœur uniquement. Cela signifie-t-il que si vous exécutez un programme intensif d'accès à la mémoire, vous ne pourrez pas obtenir plus de 3 fois plus d'accélération, même si vous utilisez tous les cœurs? Si vous avez exécuté un programme qui ne nécessite pas beaucoup d'accès à la mémoire, pourriez-vous théoriquement obtenir le plein 10x? Si vous exécutiez simultanément deux ou trois programmes intensifs d'accès à la mémoire, utilisant chacun trois processeurs, seraient-ils capables d'obtenir 3 fois plus d'accélération, ou interfèreraient-ils les uns avec les autres et se ralentiraient-ils tous simultanément en RAM?Quelle est la relation pratique entre le banc d'essai de la bande passante mémoire des flux et l'accélération potentielle de l'exécution locale de MPI?

Répondre

1

L'accélération concerne la quantité de parallélisme existant dans le code. De plus, toute ressource pourrait également devenir un goulot d'étranglement selon le type de l'application. Si votre application nécessite beaucoup de mémoire, vous serez limité par la bande passante mémoire. Si ce n'est pas intensif en mémoire, et qu'il est très parallèle (prenez l'exemple de Monte Carlo), vous vous rapprocherez de l'accélération complète de vos cœurs.

Pour répondre à votre dernière question (mémoire intensive): à la fin de la journée, nous comptons sur les contrôleurs de mémoire pour lire et écrire. Cela dépend donc des banques de mémoire et de l'emplacement des pages physiques. Donc, l'une des deux situations que vous avez mentionnées pourrait se produire.

+0

Est-ce un inconvénient d'utiliser des ordinateurs avec un plus grand nombre de processeurs? Plus précisément, pourriez-vous obtenir de meilleures performances, sur un cluster, en exécutant un travail MPI sur 8 ordinateurs avec 4 processeurs, plutôt qu'un ordinateur avec 32 processeurs? Ce dernier ne nécessiterait pas de communication entre les nœuds, mais le premier a huit contrôleurs de mémoire distincts sur huit nœuds distincts? –

+0

Je ne dirais pas que c'est un inconvénient d'utiliser un plus grand nombre de processeurs. * Application * joue un rôle clé. Souvenez-vous que MPI concerne la communication entre les nœuds et le fait que vous pouvez exécuter un problème plus important (vous avez x * nombre de nœuds de RAM). L'interconnexion joue un rôle clé et les réseaux infiniband d'aujourd'hui peuvent générer des Go/s (en fonction de la taille du message). Il y a donc des paramètres à prendre en compte pour répondre à votre dernière question ... et la réponse est: ça dépend. – Arash

+0

Cool, je pense que "ça dépend" est une réponse à la question. Je me demandais s'il était possible que la distribution sur un plus grand nombre de processeurs avec moins de processeurs soit plus rapide, et vous dites oui, cela pourrait être plus rapide. Définitivement, je comprends que cela dépend, en particulier si la latence de la mémoire locale dans un processus est plus importante ou si la latence due à l'échange de données entre les processus est plus importante. –