Il y a deux éléments à considérer ici :
1. Est-ce que le ratio performance théorique / performance pratique est similaire pour tous les supercalculateurs?
2. Est-ce que le benchmark utilisé (HPLINPACK) est représentatif de l'utilisation réelle d'un supercalculateur?
La réponse à ces deux questions est malheureusement non. J'ai calculé le ratio rMax / rPeak du dernier TOP500 (rMax étant la performance sur LINPACK, un benchmark mais une application réelle néanmoins et rPeak est la puissance théorique obtenue en multipliant la puissance de chaque coeur/noeud par leur nombre). Pour les 35 premiers supercalculateurs, ce ratio varie entre 46 et 94%, avec une moyenne de 76% et un écart-type de 12%. Donc oui, il y a de grandes variations inter-calculateurs.
Ceci étant dit, on peut me rétorquer que c'est justement la raison pour laquelle il y a un benchmark tel que LINPACK : lui au moins devrait donner la performance réelle du supercalculateur n'est-ce pas? Pas vraiment. À peu près tout le monde s'entend pour dire que ce chiffre n'est pas fiable et surreprésenté (voir la page wikipédia pour un résumé des critiques, mais beaucoup d'articles scientifiques ont été publiés sur le sujet).
En fait, le problème est très bien connu depuis des décennies et tient (en gros) à une simple formule : la loi d'Amdahl. Cette dernière stipule que le gain lié à la parallélisation est asymptotiquement lié à la portion série du programme (la portion qui ne peut s'exécuter en parallèle). Tout programme possède une portion série, même minimale, ne serait-ce que pour lancer les opérations.
Supposons que j'aie un programme qui requiert 1000 secondes de traitement sur un seul CPU. Si 75% de mon programme est parallélisable (autrement dit le programme passe 750 secondes dans une section qui peut être parallélisée), alors il est facile de constater que peu importe le nombre de processeurs et l'efficacité de leurs interconnexions, il sera impossible d'exécuter ce programme en moins de 1000-750 = 250 secondes.
Avec un faible nombre de processeurs, ce n'est généralement pas trop problématique, puisque la portion série peut généralement être réduite suffisamment. Mais lorsque l'on passe à des milliers de coeurs, ça devient nettement plus problématique. Supposons par exemple un ratio de parallélisation de 0.999 (99.9% du programme peut être parallélisé). Ce programme requiert 10 jours (864 000 secondes) pour s'exécuter sur un seul processeur.
Avec 20 processeurs, l'application de la loi d'Amdahl indique une accélération d'un facteur 19.63 (l'accélération théorique étant de 20, logiquement), soit 12 heures de calcul au lieu de 10 jours. Pas mal!
Ajoutons maintenant des processeurs : passons à 200. Cette fois, l'accélération est de 166.81x (par rapport à 200x théoriquement), soit un temps de calcul d'environ 1h30. Bon, ça passe encore.
Passons maintenant à 2000 processeurs : accélération de 666.89x (par rapport à 2000x). 20 000? Accélération de 952x. 200 000? Accélération de 995x. On a atteint l'asymptote.
Et pourtant, cet exemple est extrêmement favorable : 99.9% de parallélisation, ça se voit extrêmement rarement en pratique lorsqu'il faut prendre en compte les accès disque, la synchronisation entre les noeuds de calcul, le checkpointing, etc. 95% me semble être un taux raisonnable pour les applications courantes (i.e. qui n'ont pas été optimisées aux petits oignons pendant des mois par une équipe d'ingénieurs spécialisés). Dans ce cas, même avec 200 000 processeurs, on va seulement... 20 fois plus rapidement.
Alors oui bien sûr, il est rare qu'un supercalculateur de 200k processeurs soit utilisé pour une seule tâche—en fait à part pour faire rouler LINPACK, je n'ai jamais vu ça. Mais dans ce cas, de plus petits supercalculateurs peuvent tout aussi bien faire l'affaire, en étant plus près des chercheurs, en réduisant le besoin de construire de nouvelles lignes électriques (16 MW, ça ne s'amène pas comme ça), en réduisant la probabilité d'une panne, etc.
Je ne suis pas formellement contre le TOP500, je dis simplement que pour 99.9% des chercheurs, il n'y a (littéralement) aucune différence entre un supercalculateur de 150 TFlops et ce dernier monstre de presque 100 PFlops.
[^] # Re: Attention tout de même...
Posté par Kalenx . En réponse au journal À lire ... Supercalculateur, Chine et Brexit. Évalué à 10.
Il y a deux éléments à considérer ici :
1. Est-ce que le ratio performance théorique / performance pratique est similaire pour tous les supercalculateurs?
2. Est-ce que le benchmark utilisé (HPLINPACK) est représentatif de l'utilisation réelle d'un supercalculateur?
La réponse à ces deux questions est malheureusement non. J'ai calculé le ratio rMax / rPeak du dernier TOP500 (rMax étant la performance sur LINPACK, un benchmark mais une application réelle néanmoins et rPeak est la puissance théorique obtenue en multipliant la puissance de chaque coeur/noeud par leur nombre). Pour les 35 premiers supercalculateurs, ce ratio varie entre 46 et 94%, avec une moyenne de 76% et un écart-type de 12%. Donc oui, il y a de grandes variations inter-calculateurs.
Ceci étant dit, on peut me rétorquer que c'est justement la raison pour laquelle il y a un benchmark tel que LINPACK : lui au moins devrait donner la performance réelle du supercalculateur n'est-ce pas? Pas vraiment. À peu près tout le monde s'entend pour dire que ce chiffre n'est pas fiable et surreprésenté (voir la page wikipédia pour un résumé des critiques, mais beaucoup d'articles scientifiques ont été publiés sur le sujet).
En fait, le problème est très bien connu depuis des décennies et tient (en gros) à une simple formule : la loi d'Amdahl. Cette dernière stipule que le gain lié à la parallélisation est asymptotiquement lié à la portion série du programme (la portion qui ne peut s'exécuter en parallèle). Tout programme possède une portion série, même minimale, ne serait-ce que pour lancer les opérations.
Supposons que j'aie un programme qui requiert 1000 secondes de traitement sur un seul CPU. Si 75% de mon programme est parallélisable (autrement dit le programme passe 750 secondes dans une section qui peut être parallélisée), alors il est facile de constater que peu importe le nombre de processeurs et l'efficacité de leurs interconnexions, il sera impossible d'exécuter ce programme en moins de 1000-750 = 250 secondes.
Avec un faible nombre de processeurs, ce n'est généralement pas trop problématique, puisque la portion série peut généralement être réduite suffisamment. Mais lorsque l'on passe à des milliers de coeurs, ça devient nettement plus problématique. Supposons par exemple un ratio de parallélisation de 0.999 (99.9% du programme peut être parallélisé). Ce programme requiert 10 jours (864 000 secondes) pour s'exécuter sur un seul processeur.
Avec 20 processeurs, l'application de la loi d'Amdahl indique une accélération d'un facteur 19.63 (l'accélération théorique étant de 20, logiquement), soit 12 heures de calcul au lieu de 10 jours. Pas mal!
Ajoutons maintenant des processeurs : passons à 200. Cette fois, l'accélération est de 166.81x (par rapport à 200x théoriquement), soit un temps de calcul d'environ 1h30. Bon, ça passe encore.
Passons maintenant à 2000 processeurs : accélération de 666.89x (par rapport à 2000x). 20 000? Accélération de 952x. 200 000? Accélération de 995x. On a atteint l'asymptote.
Et pourtant, cet exemple est extrêmement favorable : 99.9% de parallélisation, ça se voit extrêmement rarement en pratique lorsqu'il faut prendre en compte les accès disque, la synchronisation entre les noeuds de calcul, le checkpointing, etc. 95% me semble être un taux raisonnable pour les applications courantes (i.e. qui n'ont pas été optimisées aux petits oignons pendant des mois par une équipe d'ingénieurs spécialisés). Dans ce cas, même avec 200 000 processeurs, on va seulement... 20 fois plus rapidement.
Alors oui bien sûr, il est rare qu'un supercalculateur de 200k processeurs soit utilisé pour une seule tâche—en fait à part pour faire rouler LINPACK, je n'ai jamais vu ça. Mais dans ce cas, de plus petits supercalculateurs peuvent tout aussi bien faire l'affaire, en étant plus près des chercheurs, en réduisant le besoin de construire de nouvelles lignes électriques (16 MW, ça ne s'amène pas comme ça), en réduisant la probabilité d'une panne, etc.
Je ne suis pas formellement contre le TOP500, je dis simplement que pour 99.9% des chercheurs, il n'y a (littéralement) aucune différence entre un supercalculateur de 150 TFlops et ce dernier monstre de presque 100 PFlops.