Un programme parallèle a été conçu pour être exécuté simultanément par plusieurs processeurs. Donc il est beaucoup plus rapide que son équivalent non parallèle (gain pouvant aller jusqu’à un facteur de 1000). R++ s’intéresse à trois sources de parallélisme, exploitables sur les ordinateurs de bureaux modernes : le multi cœur, la carte graphique et le cloud.
Tout d’abord, le multi-cœur est le fait d’utiliser en parallèle tous les cœurs (CPU) d’un ordinateur. Ensuite, les cartes graphiques (GPU) sont des unités de calculs massivement parallèles (milliers de processeurs). Ces processeurs sont dotés d’une mémoire de très petite taille, ce qui peut être un handicap dans un cadre général, mais qui ne gêne pas dans le cas de calculs mathématiques comme la résolution de systèmes linéaires. Enfin, le cloud est un réseau d’ordinateurs connectés.
Les langages et architectures testés sont: R avec le package MICE, C mono-cœur, C via la carte graphique(CUDA) et C multi-cœur(6,8,10 et 12). Les processeurs utilisés sont :
Pour notre test, des matrices de différentes tailles ont été étudiées: le nombre de variables varie de 100 à 1 000 et le nombre d’observations de chaque variable varie de 1 000 à 1 000 000. Pour chaque taille de matrice, nous avons généré 10 % de valeurs manquantes et le nombre d’imputations M a été fixé à 5.
Dans le cadre de son stage de Master 2, Chai Anchen a comparé l’efficacité du bootstrap
en utilisant différents langages et architectures.
L’imputation multiple est une méthode permettant de pratiquer des analyses statistiques sur des jeux de données incomplets sans provoquer une sous-estimation de la variance. Son principe est le suivant :
Ensuite, l’analyse est conduite sur le jeu de données ainsi complété.
Sans surprise, on constate que C est plus rapide que R.
En effet, les performances de la GPU et du Multi-cœur sont moins nettes. Elles sont meilleures que la performance de la CPU pure, mais seulement à partir d’un certain volume de données. En deçà, les temps de découpage des données, communication avec la carte graphique et avec les cœurs ralentissent l’ensemble de l’opération.
En somme, sur les petits calculs, il est préférable d’utiliser C (même si sur un calcul unique, ça n’a pas beaucoup d’importance: attendre une ou 10 milliseconde ne change pas grand-chose!). Sur des grandes données, la carte graphique est clairement plus efficace.
Elle va 1.24 fois plus vite que le 12 multi-coeurs, 2,4 fois plus vite que 4 multi-coeurs, 3,7 fois plus vite que C et 819 fois plus vite que R…
Pièces complémentaires
Téléchargez le mémoire de Chai Anchen, détaillant l’intégralité des méthodes de programme parallèle et résultats présentés ci-dessus.