Durant les dernières semaines j'ai travaillé sur un nouveau mécanisme permettant de gérer la validation des résultats de nos utilisateurs.
 
 
 

Précédemment nous avions une comparaison pixel par pixel, avec une faible tolérance introduite manuellement en fonction des différents formats (PNG, EXR). Le problème avec une telle comparaison est qu'entre différentes plate-formes, le même processus de rendu peut produire de très petites différences numériques. Ces différences sont si faibles, que dans la plupart des cas notre œil ne peut pas les différencier. Malheureusement, faire une comparaison pixel par pixel pour la validation en utilisant leurs valeurs absolues peut rapidement déclencher les seuils d'erreur, principalement avec de grandes images, invalidant des résultats pourtant valides.
 
 
La solution à ce dilemme est d'utiliser un modèle qui simule le système visuel humain. Ceci est http://pdiff.sourceforge.net/ypg01.pdf   la différence de perception. En se basant sur cette approche, l'idée était d'implémenter cette technique en partant de zéro, mais après un certain temps et plusieurs tests j'ai estimé qu'il était préférable d'utiliser l'implémentation déjà fonctionnelle que fournit l'outil PerceptualDiff. En plus de pouvoir utiliser une implémentation déjà prouvée, notre système bénéficie également d'un besoin en mémoire réduit en utilisant cette méthode.
 
 
Mon problème principal est devenu la résolution de cette question : Quelle image résultat utiliser comme référence ? Normalement on utilise PerceptualDiff dans un environnement contrôlé, où l'image référence est connue à l'avance. Sur Renderfarm.fi ce n'est pas le cas, nous recevons un certain nombre de résultats à partir desquels nous ne pouvons pas dire s'ils sont corrects.
 
Notre système actuel va calculer une valeur spéciale pour chaque résultat. Le système choisi le résultat avec la valeur la plus proche de la moyenne de l'ensemble. En utilisant le résultat référence tous les autres résultats seront validés. Si PerceptualDiff détermine que les images diffèrent perceptiblement un tel résultat sera invalidé.
 
Les tests que nous avons réalisés montrent que ce processus est très robuste : même des sessions avec très peu d'échantillons sont validés correctement, malgré des différences mineures dans les résultats des différentes plate-formes.
 
Cela signifie que nous pouvons finalement attribuer des sessions à l'ensemble des plate-formes supportées au lieu de les assigner à un seul système d'exploitation. Ceci devrait augmenter la performance globale de notre réseau pour les sessions, et tout le monde pourra avoir une quantité égale de travail.
 

Autres améliorations et plans pour l'avenir
 
Durant cet été nous nous sommes principalement occupés des problèmes non résolus et de l'amélioration de la performance du service. Un certain nombre de petits problèmes ont été résolus (la corruption zip qui bloquait des sessions, des crashs du programme à cause de problèmes de librairies, des ordinateurs sous OS X ne recevant pas de travail, la suppression automatique des fichiers après deux semaines, …) et nous allons nous concentrer sur cela encore un peu. Nous allons observer comment le nouveau validateur se comporte, et appliqueront les correctifs nécessaires s'il montre des signes de bugs, bien qu'il soit attendu qu'il fonctionne parfaitement.
 
L'uploader a été mis à jour avec une fonctionnalité qui vous authentifie automatiquement après la première connexion. Cela signifie que vous n'avez plus besoin d'entrer votre e-mail et votre mot de passe chaque fois que vous voulez envoyer du nouveau travail. Ceci a été ajouté ce matin au programme Bender, et sera disponible dans la prochaine version Bender.
 
Cet automne nous pourrons déployer l'économiseur d'écran pour les machines Windows, les autres plate-formes suivront dès que la version Windows fonctionnera correctement. Nous avons également envisagé le remplacement de nos vieux clients avec des machines virtuelles en se basant sur le programme CernVM développé par les gens du CERN, mais il semblerait que la façon dont BOINC supporte les machines virtuelles ne corresponde pas à ce dont nous avons besoin, pour le moment. Nous continuerons le travail dans cette optique si cela semble fonctionner suffisamment correctement.