|

|
Bien que
l'actualité micro-informatique porte souvent
principalement sur les possibilités que les nouvelles
machines offrent aux joueurs, les ordinateurs sont souvent
utilisés pour venir à bout de calculs
complexes. Cette page illustre modestement une application
de ce genre, en tentant de quantifier à la fois la
qualité mais aussi la rapidité de quelques
configurations disponibles actuellement sur le
marché.
Introduction
La première partie
du travail consiste à évaluer la
qualité du travail exécuté par la
machine. En effet, il ne sert à rien d'avoir
rapidement un résultat faux ou approximatif, il vaut
mieux avoir un résultat valable en un peu plus de
temps. Cette étape est à faire une fois, pour
chaque couple matériel-compilateur.
La deuxième étape est spécifique
à notre problème. On discrétise un
objet dans l'espace, et effectue des tests sur des coupes de
cet objet. Évidemment, plus la discrétisation
est fine, meilleurs sont les résultats, mais plus la
place mémoire occupée est importante. Une fois
les résultats obtenus, ils n'ont
généralement pas besoin d'être
recalculés, sauf pour de nouvelles formes
d'objets.
La troisième et dernière étape utilise
un algorithme génétique pour estimer de
manière probabiliste l'adéquation entre un cas
pratique, mesuré physiquement, et les cas
théoriques issus de l'étape
précédente. Cette étape est la plus
importante pour la performance, car elle doit être
répétée à chaque mesure
physique.
Qualité
des résultats
Les travaux de l'IEEE sur
la norme IEEE 754, ainsi que les nombreux articles de
William Kahan, pour ne citer qu'eux, montrent que le respect
de certaines règles est essentiel pour obtenir des
résultats de qualité, et éviter les
calculs numériquement instables.
Les machines testées ont été des
stations Alpha, des Macintosh PowerPC ainsi que des PC
à processeur x86. En général, la
qualité des compilateurs est au rendez-vous, que ce
soit avec des outils gratuits ou commerciaux (un seul
compilateur, pourtant commercial et très
répandu, a donné des résultats
quasiment inacceptables, mais trop longs à
détailler ici...). Il est
quasi-systématiquement possible d'obtenir le respect
des conventions de l'IEEE 754 à l'aide d'options de
compilation.
Notons toutefois que les compilateurs commerciaux pour
processeurs x86, contrairement à gcc, snobent le
format long
double et les 80 bits de
précision disponibles sur ces processeurs, pour se
contenter des formats classiques 32 et 64 bits,
présents sur les autres processeurs.
Calculs sur un
objet discrétisé
Bien que ce test
manipule, de manière fortement aléatoire, de
grandes quantités de données (16,2 Mo au
total), la part la plus importante du temps passé
l'est dans des routines de calcul pur. Le graphique suivant,
réalisé sur un PowerPC G3 et un Celeron, tous
deux à 400 MHz, montre que la performance
diminue peu avec l'augmentation de la taille des
données manipulées.
Évidemment, une
mémoire cache de taille importante, cadencée
rapidement, aide à diminuer la perte de performance
liée aux accès mémoire. Cependant, le
code de calcul de ce programme permet aux processeurs
globalement performants de s'exprimer pleinement : de
nombreux calculs en virgule flottante sont
exécutés, et mêlés à des
tests ainsi qu'à des calculs d'adresse
mémoire. Ce test est donc l'opposé de celui
qui sert à qualifier les
unités de calcul des processeurs, prises une à
une.
Les systèmes testés
sont les suivants :
|
Système
|
Processeur
|
Fréquence CPU
|
Cache
L2
|
Fréquence cache
|
|
Compaq
Alpha
|
Alpha 264
|
600 MHz
|
8 Mo
|
?
|
|
Apple
PowerBook
|
PowerPC
G3
|
400 MHz
|
1 Mo
|
160 MHz
|
|
PC Athlon
|
Athlon
1re génération
|
600 MHz
|
512 ko
|
300 MHz
|
|
Portable
Celeron
|
Celeron
|
400 MHz
|
128 ko
|
400 MHz
|
|
PC Pentium
II
|
Pentium
II
|
350 MHz
|
512 ko
|
175 MHz
|
Les différences de taille
de mémoire cache empêchent de conclure de
manière catégorique, mais on peut probablement
dire que ces résultats sont tout de même
significatifs de la puissance de calcul brute que
développe chaque processeur. L'Alpha 600 MHz
reste intouchable, même par un hypothétique
Athlon 1500 MHz, et il possède encore de la
marge (833 MHz actuellement). L'Athlon reste cependant
leader des x86 (en attendant le test d'un rarissime
Pentium4 ?), avec une marge confortable due non
seulement à son architecture mais aussi à sa
fréquence de fonctionnement élevée. Il
est aussi probable que les x86 haut de gamme, quels qu'ils
soient, devancent nettement les G3/G4 haut de gamme.
Algorithme
génétique
Ce test manipule une
quantité de données relativement faible
(820 ko), mais accédées
aléatoirement par paquets d'un peu moins d'une
centaine d'octets. La plus grosse partie du travail consiste
à lire et à écrire des données
en mémoire, et dans une moindre mesure à
effectuer des calculs sur des entiers et sur des flottants
(principalement le calcul d'une racine
carrée).
On peut constater, sur le
graphique suivant, l'influence de la taille des
données sur la rapidité de calcul du
programme, pour un système donné. Sur la
courbe liée au G3 (en rouge), l'influence de chaque
niveau de cache (32 ko de niveau 1, 1 Mo de niveau
2) , puis la mémoire RAM, est symbolisée par
des approximations linéaires (en noir).
Ce programme est donc
favorisé par les machines comportant beaucoup de
cache rapide. Cependant, toutes les machines sont incapables
de contenir les 820 ko de données dans du cache
intégré sur puce. Les systèmes
testés étant les mêmes que
précédemment, on constate que :
- l'Alpha et le PowerPC sont capables de contenir les
données dans leur cache de niveau 2, la
majorité des données est donc
accédée à la vitesse du bus
mémoire-cache ;
- l'Athlon, le PII et le Celeron sont obligés
d'accéder à la mémoire RAM pour
manipuler toutes les données ; ces accès
ont lieu en moyenne 1 fois sur 3 pour les deux premiers, et
5 fois sur 6 pour le troisième.
Les configurations mémoire répondent à
des choix à la fois techniques et commerciaux. Ces
choix sont plus ou moins heureux pour répondre
à notre problème, qui n'a pas la
prétention d'être universellement
représentatif. La figure suivante présente les
résultats obtenus par nos configurations
précédentes. Il est évident qu'avec la
forte dépendance du test vis-à-vis du cache et
de la RAM, il n'est pas question d'extrapoler
linéairement les résultats à des
fréquences CPU différentes de celles
testées ici.
L'Athlon ravit la place du G3, et
le PII celle du Celeron. L'Alpha reste leader.
Remarquons comment l'échange de beaucoup de cache
externe avec moins de mémoire cache mais plus rapide
est pénalisant dans notre cas. C'est pourquoi la
tendance actuelle, qui veut que l'on mette de plus en plus
souvent une quantité relativement faible de cache sur
puce, est loin d'être la panacée pour
résoudre tous les problèmes de performance.
Les Thunderbird et PentiumIII, à fréquence
égale, devraient se comporter moins favorablement que
les Athlon et PentiumII.
Conclusion
Obtenir du code de
qualité sur des programmes de calcul scientifique est
chose relativement aisée. Il suffit de faire la
vérification une fois, et le cas
échéant de détecter les options de
compilation qui conviennent.
L'Alpha, architecture équilibrée par
excellence, se joue de tous nos programmes. Même s'il
ne se détache pas particulièrement lorsque
l'on teste séparément ses unités de
calcul (voir les résultats de l'observatoire), celles-ci sont apparemment
prévues pour fonctionner harmonieusement ensemble. Le
fait qu'il existe des configurations encore bien plus
puissantes que celle que nous avons testée vient
conforter ce point de vue.
L'Athlon est probablement le meilleur second choix, ou le
premier choix pour le commun des mortels (pour qui une
station Alpha reste un rêve inaccessible :-).
Même s'il reste légèrement
derrière le G3 sur le premier test, c'est de peu. Et
comme le second test est le plus critique au niveau de la
performance, car il doit être
répété à chaque mesure,
l'avantage de l'Athlon est net sur ses concurrents.
On trouve des Athlon/Thunderbird
et des PentiumIII à des fréquences nettement
supérieures et dans des configurations mémoire
bien plus performantes que celles testées. C'est
aussi le cas, mais dans une moindre mesure, pour le G3
à 400 MHz. Et le Celeron se heurtera toujours au
goulot d'étranglement de la mémoire, et
n'obtiendra jamais de performance mirobolante.
L'Athlon conforte ainsi sa seconde place (et probablement la
première, au rapport performance/prix). Le choix
entre un G3/G4 haut de gamme et un PentiumIII haut de gamme
est à notre sens beaucoup plus difficile, et doit
faire appel à d'autres critères que la
performance.
Merci à
Jérôme et Hermès pour leur aide dans
l'obtention des résultats présentés
ici.
|
|