En janvier se tenait le Compas' 2013, un événement dédié au parallélisme en informatique. Et un papier a suscité notre attention : « Températures, erreurs matérielles et GPU ».
Les erreurs de calcul liées à la température
L'idée de David Defour et Eric Petit est simple : vérifier la tolérance des cartes de calcul quand la température est élevée. Ils ont donc récupéré plusieurs cartes NVIDIA (Telsa, etc.) et effectué des tests en OpenCL pour vérifier si les cartes restaient fiables à haute température. Ce n'est pas un test anodin : les cartes sont de plus en plus souvent installées dans des ordinateurs portables ou dans des ordinateurs de type All In One et subissent donc des contraintes bien supérieures à des cartes installées dans une tour classique, bien ventilée.
Selon les auteurs, les erreurs de calcul ne sont pas rares : avec un programme comme Folding@Home, les statistiques indiquent que 2/3 des GPU grand public font des erreurs détectables et que dans certains cas (2 % des GPU), le taux d'erreurs n'est pas négligeable et atteint environ un calcul sur 10 000. Sur les cartes Tesla, plus contrôlées, ce taux d'erreur est négligeable selon les études.
Pour mesurer les taux d'erreurs, plusieurs cartes ont été placées dans un boîtier externe, fourni par NVIDIA avec certaines cartes Tesla (les D870). Le système de refroidissement et le boîtier ont été modifiés pour augmenter la température des cartes de façon artificielle. Enfin, un programme de test dédié a été écrit en OpenCL pour tester les différentes unités des cartes.
Les cartes testées sont les suivantes : Tesla C870, GeForce 9800GX2, Tesla T10P, GeForce GTX480, GeForce GTX560 et GeForce GTX670. Les cartes ont toutes une limite de température qui arrête physiquement le GPU, sauf la Tesla C870. Les températures limites sont de (respectivement) 130°C, 115°C, 110°C, 105°C et 100°C. Comme on le voit, plus on avance dans le temps et plus la température limite diminue. De plus, les cartes ont une limite en température qui diminue la fréquence : à partir de 105°C (et tous les 5°C), la Tesla C870 divise sa fréquence de fonctionnement par deux (600 MHz au départ). La GeForce 9800GX2 divise sa fréquence par deux à 105°C et passe à seulement 37 MHz au-delà de 115°C. La Tesla T10P divise sa fréquence par deux à 105°C alors que les autres modèles divisent la fréquence par deux à partir de 100°C.
Sur les cartes acceptant de fonctionner à 130°C (GeForce 9800GX2 et Tesla C870), il n'y a pas eu d'erreur de calcul, même après plusieurs jours. À 160°C, une des cartes est morte après 11 jours de tests. À 170°C, les erreurs au niveau des calculs sont fréquentes. Visiblement, les auteurs de l'article n'ont pas réussi à obtenir des erreurs sur les autres cartes, et pour une bonne raison : les mécanismes de protection permettent de protéger les cartes.
Notons que le test OpenCL utilisé a un avantage : il permet de cibler précisément les unités qui effectuent des calculs dont la réponse est fausse. Il est donc techniquement possible d'isoler ces derniers pour ne garder que les unités qui ne font pas d'erreurs.
Pour les amateurs, l'étude est disponible au téléchargement. Il s'agit de l'étude numéro 2 dans la partie Architecture.

