FR 3133936 A1 20230929 FR 2202559 A 20220323 L’invention concerne un procédé de traitement dans un accélérateur (1) de réseau de neurones convolutifs comprenant une grille (2) de blocs unitaires de traitement (10) associé à un ensemble (13) de mémoires locales respectives et effectuant des opérations de calcul sur des données stockées dans ses mémoires locales , selon lequel : lors de cycles respectifs de traitement, des blocs unitaires (10) reçoivent et/ou transmettent des données depuis ou à destination de blocs unitaires voisins selon au moins une direction sélectionnée, en fonction desdites données, parmi les directions verticale et horizontale dans la grille ; lors desdits mêmes cycles, des blocs unitaires effectuent une opération de calcul relatives à des données stockées dans leurs mémoires locales lors d’au moins un cycle de traitement antérieur. Figure pour l’abrégé : Fig. 1 Procédé de traitement dans un accélérateur de réseau de neurones convolutifs et accélérateur associé L’invention se situe dans le domaine de l’intelligence artificielle et des réseaux de neurones profonds et plus particulièrement dans le domaine de l’accélération du calcul d’inférence par les réseaux de neurones convolutifs. Les algorithmes d'intelligence artificielle (IA) constituent actuellement un vaste domaine de recherche, car ils sont destinés à devenir des composants essentiels des applications de la prochaine génération, s'appuyant sur des processus intelligents pour prendre des décisions basées sur la connaissance de leur environnement, relativement par exemple à la détection d'objets tels que des piétons pour une voiture à conduite autonome ou la reconnaissance d'activité pour une montre intelligente de suivi de la santé. Cette connaissance est recueillie par des capteurs associés avec des algorithmes de détection et/ou de reconnaissance très performants. En particulier, les réseaux de neurones profonds (DNN pour Deep Neural Network en anglais) et parmi eux, surtout les réseaux de neurones convolutifs (CNN pour Convolutional Neural Network en anglais - voir par exemple Y. Lecun et al. 1998. Gradient-based learning applied to document recognition. Proc. IEEE 86, 11 (Nov. 1998), 2278–2324) sont de bons candidats pour être intégrés dans de tels systèmes en raison de leurs excellentes performances dans les tâches de détection et de reconnaissance. Ils sont basés sur des couches de filtres qui effectuent l'extraction de caractéristiques, puis la classification. Ces opérations nécessitent beaucoup de calculs et de mémoire, et l'intégration de tels algorithmes dans les systèmes requiert l'utilisation d'accélérateurs. Ces accélérateurs sont des dispositifs électroniques qui calculent principalement en parallèle les opérations de multiplication-accumulation (MAC) qui sont nombreuses dans les algorithmes CNN. L'objectif de ces accélérateurs est d'améliorer les performances d'exécution des algorithmes CNN pour répondre aux contraintes applicatives et améliorer l'efficacité énergétique du système. Ils sont principalement basés sur un nombre élevé d'éléments de traitement impliquant des opérateurs optimisés pour l’exécution des MAC et une hiérarchie mémoire permettant un stockage efficace des données. La plupart des accélérateurs matériels sont basés sur un réseau de processeurs élémentaires (Processing Elements - PEs) implémentant des MAC et utilisent des mémoires tampon locales pour stocker les données qui sont fréquemment réutilisées, comme les paramètres des filtres ou les données intermédiaires. Les communications entre les PE eux-mêmes et celles entre les PEs et la mémoire sont un aspect très important à considérer lors de la conception d'un accélérateur CNN. En effet, les algorithmes CNN ont un parallélisme intrinsèque élevé ainsi que des possibilités de réutilisation des données. L'infrastructure de communication sur puce doit donc être conçue avec soin pour exploiter le nombre élevé de PEs et les particularités des algorithmes CNN, qui permettent d'améliorer à la fois les performances et l'efficacité énergétique. Par exemple, le multicast ou le broadcast de données particulières dans le réseau de communication permettra aux PEs cibles de traiter simultanément différentes données avec le même filtre en utilisant une seule lecture mémoire. Plusieurs facteurs ont contribué à limiter ou à complexifier l’évolutivité et la flexibilité des accélérateurs CNN existant sur le marché. Ces facteurs se manifestent à travers : (i) une bande passante limitée liée à l’absence d’un support de diffusion efficace, (ii) un surconsommation d’énergie lié à la taille de la mémoire (ex : 40% de la consommation d’énergie dans certaines architectures est induite par la mémoire) et au problème de mur de capacité mémoire (iii) ainsi qu’une réutilisation limitée des données et un besoin de support efficace pour le traitement des différents patterns de communication. Il existe donc un besoin d’augmenter l’efficacité du traitement dans les accélérateurs de neurones des architectures CNN, tenant compte du nombre élevé du PEs et des particularités des algorithmes CNN. A cet effet, suivant un premier aspect, la présente invention décrit un procédé de traitement dans un accélérateur de réseau de neurones convolutifs comprenant une grille de blocs unitaires de traitement, chaque bloc unitaire de traitement comprenant un élément unitaire de calcul PE associé à un ensemble de mémoires locales respectives et effectuant des opérations de calcul parmi des multiplications et des accumulations de données stockées dans ses mémoires locales ledit procédé comprenant les étapes suivantes : lors de cycles respectifs de traitement cadencés par une horloge de l’accélérateur, des blocs unitaires de la grille reçoivent et/ou transmettent des données depuis ou à destination de blocs unitaires voisins dans la grille selon au moins une direction sélectionnée, en fonction desdites données, parmi au moins les directions verticale et horizontale dans la grille ; lors desdits mêmes cycles, des blocs unitaires de la grille effectuent une desdites opérations de calcul relatives à des données stockées dans leur ensemble de mémoires locales lors d’au moins un cycle de traitement antérieur. Un tel procédé permet de garantir un traitement flexible et de réduire la consommation d’énergie dans les architectures CNN comprenant un accélérateur. Il offre un modèle d’exécution DataFlow distribuant, rassemblant et mettant à jour parmi les nombreux éléments de traitement distribués (PE), les opérandes et permet d’assurer différents degrés de parallélisme sur les différents types de données partagées (poids, Ifmaps et Psum) dans les CNNs, de réduire le coût des échanges de données sans dégrader les performances et enfin de faciliter le traitement de différents réseaux CNN et de différentes couches d’un même réseau (Conv2D, FC, PW, DW, Résiduel, etc.). Dans des modes de réalisation, un tel procédé comprendra en outre l’une au moins des caractéristiques suivantes : - au moins lors d’un desdits cycles de traitement : au moins un bloc unitaire de la grille reçoit des données depuis plusieurs blocs unitaires voisins dans la grille situés dans des directions distinctes par rapport audit bloc unitaire ; et/ou au moins au moins un bloc unitaire de la grille transmet des données à destination de plusieurs blocs unitaires voisins dans la grille selon des directions distinctes ; - un bloc unitaire effectue une transmission de type sélectionné entre broadcast et multicast en fonction d’un en-tête du paquet à transmettre et selon lequel le bloc unitaire applique au moins une desdites règles : pour un paquet à transmettre en broadcast provenant d’un bloc voisin situé dans une direction donnée par rapport audit bloc devant effectuer la transmission, ledit bloc transmet le paquet au cours d’un cycle dans toutes les directions sauf celle dudit bloc voisin ; pour un paquet à transmettre en multicast : si le paquet vient du PE du bloc unitaire, le multicast mis en œuvre par le bloc est bidirectionnel sinon le multicast mis en œuvre par le bloc est unidirectionnel, dirigé à l’opposé du bloc de traitement voisin d’où provient ledit paquet ; les réceptions et/ou transmissions de données mises en œuvre par un bloc unitaire de traitement sont mises en œuvre par un bloc de routage compris dans ledit bloc unitaire, mettant en œuvre des fonctions de routage parallèle de données lors d’un même cycle de traitement, en fonction de directions de communication associés aux données ; en cas d’au moins deux requêtes de transmission simultanées vers une même direction par un bloc unitaire lors d’un cycle de traitement, la priorité entre lesdites requêtes est arbitrée, la requête arbitrée prioritaire est transmise dans ladite direction et l’autre requête est mémorisée, puis transmise vers ladite direction à un cycle de traitement ultérieur. Suivant un autre aspect, l’invention décrit un accélérateur de neurones convolutifs comprenant une grille de blocs unitaires de traitement et une horloge, chaque bloc unitaire de traitement comprenant un élément unitaire de calcul PE associé à un ensemble de mémoires locales respectives et adapté pour effectuer des opérations de calcul parmi des multiplications et des accumulations de données stockées dans ses mémoires locales dans lequel des blocs unitaires de la grille sont adaptés pour, lors de cycles respectifs de traitement cadencés par l’horloge de l’accélérateur, recevoir et/ou transmettre des données depuis ou à destination de blocs unitaires voisins dans la grille selon au moins une direction sélectionnée, en fonction desdites données, parmi au moins les directions verticale et horizontale dans la grille ; et des blocs unitaires de la grille sont adaptés pour, lors desdits mêmes cycles, effectuer une desdites opérations de calcul relatives à des données stockées dans leur ensemble de mémoires locales lors d’au moins un cycle de traitement antérieur. Dans des modes de réalisation, un tel accélérateur comprendra en outre l’une au moins des caractéristiques suivantes : - au moins lors d’un desdits cycles de traitement : au moins un bloc unitaire de la grille est adapté pour recevoir des données depuis plusieurs blocs unitaires voisins dans la grille situés dans des directions distinctes par rapport audit bloc unitaire ; et/ou au moins au moins un bloc unitaire de la grille est adapté pour transmettre des données à destination de plusieurs blocs unitaires voisins dans la grille selon des directions distinctes ; - un bloc unitaire est adapté pour effectuer une transmission de type sélectionné entre broadcast et multicast en fonction d’un en-tête du paquet à transmettre et le bloc unitaire est adapté pour appliquer au moins une desdites règles : pour un paquet à transmettre en broadcast provenant d’un bloc 10 voisin situé dans une direction donnée par rapport audit bloc devant effectuer la transmission, ledit bloc transmet le paquet au cours d’un cycle dans toutes les directions sauf celle dudit bloc voisin ; pour un paquet à transmettre en multicast : si le paquet vient du PE du bloc unitaire, le multicast mis en œuvre par le bloc est bidirectionnel sinon le multicast mis en œuvre par le bloc est unidirectionnel, dirigé à l’opposé du bloc de traitement voisin d’où provient ledit paquet ; - un bloc unitaire comprend un bloc de routage adapté pour mettre en œuvre lesdites réceptions et/ou transmissions de données par le bloc unitaire, ledit bloc de routage étant adapté pour mettre en œuvre des fonctions de routage parallèle de données lors d’un même cycle de traitement, en fonction de directions de communication associés aux données ; - en cas d’au moins deux requêtes de transmission simultanées vers une même direction par un bloc unitaire lors d’un cycle de traitement, le bloc de routage du bloc unitaire est adapté pour arbitrer la priorité entre lesdites requêtes, la requête arbitrée prioritaire étant alors transmise dans ladite direction et l’autre requête étant mémorisée, puis transmise vers ladite direction à un cycle de traitement ultérieur. L’invention sera mieux comprise et d’autres caractéristiques, détails et avantages apparaîtront mieux à la lecture de la description qui suit, donnée à titre non limitatif, et grâce aux figures annexées, données à titre d’exemple. La représente un accélérateur de réseau de neurones dans un mode de réalisation de l’invention ; La représente un bloc unitaire de traitement dans un mode de réalisation de l’invention ; La représente un procédé dans un mode de réalisation de l’invention ; La représente la structure de paquets de communication dans l’accélérateur dans un mode de réalisation ; La représente un bloc de routage dans un mode de réalisation de l’invention ; La schématise l’architecture de contrôle de calcul et de communication dans un mode de réalisation de l’invention ; La illustre un stade de calculs de convolution ; La illustre un autre stade de calculs de convolution ; La représente un autre stade de calculs de convolution ; La illustre l’étape 101 du procédé de la ; La illustre l’étape 102 du procédé de la ; La illustre l’étape 103 du procédé de la . Des références identiques peuvent être utilisées dans des figures différentes lorsqu’elles désignent des éléments identiques ou comparables. Procédé de traitement dans un accélérateur (1) de réseau de neurones convolutifs comprenant une grille (2) de blocs unitaires de traitement (10), chaque bloc unitaire de traitement (11) comprenant un élément unitaire de calcul PE (11) associé à un ensemble (13) de mémoires locales respectives et effectuant des opérations de calcul parmi des multiplications et des accumulations de données stockées dans ses mémoires locales ledit procédé comprenant les étapes suivantes : lors de cycles respectifs de traitement cadencés par une horloge de l’accélérateur, des blocs unitaires (10) de la grille reçoivent et/ou transmettent des données depuis ou à destination de blocs unitaires voisins dans la grille selon au moins une direction sélectionnée, en fonction desdites données, parmi au moins les directions verticale et horizontale dans la grille ; lors desdits mêmes cycles, des blocs unitaires de la grille effectuent une desdites opérations de calcul relatives à des données stockées dans leur ensemble de mémoires locales lors d’au moins un cycle de traitement antérieur. Procédé de traitement selon la revendication précédente, selon lequel au moins lors d’un desdits cycles de traitement : au moins un bloc unitaire (10) de la grille reçoit des données depuis plusieurs blocs unitaires voisins dans la grille situés dans des directions distinctes par rapport audit bloc unitaire ; et/ou au moins au moins un bloc unitaire (10) de la grille transmet des données à destination de plusieurs blocs unitaires voisins dans la grille selon des directions distinctes. Procédé de traitement selon l’une des revendications précédentes, selon lequel un bloc unitaire (10) effectue une transmission de type sélectionné entre broadcast et multicast en fonction d’un en-tête du paquet à transmettre et selon lequel le bloc unitaire applique au moins une desdites règles : pour un paquet à transmettre en broadcast provenant d’un bloc unitaire (10) voisin situé dans une direction donnée par rapport audit bloc devant effectuer la transmission, ledit bloc transmet le paquet au cours d’un cycle dans toutes les directions sauf celle dudit bloc voisin ; pour un paquet à transmettre en multicast : si le paquet vient du PE du bloc unitaire, le multicast mis en œuvre par le bloc est bidirectionnel sinon le multicast mis en œuvre par le bloc est unidirectionnel, dirigé à l’opposé du bloc de traitement voisin d’où provient ledit paquet. Procédé de traitement selon l’une des revendications précédentes, selon lequel les réceptions et/ou transmissions de données mises en œuvre par un bloc unitaire de traitement sont mises en œuvre par un bloc de routage compris dans ledit bloc unitaire, mettant en œuvre des fonctions de routage parallèle de données lors d’un même cycle de traitement, en fonction de directions de communication associés aux données. Procédé de traitement selon l’une des revendications précédentes, selon lequel en cas d’au moins deux requêtes de transmission simultanées vers une même direction par un bloc unitaire lors d’un cycle de traitement, la priorité entre lesdites requêtes est arbitrée, la requête arbitrée prioritaire est transmise dans ladite direction et l’autre requête est mémorisée, puis transmise vers ladite direction à un cycle de traitement ultérieur. Accélérateur de neurones convolutifs comprenant une grille (2) de blocs unitaires de traitement (10) et une horloge, chaque bloc unitaire de traitement (11) comprenant un élément unitaire de calcul PE (11) associé à un ensemble (13) de mémoires locales respectives et adapté pour effectuer des opérations de calcul parmi des multiplications et des accumulations de données stockées dans ses mémoires locales dans lequel des blocs unitaires (10) de la grille sont adaptés pour, lors de cycles respectifs de traitement cadencés par l’horloge de l’accélérateur, recevoir et/ou transmettre des données depuis ou à destination de blocs unitaires voisins dans la grille selon au moins une direction sélectionnée, en fonction desdites données, parmi au moins les directions verticale et horizontale dans la grille ; et des blocs unitaires de la grille sont adaptés pour, lors desdits mêmes cycles, effectuer une desdites opérations de calcul relatives à des données stockées dans leur ensemble de mémoires locales lors d’au moins un cycle de traitement antérieur. Accélérateur de neurones convolutifs (1) selon la revendication précédente, dans lequel, au moins lors d’un desdits cycles de traitement : au moins un bloc unitaire (10) de la grille est adapté pour recevoir des données depuis plusieurs blocs unitaires voisins dans la grille situés dans des directions distinctes par rapport audit bloc unitaire ; et/ou au moins au moins un bloc unitaire (10) de la grille est adapté pour transmettre des données à destination de plusieurs blocs unitaires voisins dans la grille selon des directions distinctes. Accélérateur de neurones convolutifs (1) selon l’une des revendications 6 à 7, dans lequel un bloc unitaire (10) est adapté pour effectuer une transmission de type sélectionné entre broadcast et multicast en fonction d’un en-tête du paquet à transmettre et le bloc unitaire (10) est adapté pour appliquer au moins une desdites règles : pour un paquet à transmettre en broadcast provenant d’un bloc 10 voisin situé dans une direction donnée par rapport audit bloc devant effectuer la transmission, ledit bloc transmet le paquet au cours d’un cycle dans toutes les directions sauf celle dudit bloc voisin ; pour un paquet à transmettre en multicast : si le paquet vient du PE du bloc unitaire, le multicast mis en œuvre par le bloc est bidirectionnel sinon le multicast mis en œuvre par le bloc est unidirectionnel, dirigé à l’opposé du bloc de traitement voisin d’où provient ledit paquet. Accélérateur de neurones convolutifs (1) selon l’une des revendications 6 à 8, dans lequel un bloc unitaire (10) comprend un bloc de routage adapté pour mettre en œuvre lesdites réceptions et/ou transmissions de données par le bloc unitaire, ledit bloc de routage étant adapté pour mettre en œuvre des fonctions de routage parallèle de données lors d’un même cycle de traitement, en fonction de directions de communication associés aux données. Accélérateur de neurones convolutifs (1) selon l’une des revendications 6 à 9, dans lequel en cas d’au moins deux requêtes de transmission simultanées vers une même direction par un bloc unitaire (10) lors d’un cycle de traitement, le bloc de routage du bloc unitaire est adapté pour arbitrer la priorité entre lesdites requêtes, la requête arbitrée prioritaire étant alors transmise dans ladite direction et l’autre requête étant mémorisée, puis transmise vers ladite direction à un cycle de traitement ultérieur.