Brevet FR3050846A1 (20171103)
REVENDICATIONS1.Dispositif pour distribuer des coefficients de convolution d'au moins un noyau de convolution d'un réseau de neurones convolutionnel portés par un bus d'entrée (201) vers un ensemble d'unités de traitement dans un calculateur basé sur une architecture de réseau de neurones convolutionnel, caractérisé en ce que le dispositif comprend au moins un réseau de permutation (30) pilotée par au moins une unité de contrôle (32), le réseau de permutation comprenant un ensemble de permutateurs (30) agencés pour effectuer des décalages circulaires d'au moins une partie du bus d'entrée, et en ce que, pour chaque noyau de convolution, chaque unité de contrôle est configurée pour piloter dynamiquement certains au moins des permutateurs (300) des réseaux de permutation (30) en réponse à un événement d'entrée appliqué sur le noyau de convolution et d'au moins un paramètre représentant la taille maximale des noyaux de convolution.\n<CLM>\1\tDispositif selon la revendication 1, caractérisé en ce que chaque noyau de convolution est représenté par une matrice de convolution de taille donnée dans un repère de dimensions choisies, et en ce que les réseaux de permutation sont interconnectés entre eux sous la forme d'une structure en arbre, dit arbre de décalage, ledit arbre comprenant un ensemble de noeuds, chaque noeud représentant un réseau de permutation, et un ensemble de niveaux, le nombre de niveaux dans l'arbre étant déterminé à partir du nombre de dimensions dudit repère, la taille du bus d'entrée (201) étant définie à partir de la taille maximale de noyau de convolution.\n<CLM>\1\tDispositif selon la revendication 2, caractérisé en ce que chaque niveau de l'arbre correspond à une dimension donnée dudit repère, et en ce que les réseaux de permutation (30) agencés sur un niveau donné de l'arbre sont configurés pour effectuer des décalages circulaires des données du bus d'entrée selon la dimension associée audit niveau.\n<CLM>\1\tDispositif selon l'une des revendications 2 et 3, caractérisé en ce que la matrice de convolution représentant chaque noyau de convolution (12) comprend un ensemble de colonnes, et en ce que le dispositif de routage (200) est configuré pour diviser le bus d'entrée en un ensemble de sous-bus d'entrée en fonction du nombre de colonnes dans la matrice de convolution, les coefficients de convolution de chaque sous-bus d'entrée (2010) étant associé à un desdits réseaux de permutation (30) sur un premier niveaux de l'arbre, chaque réseau de permutations sur ledit premier niveau étant configuré pour réaliser des décalages circulaires des coefficients des sous-bus d'entrée en fonction d'un événement d'entrée sur le noyau de convolution, la sortie de chaque réseau de permutation du premier 3050846 32 niveau de l'arbre étant délivrée en entrée d'un bus de données intermédiaire sous la forme d'un vecteur de données d'entrée (204), les vecteurs de données d'entrée du bus de données secondaires étanf permutées par un réseau de permutation agencé sur le deuxième niveau de l'arbre. 5\n<CLM>\1\tDispositif selon l'une des revendications 2 à 4, caractérisé en ce qu'il comprend au moins une unité de contrôle (32) pour piloter les réseaux de permutations d'un niveau donné de l'arbre. 10\n<CLM>\1\tDispositif selon l'une des revendications précédentes, caractérisé en ce que chaque réseau de permutation comprend un ensemble de permutateurs (300) agencés en couches superposées pour effectuer un décalage circulaire des lignes du bus (201) en entrée du réseau de permutation (30), chaque couche de permutateurs (300) étant activable par l'unité de contrôle pilotant le réseau de permutation et étant configurée pour effectuer des 15 permutations entre deux lignes d'entrée.\n<CLM>\1\tDispositif selon la revendication 5, caractérisé en ce que les permutateurs sont des permutateurs à deux états. 20\n<CLM>\1\tDispositif selon la revendication 7, caractérisé en ce que chaque couche de permutateur (300) a un degré représentant la distance entre deux lignes du bus d'entrée permutées, et en ce que le degré de chaque couche de permutateurs (300) d'un réseau de permutation (30) est égal à 2 élevé à une valeur de puissance choisie (2n) . 25\n<CLM>\1\tDispositif selon la revendication 8, caractérisé en ce que la valeur de puissance choisie est égale à la partie entière de log2(N), où N désigne le nombre de lignes du bus d'entrée (201).\n<CLM>\1\tDispositif selon l'une des revendications 5 à 6, caractérisé en ce que le réseau de 30 permutation est configuré pour réaliser plusieurs décalages circulaires de taille inférieure au nombre de lignes du bus d'entrée (201).\n<CLM>\1\tDispositif selon l'une des revendications 5 à 6, caractérisé en ce que le réseau de permutation est configuré pour réaliser un décalage circulaire de taille égale au nombre de 35 lignes du bus d'entrée (201). 3050846 33\n<CLM>\1\tDispositif selon l'une des revendications précédentes, caractérisé en ce que le réseau de neurones convolutionnel (100) comprend une matrice d'entrée, la matrice d'entrée comprenant un ensemble de neurones d'entrée, la matrice d'entrée étant connectée à une matrice de sortie par des noyaux de convolution, et en ce que l'événement d'entrée est 5 l'adresse du neurone d'entrée à activer sur la matrice d'entrée du réseau de neurones convolutionnel, le dispositif de routage (200) étant apte à déterminer le nombre de lignes du bus d'entrée (201) sur lesquelles un décalage circulaire est à appliquer en fonction de l'adresse d'entrée. 10\n<CLM>\1\tDispositif selon l'une des revendications précédentes, caractérisé en ce que le réseau de neurones convolutionnel est à impulsions et en ce que l'événement d'entrée est défini par l'adresse de l'impulsion arrivant sur la carte d'entrée.\n<CLM>\1\tCalculateur neuromorphique comprenant une mémoire pour stocker les coefficients de 15 noyaux de convolution et un ensemble d'unités de traitement pour calculer la réponse d'un réseau de neurones à un événement d'entrée, caractérisé en ce qu'il comprend un dispositif de routage (200) selon l'une des revendications précédentes pour distribuer les coefficients aux unités de traitement. 20