"Selon les auteurs, les erreurs de calcul ne sont pas rares" (*1) d'une part et
"Sur les cartes acceptant de fonctionner à 130°C (GeForce 9800GX2 et Tesla C870), il n'y a pas eu d'erreur de calcul, même après plusieurs jours". En fait 1 mois de calculs non-stop à 130C sans erreurs puis 11 jours à 160C, température atteinte en isolant la carte pour l’empêcher d'évacuer la chaleur ! (*2)
Justement, on n'est pas censé atteindre cette température de 130C (ils ont modifié le bios de ces 2 cartes pour bloquer les protections) Et il a fallut des conditions spéciales (isoler la carte) pour détruire une première carte à 160C (cependant sans erreurs pendant 11j) et enfin produire des erreurs sur une seconde carte (test 70minutes) à 170C.
J'ai rien contre David Defour et Eric Petit, mais tout ce qu'ils ont démontré c'est que passer un GPU au four ça fini par le cassé ou lui faire produire des erreurs si on insiste vraiment.
Ils ont en fait prouvé la robustesse des GPUs. Je m'attendais à des erreurs au delà de 100C et grillage au delà de 125C. On en est très très loin.
Alors quelle est la source des erreurs de calculs reportés par Folding@Home ?
Cette étude montre juste que c'est pas la température en fait.
Pistes:
-bug de programmation (erreur humaine donc)
-RAM produisant des erreurs
-car défaillante (pas d'ECC dans 99% des machines de Foldin@Home) (*3)
-car overclockée
-CPU overclocké
...?
(*1) USB/PDF_Track_Architecture/paper_2.pdf commence par "L’apparition de fautes dans les composants intégrés est un phénomène connu [11, 12, 13]. Les nouveaux
coprocesseurs matériels comme les GPU ou les Xeon Phi (MIC) n’échappent pas à la règle"
(*2) Les passages clefs de l'étude:
"4.1 ...Afin d’accélérer le processus de vieillissement des GPU, nous les avons fait fonctionner à des températures
supérieures à leur température de fonctionnement habituelle. Certaines cartes utilisent une puce
de contrôle de la température et du fonctionnement du ventilateur de type ONSEMI ADT7473 [21]. Pour
ce type de carte, certains paramètres liés à la température, en particulier la température maximale admissible,
sont modifiables par mise à jour du BIOS de la carte graphique à l’aide des outils d’overcloking
(ex : nvflash, nibitor). Malheureusement, nous avons constaté lors de nos tests que ces modifications
n’étaient pas disponibles pour l’ensemble des GPU testés. Pour celles dont nous avons réussi à en modifier
le comportement, les puces, en utilisation intensive, n’atteignaient pas la plage de température
visée (160-170 °C). Nous avons donc réalisé une enceinte thermique autour du GPU. Pour réguler la
température, nous avons laissé le mécanisme de refroidissement passif et avons simplement modifié
le fonctionnement du ventilateur. Les relevés de températures étaient effectués pas l’intermédiaire des
sondes de températures internes et vérifiés avec un thermocouple P3400 placé au plus près du GPU."
"5. Résultats expérimentaux
Pendant 3 mois, nous avons réalisé des tests sur différentes cartes graphiques afin d’en analyser le comportement
lorsque celles-ci sont soumises à un stress interne (micro-kernel de test) et à un stress externe
(fortes températures). Nous avons dans un premier temps étudié les différents mécanismes de protections
thermiques de cartes NVIDIA de différentes générations. A partir de ces tests nous avons constaté
que seules les cartes de type C870 et 9800GX2 pouvaient atteindre des températures de fonctionnement
de l’ordre de 130 °C sans modifications matérielles pour inhiber le Thermal Shutdown Protection (TSP).
Nous avons donc fait fonctionner ces exemplaires à 130 °C pendant 1 mois et n’avons constaté aucune
erreurs. Ensuite, nos efforts se sont concentrés sur les cartes C870 qui étaient les seules cartes testées
pouvant fonctionner à des températures supérieures à 160 °C sans activer le TSP."
"5.2. Test de fiabilité
Nous avons constaté que seules les cartes 9800GX2 et C870 pouvaient monter à 130 °C sans modifications
matérielles. Nous avons donc réalisé une première série de test à cette température. Pour cela nous
avons fait fonctionner en boucle l’ensemble des trois tests décrits en section 4.2.2 pendant trois semaines
sur deux exemplaires simultanément de chaque carte. A l’issue de cette période, aucune erreur n’est
apparue.
Nous avons ensuite fait fonctionner deux exemplaires de carte C870 à des températures de l’ordre de
160 °C. Nous avons constaté qu’il était difficile de stabiliser la température précisément, cette dernière
variant de += - 5 °C . Les tests ont fonctionné pendant une période de 15 jours. Une carte s’est révélée
défaillante après une période de 11 jours sans qu’aucune erreur n’apparaisse. La défaillance s’est révélée
permanente même après redémarrage de la machine.
Nous avons ensuite légèrement augmenté la température de fonctionnement de deux cartes C870 pour
les porter à une température moyenne de 170 °C. Nous avons fait fonctionner ces cartes pendant 70
minutes et reporté le type d’erreur et leur fréquences d’apparition dans les graphiques 4 et 5."
(*3) Il y a justement une étude sur la RAM non ECC de google assez intéressante (chercher ecc ram google sur google) Et qui porte sur un grand nombre de machines
1) Tester les dispositifs de protection thermiques des GPU et observer que la t° limite diminue avec la finesse de gravure (et donc avec le temps)
2) Etablir et proposer un protocole (et une batterie de tests OpenCL) visant à déterminer les unités les plus sensible au vieillissement (visiblement ce sont les FPU et/ou les scheduler et non pas les shared mem ou les registres, ce qui est plutôt une surprise).
3) A la question et pourquoi utiliser le facteur température et pas plutôt l'overclocking qui génèrent tous deux des erreurs, et bien parce que la température est un des facteurs permettant de "simuler" le vieillissement accéléré des processeurs.
Pour ce qui est de la fréquence des erreurs dans les cartes graphiques, il y a déjà pas mal de travail sur ce sujet en référence dans l'article, notamment sur la mémoire. Ces travaux portent sur des millions d'heures de calcul sur GPU, où l'on y constate que la fréquence des erreurs est effectivement importante.
En revanche, il est difficile de tirer quelques conclusions que ce soit sur la fréquence des erreurs à partir de tests sur quelques cartes et qui plus est haut de gamme (TESLA). Aussi, cela ne faisait pas partie des objectifs de ce travail.
1/ En fait pas du tout, ils ont fait tout ce qu'ils pouvaient pour les contourner. Faut lire le texte original... (*1)
2/ Il y avait des erreurs dans tous les domaines à 170C
3/ Sauf qu'ils ne maitrisent pas ce vieillissement ! 1 mois à 130C, c'est censé simuler quel vieillissement ? 1an ? 10ans? Ils n'en parlent pas du tout et d'ailleurs n'en savent rien.
En particulier, il n'y a pas de comparaison entre des cartes neuves poussées à 170C et celles "vieillies" à 130C pendant 1 mois (qui ont tournée à 160C pendant 15j sans erreurs sauf celle morte sans erreurs après 11j). Les cartes vieillis font pas d'erreurs alors que les autres si. Mais à 10C de plus. Va conclure quelque chose avec ces infos.
Et bien sûr on ne peut rien conclure du tout car le comportement d'une poignée de cartes.
On ne sait pas en outre si elles ont été achetées ensemble (donc probablement de lots de fabrication identiques ou proches dans le temps) ou à des mois d’intervalle. Sont-ils tombés sur une bonne ou une mauvaise fournée ?
On nous présente une ETUDE qui ressemble en fait à un rapport de stage dont cela n'était qu'une petite partie pas bien ficelée. On propose un protocole sur le logiciel mais le matériel c'est un grand n'importe quoi.
(*1) Le texte commence par:
"Résumé
Les co-processeurs massivement parallèles offrent une grande puissance de calcul en intégrant un nombre
croissant de coeurs. De plus, les technologies de gravure sont de plus en plus denses, les fréquences plus
élevées et les voltages plus faibles. La combinaison de ces facteurs tend à augmenter significativement la
probabilité d’erreurs de calcul dues aux erreurs physiques. Dans cet article, nous présentons les résultats
d’expériences caractérisant l’impact du vieillissement des cartes de type GPU NVIDIA sur l’apparition
d’erreurs physiques. En se basant sur une plateforme logicielle de micro-tests écrits en OpenCL, nous
sollicitons de manière intensive et ciblée certains éléments de l’architecture pour caractériser les éventuelles
erreurs de calcul. Afin d’accélérer le processus de vieillissement et donc d’apparition d’erreurs,
nous utilisons une technique standard, consistant à faire fonctionner les processeurs à des températures
élevées. Ce papier introduit les phénomènes physiques et l’état de l’art liés aux méthodes de caractérisation
des erreurs physiques. Nous présentons ensuite notre adaptation de ces protocoles au cas des
GPU NVIDIA ainsi que nos premiers résultats. Ces derniers montrent comment et où ces erreurs se
produisent."
Je tique sur quelques points :
> Une partie du matériel fut fournie par nVidia.
> Tous les GPU sont estampillés de cette marque.
> L'accent est mis sur les config. les moins rafraîchies (un Kiss-Cool, peut-être ? ;-) comme pad thermique.)
Je ne peux m'empêcher de faire le lien avec le scandale des GeForce 8400M et 8600M pour portables. La marque ne chercherait-elle pas à rassurer des acquéreurs échaudés ? Sa 'suprématie' serait-elle menacée par AMD ? Sinon, quel est l'intérêt de ces 'crashes-tests' pour un professionnel ou un particulier ? Aucun, car l'achat d'un tel équipement souvent coûteux est sensé être fiable pour une utilisation durable dans un environnement correctement ventilé.
Selon moi, il s'agit d'une manipulation de l'information (pas vous, M. Dandumont). Mais une de plus venant de nVidia. Décidément !