mardi 4 juin 2013

Multithreading équilibré pour la discriminante

Dans le document « Multithreading pour l’analyse discriminante », nous présentions une implémentation multithread de l’analyse discriminante à destination des machines à processeurs multi-coeurs ou multiprocesseurs. A occupation mémoire égale par rapport à la version séquentielle, elle permettait de réduire les temps de calculs dans des proportions considérables en fonction des caractéristiques des données. La solution présentait néanmoins deux faiblesses : le nombre de coeurs utilisé était tributaire du nombre de classes K dans la base à traiter ; l’équilibrage des charges entre les cœurs dépendait de leur fréquence. Ainsi, sur une des bases d’expérimentation avec K = 2 classes très fortement déséquilibrées, le gain était quasi-nul par rapport à la version monothread.

Dans ce tutoriel nous présentons une nouvelle solution implémentée dans Sipina 3.11. Au prix d’une occupation mémoire accrue, que nous préciserons, elle permet de surmonter les deux goulots d’étranglement pointés sur la version précédente. Les capacités de la machine sont pleinement utilisées. Plus intéressant même, le nombre de threads devient paramétrable, permettant à l’utilisateur d’adapter les ressources machines à exploiter pour le traitement des données.

Pour mieux situer les améliorations induites par notre stratégie, nous comparons nos temps d’exécution avec la version multithread parcimonieuse en mémoire développée précédemment, la version séquentielle, et la référence SAS 9.3 (proc discrim).

Mots-clés : sipina, multithreading, thread, multithreaded data mining, multithread processing, analyse discriminante prédictive, analyse discriminante linéaire, sas, proc discrim
Didacticiel : fr_Tanagra_Sipina_LDA_Threads_Bis.pdf
Données : multithreaded_lda.zip
Références :
Tanagra, "Multithreading pour les arbres de décision".
Tanagra, "Analyse discriminante linéaire - Comparaisons".
Wikipédia, "Analyse discriminante linéaire".