Les CPU et les GPU traitent les tâches de manière différente.
En ce qui concerne les interrelations, ils sont souvent comparés respectivement au cerveau et aux muscles de l’informatique.
Un CPU (le cerveau) peut travailler sur une variété de calculs complexes, tandis qu’un GPU (les muscles) est le meilleur pour concentrer toutes les capacités de calcul sur une tâche spécifique; nous pouvons considérer le CPU comme le couteau suisse de l’informatique et le GPU comme la machette.
Le couteau suisse est utile pour de nombreuses choses différentes, du découpage d’un morceau de papier jusqu’à l’ouverture d’une boîte de conserve.
Le couteau de l’armée Suisse est un outil puissant conçu pour maximiser les performances dans toute une série de tâches.
D’un autre côté, vous ne voudriez probablement pas d’un couteau Suisse si vous deviez trouver votre chemin dans la jungle.
Vous préféreriez avoir une machette qui n’est peut-être pas aussi perfectionnée qu’un couteau suisse mais qui peut très bien accomplir simplement sa tâche.
Exprimons cela en termes informatiques.
Un CPU est conçu pour maximiser les performances sur une seule ou quelques tâches en parallèle, mais l’éventail des tâches est assez large.
En revanche, un GPU utilise des milliers de cœurs plus petits et plus efficaces pour une architecture massivement parallèle visant à traiter plusieurs calculs plus simples en même temps.
Les GPU sont beaucoup moins polyvalents qu’un CPU, même s’ils peuvent traiter des données de plusieurs ordres de grandeur plus rapidement qu’un CPU.
Un CPU traditionnel possède environ 16 cœurs et dans un environnement de serveur, il en compte généralement 24 à 48, alors qu’un seul GPU peut compter jusqu’à 2000 cœurs.
Cela rend les GPU très efficaces pour le calcul répétitif et simultané.

Les GPU dans l’identité ?
Jusqu’à présent, nous avons surtout entendu parler des GPU pour les jeux vidéo, le montage vidéo, l’intelligence artificielle, et maintenant les crypto-monnaies.
Alors, pourquoi en parlons-nous dans le milieu de la gouvernance d’identité (IGA) ?
La réponse est simple : nous devons effectuer certains calculs complexes dans le monde de l’IGA également et c’est là que le GPU entre en jeu.
L’un de ces exemples est le calcul de la similarité entre les identités en utilisant la métrique de similarité de Jaccard, par exemple.
Cette métrique est une mesure de la similarité de deux ensembles de données.
La valeur de cette métrique va de 0 à 1, où les valeurs proches de 1 signifient une plus grande similarité et les valeurs proches de 0 une plus faible similarité.
Nous calculons “Jaccard” en calculant les éléments communs entre deux ensembles de données et en les divisant par le nombre total d’éléments dans les deux ensembles de données.
En termes d’AGI, nous pouvons définir la similarité entre les identités sur la base des droits qu’elles partagent.
Comment cela fonctionne?
Similitude Jaccard = Compter les droits communs / compter les droits uniques des deux identités.

Par exemple, nous avons deux identités : Bob et Anne.
Bob a des droits [a,b] et Anne a [b,c].
Dans l’image ci-dessus, nous pouvons voir que le droit commun est b, donc le nombre de droits communs est 1 et le total des droits uniques est 3.
Ici, la similitude de Jaccard est 1/3 ou 0,33.
Nous pouvons donc utiliser les GPU pour calculer “Jaccard” en utilisant la multiplication de matrice.
Similitude de Jaccard utilisant la multiplication matricielle
L’idée est de calculer la similarité de Jaccard entre des identités en utilisant la multiplication matricielle.
Lorsque nous effectuons une multiplication matricielle entre une matrice et sa transposée, nous calculons l’intersection entre les lignes de la matrice. Par exemple, nous avons 4 identités et 4 droits.
Dans le tableau suivant, les colonnes d’habilitation avec une valeur de 1 signifie que l’identité a l’habilitation et une valeur de 0 signifie que l’identité n’a pas l’habilitation.

Maintenant, si nous traitons le tableau ci-dessus comme une matrice et le multiplions avec sa transposition, le résultat sera le suivant :

Comme nous pouvons le voir dans le premier tableau, Bob et Anne partagent 1 droit en commun.
Ainsi, la multiplication matricielle nous donne les droits en commun entre deux identités.
Pour calculer la similitude de Jaccard à partir de la multiplication de la matrice, nous utilisons la formule suivante :
Donc la similitude de Jaccard entre Bob et Anne sera :
Similitude de Jaccard en utilisant le GPU
Comme mentionné au début, nous pouvons utiliser un GPU pour effectuer des calculs simples dans un système massivement parallèle.
Puisque nous savons que nous pouvons calculer la similarité de Jaccard en utilisant la multiplication matricielle, nous pouvons utiliser un cœur de GPU pour paralléliser le système de multiplication matricielle.
Supposons que nous devions calculer “Jaccard” entre 100 000 identités!
Pour calculer “Jaccard” entre toutes les paires d’identités possibles, nous devrons faire environ 10 000 000 000 de calculs car Jaccard a une complexité temporelle de O(n2).
Les calculs peuvent être réduits à 5.000.500.000 avec une logique intelligente.
Cela devrait être facile pour un système, non ? Oui ! C’est très facile, mais cela prend trop de temps.
Si nous effectuons un traitement parallèle sur un processeur à 16 cœurs où chaque cœur peut effectuer 100 calculs par seconde, il faudra environ 36 jours pour terminer 5B calculs.
Conclusion
Nous avons abordé précédemment la différence de puissance significative qu’un GPU et ses capacités de calcul parallèle peuvent avoir lors de tâches simples et répétitives.
La multiplication d’une matrice semble être un problème parfait pour l’utilisation des GPU.
Un GPU normal et bon marché sur le cloud peut avoir jusqu’à 2 048 cœurs de traitement parallèle au lieu d’un simple CPU de 16 cœurs.
En utilisant la même logique que précédemment, supposons qu’un cœur peut encore effectuer 100 calculs par seconde, le GPU prendra environ 6 heures pour terminer ce calcul.
La différence de temps entre le CPU et le GPU est de 36 jours contre 6 heures, respectivement. Pas mal !
La mise à l’échelle des GPU s’accompagne de son propre lot de problèmes.
Par exemple, la mémoire du CPU est bon marché et peut atteindre des centaines de gigaoctets, mais la mémoire du GPU est nettement plus chère et limitée, souvent à 8 ou 16 Go pour un seul GPU.
Cela signifie que nous ne pouvons pas simplement placer un jeu de données entier et volumineux dans la mémoire du GPU, sinon il sera surchargé et échouera.
Nous devons procéder à des optimisations complexes et utiliser des techniques avancées de multiplication matricielle pour nous assurer que nous pouvons calculer le “Jaccard” sur une mémoire GPU limitée.
Ces optimisations nous permettraient de transformer ces 6 heures en 6 minutes!
Source : SailPoint