FR3117626A1 - Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones - Google Patents

Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones Download PDF

Info

Publication number
FR3117626A1
FR3117626A1 FR2013373A FR2013373A FR3117626A1 FR 3117626 A1 FR3117626 A1 FR 3117626A1 FR 2013373 A FR2013373 A FR 2013373A FR 2013373 A FR2013373 A FR 2013373A FR 3117626 A1 FR3117626 A1 FR 3117626A1
Authority
FR
France
Prior art keywords
working
memory area
buffer
free region
working buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR2013373A
Other languages
English (en)
Other versions
FR3117626B1 (fr
Inventor
Laurent Folliot
Mirko Falchetto
Pierre Demaj
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
STMicroelectronics SRL
Original Assignee
STMicroelectronics Rousset SAS
STMicroelectronics SRL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS, STMicroelectronics SRL filed Critical STMicroelectronics Rousset SAS
Priority to FR2013373A priority Critical patent/FR3117626B1/fr
Priority to US17/455,770 priority patent/US20220188610A1/en
Priority to EP21211915.0A priority patent/EP4016311B1/fr
Priority to CN202111534114.0A priority patent/CN114638350A/zh
Publication of FR3117626A1 publication Critical patent/FR3117626A1/fr
Application granted granted Critical
Publication of FR3117626B1 publication Critical patent/FR3117626B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Selon un aspect, un procédé est proposé pour définir des placements, dans une mémoire volatile, de mémoires tampons de travail temporaires utilisées pendant une exécution d’un réseau de neurones artificiels, le procédé comprenant les étapes suivantes : - déterminer (20) un ordre d’exécution des couches du réseau de neurones, - définir (21) des placements, dans une zone de mémoire de tas de la mémoire volatile, de mémoires tampons de résultats intermédiaires générées par chaque couche, selon l’ordre d’exécution des couches, - déterminer (22) au moins une région libre de la zone de mémoire de tas pendant l’exécution des couches, - définir (27) des placements de mémoires tampons de travail temporaires dans ladite au moins une région libre de la zone de mémoire de tas selon l’ordre d’exécution des couches. Figure pour l’abrégé : Fig 2

Description

Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones
Des modes de réalisation de la présente invention concernent les réseaux de neurones artificiels, et plus particulièrement l’allocation de mémoire pendant la mise en correspondance de ces réseaux de neurones.
Les réseaux de neurones artificiels comprennent généralement une succession de couches de neurones.
Les réseaux de neurones artificiels prennent un ensemble de données en entrée de la première couche et délivrent un résultat final en sortie de la dernière couche.
Chaque couche située entre la première couche et la dernière couche génère à sa sortie un bloc de données de résultat intermédiaire, aussi appelées données de tenseur. Les autres couches prennent ces données de résultat intermédiaire en entrée et génèrent à partir de celles-ci leurs propres données de résultat intermédiaire.
Les réseaux de neurones artificiels peuvent être mis en œuvre par des circuits intégrés tels que des microcontrôleurs.
Pendant l’exécution du réseau de neurones, chaque résultat intermédiaire est stocké temporairement dans une région de mémoire, appelée région de mémoire globale, d’une mémoire du circuit intégré. Toutefois, les circuits intégrés ont des mémoires de taille limitée.
Il est donc important de limiter la taille requise pour le stockage des résultats intermédiaires générés par les couches du réseau de neurones.
Des procédés sont utilisés pour définir le placement de mémoires tampons de résultats intermédiaires dans la mémoire pendant l’exécution du réseau de neurones afin de limiter la taille de mémoire utilisée pour stocker les résultats intermédiaires.
Par exemple, la demande de brevet européen publiée sous le numéro EP 3 663 987 ou la demande de brevet français déposée sous le numéro 20 04337 divulguent un tel procédé.
Par ailleurs, l’exécution d’une couche peut nécessiter le stockage temporaire de données de travail (en anglais « scratch data ») dans la mémoire. Les données de travail sont des données intra-couche temporaires utilisées uniquement par une couche donnée et qui n’ont besoin d’être allouées que pendant l’exécution de cette couche donnée.
Par exemple, les données de travail peuvent être une copie de poids, des résultats intermédiaires temporaires liés à une couche ou des tableaux de conversion. Les données de travail peuvent aussi être des données intra-couche destinées à des tâches à forte charge de calcul, comme le déroulement de boucle.
Cependant, le stockage temporaire de ces données de travail n’est généralement pas optimisé.
En particulier, pour minimiser le temps d’interférence du réseau de neurones, le stockage temporaire de données de travail provoque généralement des pénalités de mémoire vive ou de mémoire flash.
Il existe par conséquent un besoin pour un procédé permettant d’allouer et de placer de manière efficace les données de travail.
Selon un aspect, un procédé est proposé pour définir des placements, dans une mémoire volatile, de mémoires tampons de travail temporaires (en anglais « temporary scratch buffers ») utilisées pendant une exécution d’un réseau de neurones artificiels, le procédé comprenant les étapes suivantes :
- déterminer un ordre d’exécution des couches du réseau de neurones,
- définir des placements, dans une zone de mémoire de tas (en anglais « heap memory zone ») de la mémoire volatile, de mémoires tampons de résultats intermédiaires générées par chaque couche, selon l’ordre d’exécution des couches,
- déterminer au moins une région libre de la zone de mémoire de tas pendant l’exécution des couches,
- définir des placements de mémoires tampons de travail temporaires dans ladite au moins une région libre de la zone de mémoire de tas selon l’ordre d’exécution des couches.
Les placements de mémoires tampons de résultats intermédiaires, selon l’ordre d’exécution des couches du réseau de neurones, déterminent les limites de la zone de mémoire de tas nécessaire pour allouer ces mémoires tampons de résultats intermédiaires.
Les mémoires tampons de résultats intermédiaires sont allouées dans la zone de mémoire de tas aussi longtemps que nécessaire pour l’exécution d’une couche.
Des régions libres apparaissent dans la zone de mémoire de tas lorsque les mémoires tampons de résultats intermédiaires utilisées pour l’exécution d’une couche ont une taille cumulée plus petite que la taille de la zone de mémoire de tas.
Un tel procédé permet à la région libre disponible de la zone de mémoire de tas utilisée pour allouer des mémoires tampons de résultats intermédiaires, d’être aussi utilisée pour allouer les mémoires tampons de travail.
Les mémoires tampons de travail peuvent être utilisées pour les optimisations de niveaux intra-couche. Par exemple, les mémoires tampons de travail sont utilisées pour déplacer les poids de la couche d’une mémoire flash à une mémoire vive. Les mémoires tampons de travail peuvent aussi être utilisées pour le déroulement de boucle pour les tâches à forte charge de calcul.
En utilisant les régions libres de la zone de mémoire de tas pour allouer des mémoires tampons de travail, il est possible d’optimiser le temps d’interférence sans augmenter la taille de la mémoire vive ou de la mémoire flash.
Le procédé permet aussi une réduction de la consommation d’énergie pour l’exécution du réseau de neurones.
La détermination de l’ordre d’exécution des couches du réseau de neurones peut être réalisée par un algorithme de recherche en profondeur d’abord, par exemple en utilisant des graphes acycliques dirigés.
Les procédés divulgués par la demande de brevet européen publiée sous le numéro EP 3 663 987 ou la demande de brevet français déposée sous le numéro 20 04337 peuvent être utilisés pour définir les placements de mémoires tampons de résultats intermédiaires dans la zone de mémoire de tas.
Selon une mise en œuvre particulièrement avantageuse, les procédés comprennent pour chaque couche :
- la mise en ordre de mémoires tampons de travail temporaires associées à la couche, de la mémoire tampon la plus grosse à la plus petite, les mémoires tampons de travail de taille variable étant mises en file d’attente après la plus petite mémoire tampon,
- la définition de placements des mémoires tampons de travail temporaires en suivant leur ordre.
Selon une mise en œuvre particulièrement avantageuse, le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail en haut de ladite au moins une région libre.
Selon une mise en œuvre particulièrement avantageuse, le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail en bas de ladite au moins une région libre.
Selon une mise en œuvre particulièrement avantageuse, le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail sur une autre mémoire tampon de travail.
Avantageusement, le procédé comprend, pour le placement d’une mémoire tampon de travail :
- la modification du haut de la zone de mémoire de tas afin d’obtenir une région libre en haut de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
- la définition d’un placement de la mémoire tampon de travail dans la région libre en haut de la zone de mémoire de tas.
Selon une mise en œuvre particulièrement avantageuse, le procédé comprend, pour le placement d’une mémoire tampon de travail :
- la modification du bas de la zone de mémoire de tas afin d’obtenir une région libre dans le bas de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
- la mise en place de la mémoire tampon de travail dans la région libre dans le bas de la zone de mémoire de tas.
Selon une mise en œuvre particulièrement avantageuse, les placements pour les mémoires tampons de travail de taille variable sont définis dans au moins une région libre restante de la zone de mémoire de tas après avoir défini les placements des mémoires tampons de travail ayant des tailles fixes. Avantageusement, lorsqu’il y a plusieurs régions libres restantes disponibles pour le placement d’une mémoire tampon de travail de taille variable, on choisit la plus grande région libre parmi ces régions libres restantes pour placer cette mémoire tampon de travail.
De préférence, le procédé comprend :
- le stockage des régions libres pour une couche dans une liste,
- l’actualisation de la liste après chaque définition de placement d’une mémoire tampon de travail.
Selon un autre aspect, un produit de programme informatique est proposé, comprenant des instructions qui, quand le programme est exécuté par un ordinateur, font exécuter par l’ordinateur le procédé susmentionné.
Selon un autre aspect, un circuit intégré est proposé, comprenant :
- une mémoire non volatile configurée pour stocker un réseau de neurones,
- une mémoire volatile,
- une unité de traitement configurée pour :
º déterminer un ordre d’exécution des couches du réseau de neurones,
º définir des placements de mémoires tampons de résultats intermédiaires générés par chaque couche dans une zone de mémoire de tas de la mémoire volatile selon l’ordre d’exécution des couches,
º déterminer au moins une région libre de la zone de mémoire de tas pendant une exécution des couches,
º définir des placements de mémoires tampons de travail temporaires dans ladite au moins une région libre de la zone de mémoire de tas selon l’ordre d’exécution des couches.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est aussi configurée pour, pour chaque couche :
- ordonner des mémoires tampons temporaires associées à la couche, des plus grosses aux plus petites mémoires tampons, les mémoires tampons de travail de taille variable étant mises en file d’attente après la plus petite mémoire tampon,
- définir les placements de mémoires tampons de travail temporaires en suivant leur ordre.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est configurée pour définir un placement d’une mémoire tampon de travail en haut de ladite au moins une région libre.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est configurée pour définir un placement d’une mémoire tampon de travail en bas de ladite au moins une région libre.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est configurée pour définir un placement d’une mémoire tampon de travail sur une autre mémoire tampon de travail.
Avantageusement, l’unité de traitement est configurée pour, pour le placement d’une mémoire tampon de travail :
- modifier le haut de la zone de mémoire de tas afin d’obtenir une région libre en haut de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
- définir un placement de la mémoire tampon de travail dans la région libre en haut de la zone de mémoire de tas.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est configurée pour, pour le placement d’une mémoire tampon de travail :
- modifier le bas de la zone de mémoire de tas afin d’obtenir une région libre dans le bas de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
- placer la mémoire tampon de travail dans la région libre dans le bas de la zone de mémoire de tas.
De préférence, l’unité de traitement est configurée pour définir un placement pour des mémoires tampons de travail de taille variable dans au moins une région libre restante de la zone de mémoire de tas, après avoir défini les placements des mémoires tampons de travail ayant une taille fixe. Avantageusement, quand il y a plusieurs régions libres restantes disponibles pour le placement d’une mémoire tampon de travail de taille variable, l’unité de traitement est configurée pour choisir la plus grande région libre de ces régions libres restantes pour placer cette mémoire tampon de travail.
Selon un mode de réalisation particulièrement avantageux, l’unité de traitement est configurée pour :
- stocker les régions libres pour une couche donnée dans une liste,
- actualiser la liste après chaque définition de placement d’une mémoire tampon de travail.
D’autres avantages et caractéristiques de l’invention apparaîtront à la lecture de la description détaillée de modes de réalisation et de mises en œuvre, en aucun cas limitatifs, et à l’étude des dessins annexés dans lesquels :
et
illustrent de façon schématique divers modes de réalisation et mises en œuvre de l’invention.
La montre un circuit intégré CI. Ce circuit intégré CI peut être par exemple un microcontrôleur, un générateur de code ou tout autre objet susceptible de contenir une architecture matérielle ou logicielle embarquée.
Le circuit intégré CI est configuré pour mettre en œuvre un réseau de neurones. Le réseau de neurones comprend une succession de couches.
Le circuit intégré CI comprend une mémoire non volatile MNV configurée pour stocker les divers paramètres qui définissent l’architecture d’un réseau de neurones, comme la configuration de ses couches et ses poids et paramètres.
Le circuit intégré CI comprend aussi une mémoire volatile MV, par exemple une mémoire vive ou RAM (« mémoire à accès aléatoire »).
La mémoire volatile MV est configurée pour stocker un code d’exécution du réseau de neurones ainsi qu’un programme pour exécuter le réseau de neurones.
La mémoire volatile MV comprend aussi une zone, appelée zone de mémoire de tas, qui peut être allouée de manière dynamique pour le stockage de données utilisées pendant l’exécution du réseau de neurones. Comme on le verra plus loin, ces données peuvent être des résultats intermédiaires générés par des couches ou des données de mémoires tampons de travail utilisées pour l’exécution d’une couche donnée.
La zone de mémoire de tas peut présenter une partie de mémoire rapide et une partie de mémoire lente. Les accès à la partie de mémoire rapide sont exécutés plus rapidement que les accès à la partie de mémoire lente.
Le circuit intégré CI comprend aussi une unité de traitement UT. L’unité de traitement UT comprend par exemple un microprocesseur.
L’unité de traitement UT est couplée à la mémoire volatile MV.
L’unité de traitement est configurée pour allouer la zone de mémoire de tas de la mémoire volatile MV pour stocker des données pendant l’exécution du réseau de neurones.
Afin d’optimiser l’allocation de mémoire pendant l’exécution de ces réseaux de neurones, un procédé pour définir des placements pour les mémoires tampons dans la mémoire volatile est mis en œuvre avant l’exécution du réseau.
L’unité de traitement UT est configurée pour mettre en œuvre un tel procédé. En particulier, l’unité de traitement UT peut exécuter un programme informatique comprenant des instructions qui, quand le programme est exécuté par l’unité de traitement, fait exécuter le procédé par l’unité de traitement.
Le procédé est montré sur la .
Le procédé comprend une étape 20 dans laquelle l’unité de traitement UT détermine un ordre d’exécution des couches du réseau de neurones. Ceci permet d’obtenir un plan d’exécution des couches du réseau de neurones.
Plus particulièrement, la détermination de l’ordre d’exécution des couches du réseau de neurones peut être réalisée par un algorithme de recherche en profondeur d’abord, par exemple en utilisant des graphes acycliques dirigés, bien connus des personnes du métier.
Ensuite, le procédé comprend une étape 21 dans laquelle, selon l’ordre d’exécution des couches, l’unité de traitement UT définit les placements en mémoire de mémoires tampons de résultats intermédiaires, également appelées mémoires tampons de tenseurs.
En particulier, on utilise des mémoires tampons de résultats intermédiaires pour stocker des résultats intermédiaires, également appelés données de tenseurs. Les résultats intermédiaires sont des données qui sont calculées pour chaque couche, sauf la dernière couche, à partir de données reçues à l’entrée de la couche. Les résultats intermédiaires calculés par une couche sont délivrés sur la sortie de cette couche et sont utilisés par d’autres couches exécutées par la suite.
Les résultats intermédiaires ont besoin d’être stockés en mémoire jusqu’à ce que les couches qui les utilisent soient exécutées.
La définition de placements de mémoires tampons de résultats intermédiaires permet d’optimiser la taille de la zone de mémoire de tas de la mémoire volatile, nécessaire pour stocker les résultats intermédiaires.
En particulier, les procédés divulgués par la demande de brevet européen publiée sous le numéro EP 3 663 987 ou la demande de brevet français déposée sous le numéro 20 04337 peuvent être utilisés pour définir les placements de mémoires tampons de résultats intermédiaires dans la zone de mémoire de tas.
La montre des placements de mémoires tampons de résultats intermédiaires dans le temps pour chaque couche.
La montre sur l’axe des y (ordonnée) le placement de mémoires tampons de résultats intermédiaires dans la zone de mémoire de tas HMZ et sur l’axe des x (abscisse) le temps d’exécution en tant que résultat du traitement des couches 1 à N.
Par exemple, les mémoires tampons de résultats intermédiaires TB1, TB2, TB3 sont placées dans la zone de mémoire de tas pendant les temps d’exécution de certaines couches.
La taille de la zone de mémoire de tas HMZ est définie par les placements choisis pour les mémoires tampons de résultats intermédiaires. Par exemple, sur la , la taille sz de la zone de mémoire de tas est égale à sz = topz-botz, où topz est l’adresse haute de la zone de mémoire de tas et botz est l’adresse basse de la zone de mémoire de tas.
Comme on peut le voir, la taille entière de la zone de mémoire de tas n’est pas complètement allouée pendant l’exécution de la plupart des couches.
Certaines régions de la zone de mémoire de tas sont libres pendant l’exécution de la plupart des couches. Par exemple, sur la , les régions FA1, FA2, FA3 sont libres.
Le procédé exploite ces régions libres de la zone de mémoire de tas pour allouer des mémoires tampons de travail temporaires. Le procédé permet en particulier la définition de placements de mémoires tampons de travail temporaires dans la zone de mémoire de tas.
Les mémoires tampons de travail peuvent être utilisées pour stocker des données de travail en vue d’optimiser les niveaux de couches. Par exemple, les mémoires tampons de travail sont utilisées pour déplacer les poids de la couche d’une mémoire flash vers une mémoire RAM. Les mémoires tampons de travail peuvent aussi être utilisées pour le déroulement de boucle pour les tâches à forte charge de calcul.
Les données de travail sont définies pour l’exécution d’une couche donnée du réseau de neurones. Ainsi, chaque mémoire tampon de travail est associée à une couche donnée du réseau de neurones.
Les mémoires tampons de travail peuvent avoir une taille fixe ou une taille variable. Une mémoire tampon de travail variable est une mémoire tampon de travail ayant une taille inconnue avant l’exécution du réseau de neurones. Une mémoire tampon de travail de taille variable peut ou non nécessiter une taille minimum.
En particulier, le procédé comprend une étape 22 dans laquelle l’unité de traitement UT détermine les régions libres de la zone de mémoire de tas sur la durée d’exécution des couches. Plus particulièrement, des régions libres de la zone de mémoire de tas sont déterminées pour le temps d’exécution de chaque couche.
Par exemple, dans la , pour passer à l’exécution de la 10e couche, l’unité de traitement UT a besoin des données stockées dans les mémoires tampons de résultats intermédiaires TB2 et TB3. Ces mémoires tampons de résultats intermédiaires n’occupent qu’une région donnée dans la zone de mémoire de tas. Ainsi, les régions FA1 et FA2 sont libres au moment de l’exécution de la 10e couche.
Les régions libres déterminées sont stockées dans une liste.
Le procédé comprend ensuite un processus pour définir des placements de mémoires tampons de travail temporaires dans les régions libres de la zone de mémoire de tas selon l’ordre d’exécution des couches.
Les placements de mémoires tampons de travail temporaires sont réalisés un par un selon le plan d’exécution des couches.
En particulier, à l’étape 23, les mémoires tampons de travail temporaires à placer sont stockées dans une file d’attente selon le plan d’exécution.
De préférence, les mémoires tampons de travail temporaires associées à la même couche sont stockées dans la file d’attente de la plus grande à la plus petite, les mémoires tampons de travail de taille variable étant mises en file d’attente après la plus petite mémoire tampon de travail.
Comme décrit ci-dessous, après la définition du placement d’une mémoire tampon, cette mémoire tampon est supprimée de la file d’attente.
Le processus pour définir les placements de mémoires tampons de travail comprend une étape 24 dans laquelle l’unité de traitement UT vérifie si la file d’attente est ou non vide.
Si la file d’attente n’est pas vide, cela signifie qu’il y a encore au moins une mémoire tampon de travail à placer. Dans ce cas, l’étape suivante est l’étape 25.
Si la file d’attente est vide, cela signifie qu’il n’y a pas de mémoire tampon à placer. Dans ce cas, le procédé se termine à l’étape 28.
Quand la file d’attente n’est pas vide, à l’étape 25 l’unité de traitement UT récupère la première mémoire tampon de travail de la file d’attente pour la placer dans la zone de mémoire de tas.
En particulier, à l’étape 26, l’unité de traitement UT contrôle les régions libres de la zone de mémoire de tas disponible au moment de l’exécution de la couche associée à la mémoire tampon de travail récupérée à l’étape 25. Ce contrôle est effectué à partir de la liste de régions libres disponibles au moment de l’exécution de la couche.
Ensuite, à l’étape 27, l’unité de traitement UT définit un placement de la mémoire tampon de travail en fonction de ses contraintes et de ses déplacements disponibles.
Un processus pour définir le placement d’une mémoire tampon de travail dans la zone de mémoire de tas est montré sur la .
Plus particulièrement, à l’étape 40, l’unité de traitement UT vérifie si une optimisation de latence est nécessaire pour la mémoire tampon de travail.
Si une optimisation de latence est nécessaire, l’unité de traitement UT choisit à l’étape 41 la partie de mémoire rapide de la zone de mémoire de tas comme partie de la zone de mémoire de tas dans laquelle la mémoire tampon de travail va être placée. Ensuite, l’unité de traitement UT extrait les régions libres de la partie de mémoire rapide de la liste de régions libres selon le temps d’exécution de la couche associée à la mémoire tampon de travail.
Si une optimisation de latence n’est pas nécessaire, l’unité de traitement UT choisit à l’étape 42 la partie de mémoire lente de la zone de mémoire de tas comme partie de la zone de mémoire de tas dans laquelle la mémoire tampon de travail va être placée. Ensuite, l’unité de traitement UT extrait les régions libres de la partie de mémoire lente de la liste de régions libres selon le temps d’exécution de la couche associée à la mémoire tampon de travail.
Ensuite, à l’étape 43, l’unité de traitement UT évalue s’il est possible de placer la mémoire tampon de travail dans les régions libres extraites de la liste.
En particulier, l’unité de traitement UT compare la taille de la mémoire tampon de travail avec la taille de chaque région libre extraite de la liste. Quand une région libre extraite a une taille supérieure ou égale à la taille de la mémoire tampon de travail, cette région libre extraite est adaptée pour recevoir la mémoire tampon de travail.
S’il existe au moins une région libre adaptée pour recevoir la mémoire tampon de travail, l’unité de traitement UT passe directement à l’étape 44 dans laquelle l’unité de traitement UT définit un placement de la mémoire tampon de travail.
S’il n’existe pas de région libre adaptée pour recevoir la mémoire tampon de travail, à l’étape 44, l’unité de traitement UT augmente la taille de la partie de la zone de mémoire de tas dans laquelle la mémoire tampon de travail doit être placée.
En particulier, l’unité de traitement UT peut augmenter le haut ou le bas de la zone de mémoire de tas afin d’obtenir une région libre dans la partie supérieure ou inférieure de la zone de mémoire de tas ayant une taille adaptée pour recevoir la mémoire tampon de travail.
Plus particulièrement, quand il n’y a pas de région libre en haut, respectivement en bas, de la taille mémoire globale, l’unité de traitement UT modifie l’adresse haute, respectivement l’adresse basse, de la zone de mémoire de tas afin d’obtenir une région libre ayant une taille égale à la taille de la mémoire tampon de travail.
Toutefois, lorsqu’il y a une région libre en haut, respectivement en bas, de la zone de mémoire de tas, l’unité de traitement UT modifie l’adresse haute, respectivement l’adresse basse, afin d’augmenter la taille de la région libre de la différence entre la taille de la mémoire tampon de travail et la taille initiale de la région libre.
L’unité de traitement UT passe ensuite à l’étape 45.
À l’étape 45, l’unité de traitement UT définit un placement de la mémoire tampon de travail.
De préférence, si la mémoire tampon de travail a une taille fixe, l’unité de traitement UT peut choisir la plus petite région libre extraite de la liste, avec une taille adaptée pour recevoir la mémoire tampon de travail, pour placer la mémoire tampon de travail.
Ensuite, l’unité de traitement UT peut placer la mémoire tampon de travail ayant une taille fixe selon différents placements possibles.
Un premier placement pour une mémoire tampon de travail de taille fixe consiste à placer, pour minimiser la taille de tas finale et lorsqu’une mise en œuvre de couche spécifique l’exige, la mémoire tampon de travail de telle manière qu’elle soit recouverte par une autre mémoire tampon de travail pour l’exécution de la couche. En particulier, la mémoire tampon de travail peut être placée sur une mémoire tampon de travail déjà placée ayant une taille supérieure ou égale à celle de la mémoire tampon de travail à placer. La mémoire tampon de travail peut aussi être placée sur une mémoire tampon de travail déjà placée ayant une taille inférieure à celle de la mémoire tampon de travail à placer quand il y a une région libre adjacente à la mémoire tampon de travail déjà placée, la région libre ayant une taille supérieure ou égale à la différence entre la mémoire tampon de travail à placer et la mémoire tampon de travail déjà placée. De préférence, cette région libre est une région libre adjacente à la partie inférieure de la mémoire tampon de travail déjà placée.
Un deuxième placement pour une mémoire tampon de travail de taille fixe consiste à placer la mémoire tampon de travail en haut de la plus petite région libre ayant une taille adaptée pour recevoir la mémoire tampon de travail.
Un troisième placement pour une mémoire tampon de travail de taille fixe consiste à placer la mémoire tampon de travail en bas de la plus petite région libre ayant une taille adaptée pour recevoir la mémoire tampon de travail.
Par ailleurs, lorsque tous les placements possibles de mémoires tampons de travail de taille fixe associées à une même couche sont définis, l’unité de traitement continue avec la définition des placements de mémoires tampons de travail de taille variable associées à la même couche.
Pour placer une mémoire tampon de travail de taille variable, l’unité de traitement UT choisit le plus grand ensemble de régions libres qui reste dans la liste pour placer la mémoire tampon de travail. En particulier, les régions libres restantes sont triées par taille décroissante.
Si le nombre de mémoires tampons de travail de taille variable à placer est inférieur ou égal au nombre de régions libres restantes, chaque mémoire tampon de travail peut être placée dans une région libre restante donnée triée par ordre de taille décroissant. Dans ce cas, la taille définie de la mémoire tampon de travail est égale à la taille de la région libre restante dans laquelle on place la mémoire tampon de travail.
Cependant, si le nombre de mémoires tampons de travail de taille variable à placer est supérieur au nombre de régions libres restantes, l’unité de traitement calcule une moyenne du nombre de mémoires tampons de travail à placer dans une région libre restante. Ainsi, une mémoire tampon de travail de taille variable peut être placée dans une région libre restante avec au moins une autre mémoire tampon de travail de taille variable. En particulier, la taille définie de la mémoire tampon de travail à placer est égale à la taille de la région libre restante dans laquelle la mémoire tampon de travail est placée divisée par le nombre de mémoires tampons de travail à placer dans cette région libre restante.
De plus, dans le cas où une mémoire tampon de travail de taille variable a besoin d’une taille minimum supérieure à la taille de chaque région libre restante, il est possible, à l’étape 44, d’augmenter le haut ou le bas de la zone de mémoire de tas pour obtenir une région libre en haut ou en bas de la zone de mémoire de tas ayant une taille égale à la taille minimum nécessaire pour cette mémoire tampon de travail. La mémoire tampon de travail est ensuite placée dans cette région libre.
Après le placement de la mémoire tampon de travail, la liste des régions libres est actualisée, et la mémoire tampon de travail est supprimée de la file d’attente.
Ensuite, on répète le processus à partir de l’étape 24 pour placer la mémoire tampon de travail suivante dans la file d’attente, jusqu’à ce que la file d’attente soit vide.
Lorsque la file est vide, il n’y a plus de mémoire tampon de travail à placer. Le procédé s’arrête à l’étape 28.
Néanmoins, le processus pour définir le placement de mémoires tampons de travail peut être répété afin d’essayer des placements différents pour chaque mémoire tampon de travail. Ceci permet de trouver des placements optimisés pour les mémoires tampons de travail. En particulier, les placements peuvent être optimisés selon un critère donné. Par exemple, le critère peut être d’éviter l’augmentation de la zone de mémoire de tas définie par les placements des mémoires tampons de résultats intermédiaires. Un autre critère peut être de conserver la solution de placement qui permet d’obtenir la taille minimale de zone de mémoire de tas. En variante, un autre critère peut être de conserver la solution de placement qui permet d’obtenir la zone de mémoire la moins fragmentée. Un autre critère pourrait être de conserver la solution de placement qui permet de maximiser les placements des mémoires tampons de travail dans la partie de mémoire rapide de la zone de mémoire de tas pour accélérer l’exécution du réseau de neurones.
Un exemple de solution finale pour le placement de mémoires tampons de résultats intermédiaires et de mémoire tampon de travail est montré sur la . Les placements de mémoires tampons de résultats intermédiaires sont les mêmes que sur la (voir par exemple les mémoires tampons TB1, TB2 et TB3). Ainsi, les placements des mémoires tampons de résultats intermédiaires définissent une zone de mémoire de tas entre les adresses botz et topz.
Comme on peut le voir, certaines mémoires tampons de travail sont placées en haut ou en bas de certaines régions libres. Par exemple, une mémoire tampon de travail SB1 est placée en haut d’une région libre. Une mémoire tampon de travail SB2 est placée en bas d’une région libre.
D’autres mémoires tampons de travail sont placées sur des mémoires tampons de travail déjà placées. Par exemple, une mémoire tampon de travail SB3 est placée sur une mémoire tampon de travail déjà placée en haut d’une région libre. Une autre mémoire tampon de travail SB4 est placée sur la mémoire tampon de travail SB3.
Pour placer des mémoires tampons de travail quand il n’y a pas de région libre disponible, on augmente le haut ou le bas de la zone de mémoire de tas.
Par exemple, pour placer la mémoire tampon de travail SB5, l’adresse du haut de la zone de mémoire de tas est augmentée à l’adressei_topz, afin d’obtenir une région libre de la taille de la mémoire tampon de travail SB5 en haut de la zone de mémoire de tas. Ensuite la mémoire tampon de travail SB5 est placée dans cette région libre.
Par ailleurs, pour placer la mémoire tampon de travail SB6, l’adresse du bas de la zone de mémoire de tas est modifiée à l’adressef_botz, afin d’obtenir une région libre de la taille de la mémoire tampon de travail SB6 en bas de la zone de mémoire de tas. Ensuite la mémoire tampon de travail SB6 est placée dans cette région libre.
Pour placer la mémoire tampon de travail SB7, le haut de la zone de mémoire de tas est augmenté à l’adressef_topzparce que la taille de la région libre en haut de la zone de mémoire de tas définie avant le placement de la mémoire tampon de travail SB6 est plus petite que la mémoire tampon de travail SB7. En particulier, le haut de la zone de mémoire de tas est augmenté de la différence entre la taille de la mémoire tampon de travail SB7 et la taille de la région libre en haut de la zone de mémoire de tas définie avant le placement de la mémoire tampon de travail SB7.
À la fin, la zone de mémoire de tas finale FHMZ est définie entre l’adressef_topzet l’adressef_botz.
Après avoir défini les placements des mémoires tampons de résultats intermédiaires et de la mémoire tampon de travail, l’unité de traitement UT peut exécuter le réseau de neurones.
Quand l’unité de traitement UT exécute les réseaux de neurones, la mémoire est allouée selon les placements définis des mémoires tampons de résultats intermédiaires et selon les placements définis des mémoires tampons de travail.
Le procédé susmentionné permet d’exploiter la région libre disponible de la zone de mémoire de tas utilisée pour allouer des mémoires tampons de résultats intermédiaires pour allouer à leur tour les mémoires tampons de travail.
En utilisant les régions libres de la zone de mémoire de tas pour allouer les mémoires tampons de travail, il est possible d’optimiser le temps d’interférence presque sans modifier la taille de la RAM ou de la mémoire flash.
Le procédé permet aussi une réduction de la consommation d’énergie pour l’exécution du réseau de neurones.

Claims (19)

  1. Procédé pour définir des placements, dans une mémoire volatile, de mémoires tampons de travail temporaires utilisées pendant une exécution d’un réseau de neurones artificiels, le procédé comprenant les étapes suivantes :
    - déterminer (20) un ordre d’exécution des couches du réseau de neurones,
    - définir (21) des placements, dans une zone de mémoire de tas de la mémoire volatile, de mémoires tampons de résultats intermédiaires générées par chaque couche, selon l’ordre d’exécution des couches,
    - déterminer (22) au moins une région libre de la zone de mémoire de tas pendant l’exécution des couches,
    - définir (27) des placements de mémoires tampons de travail temporaires dans ladite au moins une région libre de la zone de mémoire de tas selon l’ordre d’exécution des couches.
  2. Procédé selon la revendication 1, comprenant pour chaque couche :
    - la mise en ordre de mémoires tampons de travail temporaires associées à la couche, de la mémoire tampon la plus grosse à la plus petite, les mémoires tampons de travail de taille variable étant mises en file d’attente après la plus petite mémoire tampon,
    - la définition de placements des mémoires tampons de travail temporaires en suivant leur ordre.
  3. Procédé selon la revendication 1 ou 2, dans lequel le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail en haut de ladite au moins une région libre.
  4. Procédé selon l’une des revendications 1 à 3, dans lequel le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail en bas de ladite au moins une région libre.
  5. Procédé selon l’une des revendications 1 à 4, dans lequel le placement défini d’une mémoire tampon de travail est un placement de la mémoire tampon de travail sur une autre mémoire tampon de travail.
  6. Procédé selon l’une des revendications 1 à 5, comprenant, pour le placement d’une mémoire tampon de travail :
    - la modification du haut de la zone de mémoire de tas afin d’obtenir une région libre en haut de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
    - la définition d’un placement de la mémoire tampon de travail dans la région libre en haut de la zone de mémoire de tas.
  7. Procédé selon l’une des revendications 1 à 6, comprenant, pour le placement d’une mémoire tampon de travail :
    - la modification du bas de la zone de mémoire de tas afin d’obtenir une région libre dans le bas de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
    - la mise en place de la mémoire tampon de travail dans la région libre dans le bas de la zone de mémoire de tas.
  8. Procédé selon l’une des revendications 1 à 7, dans lequel les placements pour les mémoires tampons de travail de taille variable sont définis dans au moins une région libre restante de la zone de mémoire de tas après avoir défini les placements des mémoires tampons de travail ayant des tailles fixes.
  9. Procédé selon l’une des revendications 1 à 8, comprenant :
    - le stockage des régions libres pour une couche dans une liste,
    - l’actualisation de la liste après chaque définition de placement d’une mémoire tampon de travail.
  10. Produit de programme informatique comprenant des instructions qui, quand le programme est exécuté par un ordinateur, font exécuter par l’ordinateur un procédé selon l’une des revendications 1 à 9.
  11. Circuit intégré comprenant :
    - une mémoire non volatile (MNV) configurée pour stocker un réseau de neurones,
    - une mémoire volatile (MV),
    - une unité de traitement (UT) configurée pour :
    º déterminer un ordre d’exécution des couches du réseau de neurones,
    º définir des placements de mémoires tampons de résultats intermédiaires générés par chaque couche dans une zone de mémoire de tas de la mémoire volatile selon l’ordre d’exécution des couches,
    º déterminer au moins une région libre de la zone de mémoire de tas pendant une exécution des couches,
    º définir des placements de mémoires tampons de travail temporaires dans ladite au moins une région libre de la zone de mémoire de tas selon l’ordre d’exécution des couches.
  12. Circuit intégré selon la revendication 11, dans lequel l’unité de traitement (UT) est aussi configurée pour, pour chaque couche :
    - ordonner des mémoires tampons temporaires associées à la couche, des plus grosses aux plus petites mémoires tampons, les mémoires tampons de travail de taille variable étant mises en file d’attente après la plus petite mémoire tampon,
    - définir les placements de mémoires tampons de travail temporaires en suivant leur ordre.
  13. Circuit intégré selon la revendication 11 ou 12, dans lequel l’unité de traitement (UT) est configurée pour définir un placement d’une mémoire tampon de travail en haut de ladite au moins une région libre.
  14. Circuit intégré selon l’une des revendications 11 à 13, dans lequel l’unité de traitement (UT) est configurée pour définir un placement d’une mémoire tampon de travail en bas de ladite au moins une région libre.
  15. Circuit intégré selon l’une des revendications 11 à 14, dans lequel l’unité de traitement (UT) est configurée pour définir un placement d’une mémoire tampon de travail sur une autre mémoire tampon de travail.
  16. Circuit intégré selon l’une des revendications 11 à 15, dans lequel l’unité de traitement (UT) est configurée pour, pour le placement d’une mémoire tampon de travail :
    - modifier le haut de la zone de mémoire de tas afin d’obtenir une région libre en haut de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
    - définir un placement de la mémoire tampon de travail dans la région libre en haut de la zone de mémoire de tas.
  17. Circuit intégré selon l’une des revendications 11 à 16, dans lequel l’unité de traitement (UT) est configurée pour, pour le placement d’une mémoire tampon de travail :
    - modifier le bas de la zone de mémoire de tas afin d’obtenir une région libre en bas de la zone de mémoire de tas ayant la taille de la mémoire tampon de travail,
    - placer la mémoire tampon de travail dans la région libre dans le bas de la zone de mémoire de tas.
  18. Circuit intégré selon l’une des revendications 11 à 17, dans lequel l’unité de traitement (UT) est configurée pour définir un placement pour des mémoires tampons de travail de taille variable dans au moins une région libre restante de la zone de mémoire de tas, après avoir défini les placements des mémoires tampons de travail ayant une taille fixe.
  19. Circuit intégré selon l’une des revendications 11 à 18, dans lequel l’unité de traitement (UT) est configurée pour :
    - stocker les régions libres pour une couche donnée dans une liste,
    - actualiser la liste après chaque définition de placement d’une mémoire tampon de travail.
FR2013373A 2020-12-16 2020-12-16 Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones Active FR3117626B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR2013373A FR3117626B1 (fr) 2020-12-16 2020-12-16 Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones
US17/455,770 US20220188610A1 (en) 2020-12-16 2021-11-19 Method for memory allocation during execution of a neural network
EP21211915.0A EP4016311B1 (fr) 2020-12-16 2021-12-02 Procédé d'attribution de mémoire pendant l'exécution d'un réseau neuronal
CN202111534114.0A CN114638350A (zh) 2020-12-16 2021-12-15 用于神经网络执行期间的存储器分配的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2013373 2020-12-16
FR2013373A FR3117626B1 (fr) 2020-12-16 2020-12-16 Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones

Publications (2)

Publication Number Publication Date
FR3117626A1 true FR3117626A1 (fr) 2022-06-17
FR3117626B1 FR3117626B1 (fr) 2023-12-01

Family

ID=75438898

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2013373A Active FR3117626B1 (fr) 2020-12-16 2020-12-16 Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones

Country Status (4)

Country Link
US (1) US20220188610A1 (fr)
EP (1) EP4016311B1 (fr)
CN (1) CN114638350A (fr)
FR (1) FR3117626B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240020897A1 (en) * 2022-07-12 2024-01-18 Nvidia Corporation Neural network-based image lighting

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017095840A1 (fr) * 2015-12-02 2017-06-08 Google Inc. Détermination d'ordres d'exécution d'un réseau neuronal
US20190147319A1 (en) * 2017-11-14 2019-05-16 Samsung Electronics Co., Ltd. Device and method for processing convolution operation using kernel
CN110162338A (zh) * 2019-05-31 2019-08-23 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
EP3663987A1 (fr) 2018-12-06 2020-06-10 STMicroelectronics (Rousset) SAS Procédé et dispositif de détermination de la taille mémoire globale d'une zone mémoire globale allouée aux données d'un réseau de neurones
EP3712775A1 (fr) * 2019-03-20 2020-09-23 STMicroelectronics (Rousset) SAS Procédé et dispositif de détermination de la taille mémoire globale d'une zone mémoire globale allouée aux données d'un réseau de neurones compte tenu de sa topologie

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1768002A1 (de) 1968-03-20 1972-03-16 Hoechst Ag Harnstoffderivate,ihre Herstellung sowie Anwendung als Herbicide

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017095840A1 (fr) * 2015-12-02 2017-06-08 Google Inc. Détermination d'ordres d'exécution d'un réseau neuronal
US20190147319A1 (en) * 2017-11-14 2019-05-16 Samsung Electronics Co., Ltd. Device and method for processing convolution operation using kernel
EP3663987A1 (fr) 2018-12-06 2020-06-10 STMicroelectronics (Rousset) SAS Procédé et dispositif de détermination de la taille mémoire globale d'une zone mémoire globale allouée aux données d'un réseau de neurones
EP3712775A1 (fr) * 2019-03-20 2020-09-23 STMicroelectronics (Rousset) SAS Procédé et dispositif de détermination de la taille mémoire globale d'une zone mémoire globale allouée aux données d'un réseau de neurones compte tenu de sa topologie
CN110162338A (zh) * 2019-05-31 2019-08-23 北京中科寒武纪科技有限公司 运算方法、装置及相关产品

Also Published As

Publication number Publication date
FR3117626B1 (fr) 2023-12-01
US20220188610A1 (en) 2022-06-16
EP4016311B1 (fr) 2024-05-01
EP4016311A1 (fr) 2022-06-22
CN114638350A (zh) 2022-06-17

Similar Documents

Publication Publication Date Title
FR2691557A1 (fr) Procédé de sélection de tâches sur la base de la priorité stochastique.
EP1805611B1 (fr) Procede d'ordonnancement de traitement de tâches et dispositif pour mettre en oeuvre le procede
US20180113649A1 (en) Data processing using resistive memory arrays
EP1043658A1 (fr) Procédé d'amélioration des performances d'un système multiprocesseur comprenant une file d'attente de travaux et architecture de système pour la mise en oeuvre du procédé
EP3394797A1 (fr) Circuit neuronal optimise, architecture et procede pour l'execution des reseaux de neurones
FR3035243A1 (fr) Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
JP7087825B2 (ja) 学習装置および学習方法
FR3117626A1 (fr) Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones
EP2880588B1 (fr) Systeme de detection de modification d'une pile d'appel de sous-programme
FR2651050A1 (fr) Systeme d'antememoire destine a etre utilise dans un systeme informatique
JP2021072107A (ja) ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法
WO2010049317A1 (fr) Procédé de réalisation d'un appel d'une instance d'une fonction, dispositif, et programme d'ordinateur correspondant.
EP2996040A1 (fr) Procédé de détermination par optimisation d'une architecture multi-coeurs
EP4127928A1 (fr) Traitement de modification de flux de données pour réduire les effets de puissance pendant un traitement parallèle
FR3092572A1 (fr) Procédé de séquencement de charges dans un système de distribution automatisé, avec réduction d’un désordre lors d’une collecte de charges sur un collecteur.
KR20210106217A (ko) 인공 신경망의 재구성을 수행하는 프로세서, 이를 포함하는 전자 장치 및 프로세서의 동작 방법
EP0604310B1 (fr) Procédé de gestion d'une mémoire tampon, et système informatique l'incorporant
EP0449353A1 (fr) Dispositif de traitement de données et procédé pour sélectionner des mots de données contenus dans un dictionnaire
FR3094104A1 (fr) Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
EP2756398B1 (fr) Procede, dispositif et programme d'ordinateur pour allouer dynamiquement des ressources d'un cluster a l'execution de processus d'une application
US20220076102A1 (en) Method and apparatus for managing neural network models
EP4002223A1 (fr) Procédé de mise à jour d'un réseau de neurones artificiel
WO2011125001A1 (fr) Mémoire cache segmentée
FR3109833A1 (fr) Procédé d’allocation de données intermédiaires d’un réseau de neurones artificiel
FR3089664A1 (fr) Procédé et dispositif pour réduire la charge de calcul d’un microprocesseur destiné à traiter des données par un réseau de neurones à convolution

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20220617

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4