Brevet FR3157613A1 — publié le 20250627

Il est proposé un procédé de compilation comprenant les étapes consistant à : déterminer, pour chaque expression matricielle (E) d’un code source, N opérations matricielles (O n ) ordonnées, générer, à partir des opérations matricielles, un code objet, délivrer le code objet à un dispositif d’exécution comprenant une unité de stockage (240) apte à comprendre au moins un espace mémoire temporaire (241), chacun comprenant des sous-espaces temporaires (241-n). Les instructions du code objet comprennent, pour chaque fil d’exécution du code objet : la pré-allocation d’un espace temporaire, pour chaque expression du fil d’exécution, l’exécution de N groupes d’instructions, associés chacun à une des opérations matricielles et comprenant : l’allocation d’une matrice (T n ) correspondant au résultat de l’évaluation de l’opération, dans un sous-espace temporaire, l’évaluation de l’opération et le stockage de la matrice, la Nième matrice (T N ) étant le résultat de l’exécution de l’expression du fil. Figure pour l’abrégé : [Fig.4] Procédé et système informatique pour l’évaluation en temps-réel d’expressions matricielles d’un code La présente invention concerne de manière générale les systèmes informatiques, et en particulier un procédé et un système pour l’évaluation en temps-réel d’expressions matricielles de code. Les systèmes sous contraintes temporelles (dits « systèmes temps-réel ») opèrent sous le contrôle d’un ou plusieurs programmes informatiques, et prennent en compte des contraintes temporelles d’exécution à respecter. En particulier, des systèmes temps-réel utilisent un dispositif informatique pour exécuter un code objet, comportant des instructions à exécuter, qui régit le fonctionnement du système sous contraintes temporelles. Pour certains systèmes temps-réel, tels que par exemple les systèmes de contrôle-commande robotique, le code objet à exécuter est issu de la compilation d’un code source comprenant une ou plusieurs expressions matricielles à évaluer (c’est à dire à calculer). Dans le cas de tels systèmes temps-réel, le respect des contraintes temporelles d’exécution du système est aussi important que la conformité des résultats de l’évaluation des expressions matricielles du code source. Les dispositifs informatiques d’exécution de code logiciel nécessitant l’évaluation d’expressions matricielles dynamiques utilisent généralement l’instanciation automatique et implicite de matrices dynamiques pour stocker les résultats de calculs intermédiaires de ces expressions matricielles. En particulier, l’instanciation automatique mise en œuvre induit des opérations d’allocation et de désallocation dynamiques de mémoire. De telles opérations, lorsqu’elles sont réalisées par le biais de l’allocateur par défaut du langage, ont généralement lieu dans le « Tas ». Cependant, dans les systèmes soumis à des contraintes temps-réel, une telle instanciation automatique, induisant une allocation dynamique de mémoire via l’allocateur par défaut du langage, ne peut généralement pas garantir un temps d’exécution borné, et ne peut donc garantir le respect des contraintes temporelles essentielles au bon fonctionnement de tels systèmes. Pour permettre le traitement d’une expression matricielle selon un temps d’exécution borné, une méthode couramment employée consiste à utiliser une décomposition des expressions matricielles complexes en sous-expressions simples, unaires ou binaires pour les opérateurs arithmétiques, ainsi qu’une pré-instanciation explicite, hors contexte temps-réel, des matrices dynamiques destinées au stockage des résultats intermédiaires des sous-expressions décomposés. Cependant, une telle décomposition met fortement à contribution le programmeur, rendant l’écriture d’expressions matricielles complexes fastidieuse, difficilement lisible et sujette à erreurs d’implémentation. Ceci nécessite en outre la définition de nombreuses matrices intermédiaires, augmentant ainsi l’emprunte mémoire du programme informatique, à l’exécution. Il existe ainsi un besoin pour un système et un procédé capable d’améliorer le traitement d’expressions matricielles complexes utilisant des matrices dynamiques, en particulier en temps-réel. A cet effet, il est proposé procédé de compilation d’un code source en un code objet, mis en œuvre dans un outil de compilation. Le procédé de compilation comprend les étapes consistant à : - recevoir un code source comprenant au moins une expression matricielle, - déterminer, pour chaque expression matricielle du code source, N opérations matricielles, N étant un entier supérieur ou égal à 1, à partir d’une analyse syntaxique de l’expression matricielle, les opérations matricielles étant ordonnées selon un ordre relatif à des règles de priorité opératoires, - générer un code objet à partir des opérations matricielles déterminées à partir des au moins une expression matricielle, le code objet comportant des instructions machine exécutables par au moins un processeur, le code objet comprenant au moins un fil d’exécution associé à une ou plusieurs expressions matricielles parmi les au moins une expression matricielle, et - délivrer le code objet à un dispositif d’exécution de code objet apte à exécuter le code objet, et comprenant une unité de stockage, l’unité de stockage étant apte à comprendre au moins un espace mémoire temporaire, chaque espace mémoire temporaire étant apte à comprendre des sous-espaces mémoire temporaires. Les instructions du code objet comprennent, pour chaque fil d’exécution : - des instructions de pré-allocation d’un espace mémoire temporaire dans l’unité de stockage du dispositif d’exécution, et - pour chaque expression matricielle associée au fil d’exécution, des instructions d’exécution successive de N groupes d’instructions selon l’ordre relatif à des règles de priorité opératoires, chaque groupe d’instructions étant associé à une des N opérations matricielles et comprenant : - une instruction d’allocation d’une matrice de résultat intermédiaire correspondant au résultat de l’évaluation de l’opération matricielle, dans un sous-espace mémoire temporaire de l’espace mémoire temporaire, et - une instruction d’évaluation de l’opération matricielle et de stockage de la matrice de résultat intermédiaire correspondante, - une instruction de délivrance de la Nième matrice de résultat intermédiaire en tant que résultat de l’exécution de la au moins une expression matricielle associée au fil d’exécution. La présente invention propose de plus un procédé informatique comprenant une phase de compilation d’un code source en un code objet et une phase d’exécution du code objet, le procédé étant mis en œuvre dans un système informatique comprenant un outil de compilation et des moyens d’exécution de code, les moyens d’exécution de code comprenant une unité de stockage. Le procédé comprend, dans la phase de compilation, les étapes consistant à : - recevoir un code source comprenant au moins une expression matricielle, - déterminer, à partir d’une analyse syntaxique de la au moins une expression matricielle, N opérations matricielles, N étant un entier supérieur ou égal à 1, les opérations matricielles étant ordonnées selon un ordre relatif à des règles de priorité opératoires, et - générer un code objet à partir des N opérations matricielles, comprenant des instructions machines exécutables par au moins un processeur, le code objet comprenant au moins un fil d’exécution associé à une ou plusieurs expressions matricielles parmi les au moins une expression matricielles, Le procédé comprend, dans la phase d’exécution du code objet, pour chaque fil d’exécution, les étapes consistant à : - pré-allouer un espace mémoire temporaire dans l’unité de stockage du dispositif d’exécution, et - pour chaque expression matricielle associée au fil d’exécution, exécuter successivement les N opérations matricielles déterminées pour l’expression matricielle, selon l’ordre relatif à des règles de priorité opératoires, l’exécution d’une des opérations matricielles comprenant les étapes consistant à : - allouer une matrice de résultat intermédiaire correspondant au résultat de l’évaluation de l’opération matricielle, dans un sous-espace mémoire temporaire de l’espace mémoire temporaire, et - évaluer l’opération matricielle et stocker la matrice de résultat intermédiaire dans le sous-espace mémoire temporaire, - délivrer la Nième matrice de résultat intermédiaire en tant que résultat de l’exécution de la au moins une expression matricielle associée au fil d’exécution. Dans des modes de réalisation, pour chaque expression matricielle associée au fil d’exécution, les sous-espaces mémoire temporaires, associés aux matrices de résultat intermédiaire fournies, peuvent être alloués selon une stratégie d’allocation dynamique de type « pile » dans le au moins un espace mémoire temporaire pré-alloué dans l’unité de stockage et associé au fil d’exécution. Avantageusement, pour chaque fil d’exécution, l’espace mémoire temporaire peut être pré-alloué dans un segment mémoire « Tas », l’unité de stockage correspondant à l’allocateur dynamique de mémoire par défaut. Dans certains modes de réalisation, le procédé peut comprendre, dans la phase d’exécution, une étape consistant à pré-allouer au moins un espace mémoire persistant dans l’unité de stockage, et pour chaque fil d’exécution, une étape consistant à assigner, pour chaque expression matricielle associée au fil d’exécution, la Nième matrice de résultat intermédiaire du Nième sous-espace mémoire temporaire à une matrice de l’espace mémoire persistant. Le procédé peut comprendre, dans la phase d’exécution, pour chaque fil d’exécution, une étape consistant à désallouer, pour chaque expression matricielle associée au fil d’exécution, les N sous-espaces mémoire temporaires de l’espace mémoire temporaire associé au fil d’exécution. Avantageusement, le procédé peut comprendre, dans la phase d’exécution, pour chaque fil d’exécution, une étape consistant à désallouer l’espace mémoire temporaire de l’unité de stockage. La taille de l’espace mémoire temporaire pré-alloué pour chaque fil d’exécution peut être déterminée en fonction du nombre N de matrices de résultat intermédiaire fournies et de la taille des matrices de résultat intermédiaire associées à une expression matricielle du fil d’exécution. Il est également proposé un outil de compilation configuré pour mettre en œuvre le procédé de compilation. Dans des modes de réalisation, l’outil peut comprendre une librairie informatique et un compilateur, le code source étant compilé par le compilateur à partir d’un ensemble de consignes de traitement prédéfinies dans la librairie informatique. Les modes de réalisation de l’’invention fournissent ainsi un système informatique configuré pour mettre en œuvre le procédé de compilation. Avantageusement, les moyens d’exécution de code peuvent être soumis à des contraintes de temps-réel. Les modes de réalisation de l’invention fournissent ainsi un système et un procédé capable d’améliorer le traitement d’expressions matricielles utilisant des matrices dynamiques, en optimisant les performances de calcul et en garantissant un temps d’exécution borné. Ils permettent notamment d’assurer l’absence d’allocation dynamique automatique et implicite de matrices dynamiques par le biais de l’allocateur par défaut du langage (i.e. dans le Tas) pour stocker les résultats des calculs intermédiaires d'expressions matricielles, et de garantir une empreinte mémoire minimale et une performance d’exécution optimale du fait d’une co-localité préservée des données via une stratégie d’allocation spécifique. Il en résulte une solution compatible avec des dispositifs informatiques (ou systèmes informatiques) soumis à des contraintes temporelles. Ils permettent également d’assurer l’utilisation d’une écriture d’expressions matricielles dites littérales, dans un format conventionnel (c’est-à-dire dans un format conforme à l’écriture mathématique de l’expression), lisible et facile à maintenir, quelle que soit leur complexité, sans nécessiter la définition de matrices intermédiaires. L’effort du programmeur s’en trouve fortement réduit, le code informatique associé gagne en lisibilité, en maintenabilité et est moins sujet à erreur d’implémentation. Description des figures D’autres caractéristiques, détails et avantages de l’invention ressortiront à la lecture de la description faite en référence aux dessins annexés donnés à titre d’exemple. FIG. 1 La FIG. 1 est un schéma représentant un système comprenant un dispositif informatique de compilation et un dispositif informatique d’exécution, selon des modes de réalisation de l’invention. FIG. 2 La FIG. 2 montre deux schémas (a) et (b) représentant les états d’un espace mémoire dite temporaire respectivement avant et pendant l’évaluation d’une expression matricielle par un dispositif informatique d’exécution, selon des modes de réalisation de l’invention. FIG. 3 La FIG. 3 est un exemple d’implémentation de lignes de code d’une librairie informatique de calcul utilisée par un dispositif informatique de compilation, selon des modes de réalisation de l’invention. FIG. 4 La FIG. 4 est organigramme représentant un procédé de traitement d’expressions matricielles, par un dispositif informatique de compilation, selon des modes de réalisation de l’invention. FIG. 5 La FIG. 5 est organigramme représentant un procédé de traitement d’un code objet issu de la compilation d’expressions matricielles, par un dispositif informatique d’exécution, selon des modes de réalisation de l’invention. Des références identiques sont utilisées dans les figures pour désigner des éléments identiques ou analogues. Pour des raisons de clarté, les éléments représentés ne sont pas à l’échelle. Description détaillée La FIG. 1 représente schématiquement un système 1 comprenant un dispositif informatique de compilation 10 et un dispositif informatique d’exécution 20, selon des modes de réalisation de l’invention. Le dispositif informatique de compilation 10 est configuré pour compiler un code source 121 en un code objet 221 destiné à être exécuté (c’est-à-dire que le code objet est exécutable) par le dispositif informatique d’exécution 20. Le dispositif informatique d’exécution 20 peut être utilisé dans de nombreuses applications nécessitant des calculs sur matrices dynamiques et soumis à des contraintes de temps-réel. Le dispositif informatique peut notamment être un dispositif de contrôle-commande (ou ‘ process control ’ selon l’expression anglo-saxonne). Par exemple et sans limitation, un tel dispositif informatique peut être un dispositif de contrôle-commande robotique, un dispositif de contrôle-commande de navigation d’aéronef, un dispositif de contrôle-commande d’un dispositif cyber-physique complexe, un dispositif de simulation numérique de dispositifs complexes, ou encore un dispositif de traitement du signal (notamment de traitement d’images). Comme représenté sur la FIG. 1 , le dispositif informatique d’exécution 20 peut être différent du dispositif informatique de compilation 10. En variante, le dispositif de compilation 10 et le dispositif d’exécution 20 peuvent être un seul et même dispositif informatique. Le dispositif informatique de compilation 10 (encore appelé ‘outil de compilation’ ou ‘dispositif de compilation de code source’) comprend un processeur 160, le code source 121 à compiler et une librairie informatique 123. Le dispositif informatique 10 comprend en outre un programme informatique de compilation, appelé également compilateur 125, destiné à être chargé dans une mémoire vive 141 du dispositif informatique de compilation 10 afin d’être exécuté par le processeur 160. Le code source 121 et la librairie informatique 123 comportent des lignes de code écrites dans un langage informatique. Le langage informatique peut être un langage informatique orienté objet compilable, tel que par exemple et sans limitations le langage C++. Le code source 121 comprend une ou plusieurs expressions matricielles E à traiter (c’est-à-dire à évaluer, à calculer). La librairie informatique 123 comporte des consignes de traitement prédéfinies comprenant des définitions et des déclarations de propriétés sous forme de code source. La librairie informatique peut également comprendre du code machine exécutable. Les lignes de code source 121 sont destinées à être compilées en un code objet 221 par le compilateur 125 à partir des règles de compilation du langage et des consignes de traitement prédéfinies de la librairie informatique 123. Dans des modes de réalisation, le code source 121, la librairie informatique 123 et le compilateur 125 peuvent être compris dans la mémoire de masse (non représentée sur les figures) du dispositif informatique 10. Tel qu’utilisé ici, le terme « expression matricielle » fait référence à une expression algébrique matricielle littérale de forme quelconque, composée d’une combinaison finie de symboles et respectant les règles de priorité des opérateurs arithmétiques. Par exemple et sans limitation, une expression matricielle, notée E, peut être définie comme l’équation (01) suivante : E : { R = A * X + B * Y } (01) Dans l’équation (01), les termes R, A, X, B et Y sont des symboles représentant des matrices. Les matrices A, X, B et Y correspondent aux matrices d'entrée à partir desquelles l'expression matricielle E est évaluée (i.e. calculée, déterminée). La matrice R est la matrice résultat résultant de l’évaluation de l'expression matricielle E. Dans l’équation (01) également, les termes « * » et « + » sont des symboles d'opérateurs, représentant respectivement les opérateurs arithmétiques de composition (ou multiplication, ou produit) et d’addition (ou somme) matricielles. Il est à noter qu’une expression matricielle E est composée de N opérations matricielles élémentaires (encore appelées ‘expressions élémentaires’), notées O n , associées à un indice ‘n’ qui est un entier compris entre 1 et N et correspond à la nième opération matricielle. La valeur de N est un entier supérieur ou égal à 1. Chaque expression matricielle E issue du code source 121 peut être caractérisée par un nombre N d’opérations matricielles ordonnées distinctes et/ou spécifiques à l’expression matricielle E. Le résultat de l’exécution (ou de l’évaluation) d’une opération matricielle O n de l'expression matricielle E produit une matrice de résultat intermédiaire, notée T n . Chaque opération matricielle O n d’une expression matricielle E comprend un unique symbole d’opération. Une opération matricielle peut être un opérateur unaire (relative au traitement d’un unique opérande matriciel), un opérateur binaire (relative au traitement de deux opérandes), ou encore une fonction d’un nombre quelconque d’opérandes. Par exemple et sans limitation, une telle fonction peut être une fonction unaire, comme la fonction ‘déterminant’ det(A) ou la fonction trace tr(B), ou encore une fonction binaire, comme la fonction ‘produit de Kronecker ’ kron(C, D), les termes A, B, C et D représentant des matrices. Un opérande matriciel d’opération matricielle O n peut être une matrice d'entrée de l’expression matricielle E, ou une matrice de résultat intermédiaire T h associé à une autre opération matricielle de l'expression matricielle E, notée O h , dont l’indice ‘h’ est un entier compris entre 1 et n. Les N opérations matricielles d’une expression matricielle E peuvent être classées selon un ordre défini à partir de règles de priorité (correspondant aux règles de priorité des opérations et, en particulier, des opérateurs arithmétiques, c’est à dire les règles d’ordre de traitement des symboles d’opération). Dans certains modes de réalisation, une opération matricielle binaire peut comprendre un opérande matriciel et un opérande scalaire. Dans l’exemple représenté en équation (01), l’expression matricielle E illustrée comprend trois opérations matricielles O 1 , O 2 et O 3 définies selon les expressions (02), (03) et (04) suivantes : O 1 : { T 1 = A * X } (02) O 2 : { T 2 = B * Y } (03) O 3 : { T 3 = T 1 + T 2 } (04) Les matrices intermédiaires (résultant de l’évaluation des opérations matricielles intermédiaires) sont des matrices dynamiques. Tel qu’utilisé ici, le terme « matrice dynamique » fait référence à une matrice de dimension inconnue à la compilation du code source 121. Les matrices d'entrée de l'expression matricielle E et/ou la matrice résultat R (résultant de l’évaluation de E) peuvent également être des matrices dynamiques. Les matrices d'entrée de l’expression matricielle E peuvent être qualifiées de « matrices persistantes ». Avantageusement, les matrices de résultat intermédiaires T n associées aux opérations matricielles O n peuvent être qualifiées de « matrices temporaires ». Tel qu’utilisée ici, l’expression « matrice temporaire » fait référence à une matrice crée dans un espace mémoire spécifique d’un dispositif informatique au cours de l’exécution d’un code logiciel, puis supprimée au cours ou à la fin du temps d’exécution. Toute matrice qui n’est pas une matrice temporaire est une matrice persistante. Ainsi, l’expression « matrice persistante » fait référence à une matrice qui reste (i.e. persiste) en mémoire dans le dispositif informatique au-delà de la portée locale du code logiciel qui l'a créé. Le dispositif informatique d’exécution 20 (encore appelé ‘moyen d’exécution de code’, ‘dispositif d’exécution de code’) peut comprendre une unité de stockage 240, ainsi qu’un processeur 260 pour exécuter le code objet 221 généré par le dispositif informatique de compilation 10, comme représenté sur la FIG. 1 . Dans des modes de réalisation, l’unité de stockage 240 du dispositif informatique d’exécution 20 (encore appelée ‘unité de sauvegarde’ ou ‘ module de stockage’) peut être le segment de données. Tel qu’utilisé ici, le terme « segment de données » peut faire référence à un segment de mémoire vive dédié aux données du procédé d’exécution de code objet. Le terme « segment de données » peut donc faire référence à une région mémoire pouvant inclure : l’espace mémoire utilisé par l’allocateur dynamique de mémoire par défaut du langage, c’est-à-dire le « Tas » (ou ‘ heap memory ’ selon l’expression anglo-saxonne correspondante), la « Pile » (ou ‘ stack memory ’ selon l’expression anglo-saxonne correspondante), et/ou l’espace mémoire réservée aux données dites statiques. Le code objet 221 comprend des instructions qui, lorsqu'exécutées par le processeur 260, commande le dispositif informatique d’exécution 20, afin que ce dernier effectue le traitement des expressions matricielles issues du code source 121. En d’autres termes, le code objet 221 comprend des instructions machines exécutables par au moins un processeur. En particulier, le code objet 221 peut comprendre des instructions d’initialisation, des instructions de traitement et des instructions de terminaison. Le dispositif informatique 20 d’exécution du code objet 221 peut ainsi être configuré pour traiter une partie ou l’ensemble des expressions matricielles E comprises dans le code source 121. En considérant un dispositif informatique d’exécution 20 de type système robotique, à titre d’exemple non limitatif, l’estimation de l’état d’un tel système robotique peut être réalisée par filtrage de Kalman, algorithme nécessitant l’évaluation d’expressions matricielles complexes. Dans un tel cas, une expression matricielle complexe à traiter par le système robotique peut comprendre par exemple jusqu’à 7 expressions élémentaires unaires et/ou binaires combinées, pour un filtrage de Kalman linéaire. Pour compiler le code source 121 et générer le code objet 221, le dispositif informatique de compilation 10 peut être configuré pour identifier (ou détecter) une ou plusieurs expressions matricielles E dans le code source 121 et pour déterminer, pour chaque expression matricielle E détectée (ou trouvée), les N opérations matricielles O n associées, à partir d’une analyse syntaxique de l’expression matricielle E considérée. Avantageusement, une telle analyse syntaxique des opérations matricielles peut être effectuée à partir de la librairie informatique 123 et des règles du langage informatique. Le code objet 221 généré par le dispositif informatique de compilation 10 comprend un ensemble d’au moins M fils d’exécution (ou ‘ execution thread ’ en anglais), notés F m , dont l’indice ‘m’ est un entier compris entre 1 et M correspondant au m-ième fil d’exécution, la valeur de M étant un entier supérieur ou égal à 1. Chaque fil d’exécution F m est associé à une ou plusieurs expressions matricielles déterminées parmi l’ensemble des expressions matricielles E détectées dans le code source 121. Dans un même fil d’exécution F m , les expressions matricielles E associées peuvent être traitées par exemple séquentiellement. Avantageusement, il est à noter que des fils d’exécution F m d’un code objet 221 peuvent être exécutés selon un traitement parallèle selon lequel plusieurs fils d’exécution F m sont exécutés en parallèle par le processeur 260 du dispositif informatique d’exécution 20. Les instructions d’initialisation du code objet 221 comprennent, pour chaque fil d’exécution F m , la pré-allocation d’un espace mémoire réservé aux matrices temporaires 241 (encore appelé ‘espace temporaire’ ou ‘espace mémoire temporaire’) dans l’unité de stockage 240. En d’autres termes, une telle pré-allocation correspond à l’instruction de pré-allocation d’un espace temporaire 241, pour chaque fil d’exécution F m , dans l’unité de stockage 240 du dispositif informatique d’exécution 20 lorsque les instructions d’initialisation sont exécutées par le processeur 260 du système 20. Ainsi, pour un code objet 221 comprenant M fils d’exécution associés à des expressions matricielles à calculer, les instructions d’initialisation comprennent la pré-allocation de M espaces temporaires 241 distincts dans l’unité de stockage 240. Les instructions de traitement du code objet 221 comprennent, pour chaque expression matricielle E associée à un fil d’exécution F m , l’exécution des N opérations matricielles O n déterminées pour cette expression matricielle E. Dans le code objet 221, les N opérations matricielles O n sont ordonnées selon un ordre relatif aux règles de priorité opératoires. Les instructions de traitement du code objet 221 comprennent également, pour chaque exécution (ou évaluation, calcul) d’une opération matricielle O n , l’allocation d’un sous-espace temporaire 241-n (encore appelé ‘sous-espace mémoire temporaire’) compris dans l’espace temporaire 241 alloué, associé au fil d’exécution F m . Un tel sous-espace temporaire 241-n constitue l’espace de stockage de la matrice de résultat intermédiaire T n correspondant au résultat de l’exécution de l’opération matricielle O n considérée. En d’autres termes, pour chaque expression matricielle E associée à un fil d’exécution F m , le code objet 221 peut comprendre, une suite d’instructions groupées pour chaque opération matricielle O n . Chaque groupe d’instructions, noté G n , correspond ainsi à une des opérations matricielles O n d’une expression matricielle E. En outre, dans un fil d’exécution F m , les groupes d’instructions G n associés à une expression matricielle E considérée sont ordonnés par le compilateur dans le code objet généré en fonction des règles de priorité des opérateurs. Un groupe d’instructions G n , relatif à une opération matricielle O n , peut comprendre : - une instruction d’allocation d’un espace de stockage de la matrice de intermédiaire T n résultant de l’évaluation de l’opération matricielle O n , dans un sous-espace mémoire temporaire 241-n de l’espace mémoire temporaire 241, - une instruction d’évaluation de l’opération matricielle O n , et de stockage (i.e. de fourniture) du résultat sous la forme de la matrice de résultat intermédiaire T n . Ainsi, dans un fil d’exécution F m , l’évaluation d’une expression matricielle E peut comprendre l’exécution successive des N groupes d’instructions G n (l’ordre d’exécution des groupes d’instructions, de G 1 à G N , ayant été déterminé par le compilateur, suivant la priorité des opérations). Dans des modes de réalisation, les sous-espaces temporaires 241-n, relatifs aux matrices de résultat intermédiaire T n , peuvent être alloués dans l’espace temporaire 241 selon une stratégie d’allocation dynamique de type « pile ». Une telle stratégie d’allocation peut être basée sur un traitement « dernier arrivé, premier sorti » (en anglais LIFO pour ‘ last in, first out’ ) des matrices dynamiques. Un espace temporaire 241 forme donc une structure de données dont le dernier élément ajouté est le premier à en sortir lors de la désallocation. Dans des modes de réalisation, les instructions de traitement du code objet 221 comprennent également, pour chaque expression matricielle E associée à un fil d’exécution F m , le transfert (i.e. la copie ou le déplacement) de la dernière matrice de résultat intermédiaire T N déterminée à l’issue de l’exécution des N opérations matricielles O n (c’est-à-dire la Nième matrice de résultat intermédiaire T N stockée dans le sous-espace temporaire 241-n associée à l’opération matricielle O N ), vers une matrice résultat R, temporaire ou persistante, correspondant au résultat de l’évaluation (i.e. de l’exécution) de l'expression matricielle E considérée, associée au fil d’exécution F m . Avantageusement, lors de l’exécution du code objet 221 par le processeur 260, le dispositif informatique d’exécution 20 peut être configuré pour effectuer une opération de pré-allocation d’un espace temporaire 241 dans l’unité de stockage 240, pour chaque fil d’exécution F m du code objet 221. Le dispositif informatique d’exécution 20 peut être configuré pour effectuer en outre, pour chaque expression matricielle E associée à un fil d’exécution F m , l’exécution successive des N groupes d’instructions G n . Chaque groupe d’instructions G n est associée à une des N opérations matricielles O n de l’expression matricielle E. Pour chaque groupe d’instructions G n (correspondant par exemple à une itération), le dispositif informatique d’exécution 20 peut être configuré pour déterminer la matrice de résultat intermédiaire T n correspondant au résultat de l’exécution de l’opération matricielle O n considérée (i.e. la matrice résultant du calcul de l’opération matricielle intermédiaire). Les N itérations successives associées à une même expression matricielle E peuvent être mises en œuvre en fonction de l’ordre de classement des N opérations matricielles préalablement déterminées. Avantageusement, pour un groupe d’instructions G n , le dispositif informatique d’exécution 20 peut être configuré pour allouer, à la matrice de résultat intermédiaire T n, un sous-espace temporaire 241-n dans l’espace temporaire 241, et pour évaluer (c’est-à-dire exécuter ou calculer) l’opération matricielle O n , ce qui fournit un résultat stocké dans la matrice de résultat intermédiaire T n . L’opération d’allocation correspond à une opération de « réservation » d’un espace de stockage (241-n) pour la matrice de résultat intermédiaire T n . L’opération d’évaluation produit le résultat de l’évaluation et permet de sauvegarder la matrice de résultat intermédiaire T n dans le sous-espace temporaire 241-n alloué. Le dispositif informatique d’exécution 20 peut en outre être configuré pour retourner la Nième matrice de résultat intermédiaire T N du sous-espace temporaire 241-n en tant que résultat de l’exécution de l’expression matricielle E considérée. La FIG. 2 illustre schématiquement les états d’un espace temporaire 241 avant ou après ( FIG. 2 (a)), et pendant ( FIG. 2 (b)) l’évaluation d’une expression matricielle d’un fil d’exécution F m , par le dispositif informatique d’exécution 20. En particulier, la FIG. 2 (b) illustre les états d’un espace mémoire temporaire 241 suite à l’application d’itérations successives associées à l’exemple de l’expression matricielle E représenté dans l’équation (01) comprenant trois opérations matricielles O 1 , O 2 et O 3 définies selon les formules (02), (03) et (04). Dans des modes de réalisation, la taille d’un espace temporaire 241 pré-alloué, associé à un fil d’exécution F m , peut être déterminée en fonction du nombre N maximum de matrices intermédiaires T n à évaluer (noté N max ) pour la ou chacune des expressions matricielles E associées au fil d’exécution F m considéré et de la taille des matrices intermédiaires T n à évaluer (désignée par Taille(T n )). En particulier, la taille d’un espace temporaire 241 pré-alloué peut être déterminée par le produit des nombres N max et Taille(T n ). Par exemple, le nombre Taille(T n ) peut correspondre à la taille maximale des matrices intermédiaires T n à évaluer. Dans des modes de réalisation, la taille d’un espace temporaire 241 peut être prédéfinie. Par exemple et sans limitations, la taille d’un espace temporaire 241 peut être égale à quelques kilo-octets. Avantageusement, la taille d’un sous-espace temporaire 241-n alloué, lors de l’exécution d’une nième itération (i.e. groupe d’instructions G n ) associée à une expression matricielle E, correspond à la taille de la matrice de résultat intermédiaire T n pour l’opération matricielle O n considérée. Les matrices de résultat intermédiaire T n peuvent être stockées dans l’espace temporaire 241 pré-alloué associé à un fil d’exécution F m à partir d’un pointeur de sommet de pile 241-i, tel que représenté sur la FIG. 2 . L’utilisation d’un espace temporaire 241 pré-alloué associé à un fil d’exécution F m , en utilisant une stratégie d’allocation dynamique de type « pile » permet de générer une zone de stockage dans le ‘Tas’ dans lequel les matrices de résultat intermédiaires T n stockées sont positionnés en mémoire les unes à la suite des autres, de manière contiguë, assurant ainsi une co-localité optimale de stockage des données dans l’unité de stockage 140. Une telle co-localité des données garantie une empreinte mémoire minimale, permettant l’utilisation d’un unique espace temporaire 241 par fil d’exécution F m du programme. Cette co-localité des données permet également d’assurer une performance d’exécution optimale durant l’évaluation d’une expression matricielle E. Cette structuration des données dans l’espace temporaire 241 assure en effet une utilisation optimale du cache du processeur (ou ‘ cache-friendly ’ selon l’expression anglo-saxonne correspondante), les temps d’exécution des différentes opérations du dispositif informatique d’exécution 20 étant alors optimales. Cette performance d’exécution optimisée peut être illustrée avec l’expression matricielle E représentée en équation (01) générant une opération matricielle O 3 à déterminer et définie selon l’expression (04) précédente, utilisant comme opérandes matriciels les matrices intermédiaires T 1 et T 2 , et produisant un résultat dans la matrice intermédiaire T 3 , toutes trois co-localisées comme représenté sur la FIG. 2 (b). Un tel espace temporaire 241, pré-alloué associé à un fil d’exécution F m , permet en outre de garantir une zone de stockage autorisant l’allocation de matrices de taille quelconque, dans un temps d’allocation borné des matrices de résultat intermédiaires T n , les sous-espace temporaire 241-n étant positionnés à chaque itération au niveau du pointeur de sommet de pile 241-i. Dans des modes de réalisation, les instructions de traitement du code objet 221 généré par le dispositif informatique de compilation 10 peuvent comprendre, pour chaque expression matricielle E associée à un fil d’exécution F m , la désallocation successive de l’ensemble des sous-espaces temporaire 241-n de l’espace temporaire 241 alloué considéré, en réponse à la détermination de la matrice résultat R, obtenue à l’issue de l’évaluation de l'expression matricielle E. Ainsi, lors de l’exécution du code objet 221 par le processeur 260, le dispositif informatique d’exécution 20 peut être configuré pour effectuer, pour chaque expression matricielle E associée à un fil d’exécution F m , après la mise en œuvre des N itérations (i.e. groupes d’instructions G 1 à G N ), une opération de désallocation des N sous-espaces temporaires 241-n de l’espace temporaire 241. Une telle opération de désallocation correspond à une conséquence de la destruction de l’ensemble des matrices de résultat intermédiaire T n évaluées pour l’expression matricielle E. De telles destructions ont lieu implicitement et dans l’ordre inverse de la construction, par principe de fonctionnement du langage, les destructions entrainant la désallocation des sous-espaces temporaires 241-n. L’opération de désallocation des N sous-espaces temporaires 241-n est donc effectuée dans l’ordre inverse des allocations des sous-espaces temporaires 241-n (en respectant ainsi l’ordre de construction des matrices temporaires T n instanciées pendant les N itérations). Ainsi, pour chaque expression matricielle E traitée associée à un fil d’exécution F m , l’espace temporaire 241 alloué considéré est vide (c’est-à-dire libre) à l’issue du traitement. Avantageusement, l’utilisation de l’espace temporaire 241 à stratégie d’allocation dynamique de type « pile » permet de garantir un temps de désallocation borné de chaque sous-espace temporaire 241-n, celle-ci correspondant au déplacement du pointeur de sommet de pile 241-i des sous-espaces temporaires attribués. Dans des modes de réalisation, les instructions de terminaison du code objet 221 généré par le dispositif informatique de compilation 10 peuvent comprendre, pour chaque fil d’exécution F m , la désallocation de l’espace temporaire 241 dans l’unité de stockage 240. Dans ce cas, lors de l’exécution du code objet 221 par le processeur 260, le dispositif informatique d’exécution 20 peut être configuré pour effectuer une opération de désallocation du ou des espaces temporaires 241 dans l’unité de stockage 240. Dans certains modes de réalisation, les instructions d’initialisation du code objet 221 peuvent comprendre une pré-allocation d’un ou plusieurs espaces réservés aux matrices persistantes 243 (encore appelés ‘espaces persistants’ ou ‘espaces mémoire persistants’) dans l’unité de stockage 240. Dans ce cas, lors de l’exécution du code objet 221 par le processeur 260, le dispositif informatique d’exécution 20 peut être configurée pour effectuer une opération de pré-allocation d’un ou plusieurs espaces mémoire persistants 243 dans l’unité de stockage 140, comme représenté sur la FIG. 1 . En particulier, un espace mémoire persistant 144 pré-alloué peut correspondre à un segment mémoire donné, dans lequel l’allocation des matrices persistantes peut être effectuée selon une stratégie d’allocation dynamique de type « pool ». Le dispositif informatique d’exécution 20 peut en outre être configuré pour effectuer une opération de stockage d’une partie ou de l’ensemble des matrices d'entrée de la ou les expressions matricielles à traiter, dans le ou les espaces mémoire persistants 243. Les dimensions et le nombre d’espaces mémoire persistants 243 à pré-allouer peuvent être par exemple prédéterminés en fonction des tailles et du nombre de matrices d'entrée de la ou les expressions matricielles à traiter. Un espace mémoire persistant 243 peut également être pré-alloué et adapté pour contenir la matrice de résultat R correspondant au résultat de l’évaluation d’une expression matricielle E. L’utilisation de tels espaces mémoire persistants 243 peut permettre d’instancier une matrice persistante aussi bien dans le contexte temps-réel d’une application spécifique qu’en dehors d’un tel contexte, lorsque la stratégie d’allocation garantit une allocation en temps borné, comme dans le cas d’une stratégie d’allocation dynamique de type « pool ». Avantageusement, les instructions de traitement du code objet 221 peuvent comprendre, pour chaque expression matricielle E associée à un fil d’exécution F m , l’assignation de la Nième matrice de résultat intermédiaire T N du sous-espace temporaire 241-n à une matrice correspondant à la matrice résultat R (fournissant le résultat de l’évaluation de l’expression matricielle E), cette dernière pouvant être allouée dans l’unité de stockage 240. Dans ce cas, lors de l’exécution du code objet 221 par le processeur 260, le dispositif informatique d’exécution 20 peut être en outre configuré pour effectuer une opération d’assignation consistant à assigner la Nième matrice de résultat intermédiaire T N de l’espace temporaire 241 associé au fil d’exécution F m à la matrice R de ce sous-espace de l’unité de stockage 240. Un tel sous-espace peut être inclus directement dans le « Tas », la « Pile » ou la zone de données statiques de l’unité de stockage 240, ou alternativement dans un espace mémoire persistant 243 pré-alloué dans cette même unité de stockage. Un tel sous-espace mémoire peut être alloué préalablement à la mise en œuvre des itérations associées à une ou plusieurs expressions matricielles E d’un fil d’exécution F m , par exemple. Une telle opération d’assignation (ou d'affectation) peut être comprise dans les instructions de traitement du code objet 221 lors de la compilation du code source 121, et déterminée pendant l’analyse syntaxique de l’expression matricielle E, en réponse à la détection du symbole d'opération « = », comme illustré par l’équation (01). Le symbole « = » représente l'opérateur associé à cette opération d’affectation de matrice. Ainsi, l’opération d’assignation peut correspondre à une copie d’une matrice temporaire vers une matrice persistante. La FIG. 3 illustre un exemple d’implémentation possible de lignes de code écrites, dans le langage informatique C++ sous forme de modèle de classe, dans la librairie informatique 123 utilisée par le dispositif informatique 10 pour compiler le code source 121. Cet exemple d’implémentation correspondant à des consignes de traitement prédéfinies comprenant des déclarations et des définitions de propriétés, utilisées par le compilateur 125 pour compiler le code source 121 en un code objet 221. En particulier, la FIG. 3 (a) illustre un exemple de définition de modèle de classe (ou ‘ template class ’ en anglais) des différentes données exploitées lors de l’exécution du code objet 221. Dans cette FIG. 3 , les paramètres de modèle (ou ‘ template parameter s ’ en anglais) `S`, `P` et `T` représentent, respectivement un type de données scalaire, une classe implémentant un allocateur pour les matrices persistantes, et une classe implémentant un allocateur pour les matrices temporaires. Sur la FIG. 3 (a), l’implémentation possible d’un allocateur pour matrices persistantes correspond à la classe `HeapAlloc` (i.e. implémentant les fonctions d’allocation et de désallocation, par exemple, dans le « Tas » de l’unité de stockage 240), et l’implémentation possible d’un allocateur pour matrices temporaires correspond à la classe `StackAlloc` (i.e. implémentant les fonctions d’allocation et de désallocation dans l’espace mémoire réservée aux matrices temporaires 241). La FIG. 3 (b) illustre un exemple d’implémentation d’une opération matricielle utilisant le symbole d’opération « * » correspondant à l’opérateur arithmétique de composition (ou produit, ou multiplication) matricielle, prenant en paramètre deux opérandes de type matrice persistante et/ou matrice temporaire, et retournant un résultat de type matrice temporaire. Toute autre opération matricielle utilisant un autre opérateur arithmétique ou encore une fonction, dans une expression matricielle E complexe quelconque, peut être implémentée de manière similaire à l’exemple d’implémentation représenté sur la FIG. 3 (b). Avantageusement, la librairie informatique 123 peut comprendre toutes les lignes de code permettant de déclarer et définir les propriétés relatives à toute autre opération matricielle associée à un symbole d’opération, prenant en paramètres un ou plusieurs opérandes de type matrice persistante, matrice temporaire, ou scalaire, et retournant une matrice temporaire. Il est à noter que, sur la FIG. 3 (b), l’instanciation de la matrice temporaire, résultant de l’évaluation de l’opération matricielle utilisant le symbole d’opérateur « * » est assurée via l’allocateur pour matrices temporaires selon l’utilisation du paramètre template `T`. La FIG. 3 (c) illustre un exemple d’implémentation d’une opération d’assignation assurant la copie ou le déplacement (ou plus généralement le transfert) du contenu d’une matrice source de type quelconque (i.e. persistante ou temporaire) vers une matrice destination de type quelconque (i.e. persistante ou temporaire). Dans certains modes de réalisation, la librairie informatique 123 peut être adaptée pour que, lors de l’analyse syntaxique d’une expression matricielle E du code source 121, le dispositif informatique de compilation 10 soit en outre configuré pour identifier des expressions mathématiques types, de manière à générer une expression matricielle optimisée, préalablement à la détermination des N opérations matricielles O n . Par exemple et sans limitation, une expression mathématique du type à identifier peut être définie selon l’équation (05) : F += u * C * D (05) Dans l’équation (05), les termes C, D, F sont des symboles représentant des matrices, le terme u est un symbole représentant un scalaire, et le terme « += » représente l’opérateur d’addition-assignation. Les figures 4 et 5 représentent le procédé pour l’évaluation (ou le calcul) en temps-réel d’expressions matricielles de code, (ou procédé de traitement d’expressions matricielles), mis en œuvre par le système 1, selon des modes de réalisation de l’invention. Le procédé comprend une phase P1 de compilation du code source 121 mis en œuvre par le dispositif informatique de compilation 10 (i.e. l’outil de compilation). Avantageusement, la phase de compilation P1 (ou procédé de compilation) peut comprendre une étape consistant à recevoir le code source 121 comprenant une ou plusieurs expressions matricielles E, et d’identification de ces expressions matricielles par analyse du code source 121. La phase de compilation P1 comprend en outre, pour chaque expression matricielle E identifiée dans le code source 121, une étape 420 consistant à appliquer une analyse syntaxique pour déterminer N opérations matricielles élémentaires O n , qui peuvent être classées selon les règles de priorité opératoires. La phase de compilation P1 comprend en outre une étape 440 consistant à générer le code objet 221 exécutable, par le dispositif informatique d’exécution 20 (i.e. les moyens d’exécution de code), à partir des opérations matricielles élémentaires O n déterminées et des consignes de traitement, prédéfinies notamment dans la librairie informatique 123. Avantageusement, la phase de compilation P1 peut comprendre une étape consistant à délivrer le code objet 221 à un dispositif d’exécution de code objet apte à exécuter le code objet 221, et comprenant une unité de stockage 240 apte à comprendre au moins un espace mémoire temporaire 241, chaque espace mémoire temporaire 241 étant apte à comprendre des sous-espaces mémoire temporaires 241-n. Le procédé peut comprendre en outre une phase P2 d’exécution du code objet 221 mis en œuvre par le dispositif informatique d’exécution 20. La phase de d’exécution P2 comprend, pour chaque fil d’exécution F m relatif au code objet 221, une étape 406 de pré-allocation d’un espace mémoire temporaire 241 dans l’unité de stockage 140, mise en œuvre de sorte que les allocations qui auront lieu dans cet espace temporaire soient mises en œuvre selon une stratégie d’allocation dynamique de type « pile ». La phase d’exécution P2 peut comprendre en outre, pour chaque opération matricielle élémentaire O n , déterminée pour une expression matricielle E associée au fil d’exécution F m , une étape 542 consistant à allouer un sous-espace temporaire 241-n, dans l’espace mémoire temporaire 241 associé, à la matrice de résultat intermédiaire T n , résultant de l’exécution (i.e. évaluation ou calcul) de l’opération matricielle O n , et une étape 544 consistant à évaluer l’opération matricielle O n et ainsi déterminer la matrice de résultat intermédiaire T n . La dernière (i.e. N-ième) matrice de résultat intermédiaire T N , obtenue à l’issue des N opérations matricielles O n , est transférée (un transfert peut correspondre par exemple à une copie ou à un déplacement) dans la matrice résultat R fournissant le résultat de l’évaluation de l'expression matricielle E. La matrice résultat R peut être exploitée par le dispositif informatique d’exécution 20 (qui peut être par exemple et sans limitations un système robotique). La phase d’exécution P2 peut comprendre en outre une étape 562 consistant à assigner la Nième matrice de résultat intermédiaire T N du sous-espace temporaire 241-N à une matrice résultat R, une telle matrice résultat R étant allouée dans l’unité de stockage 240 (par exemple, dans le segment mémoire « Tas » de l’unité de stockage 240, ou un espace persistant 243 de type « pool »). La phase d’exécution P2 peut également comprendre, pour chaque expression matricielle E associée au fil d’exécution F m , une étape 564 consistant à désallouer l’ensemble des sous-espaces temporaires 241-n alloués, associés à l’évaluation des N opérations matricielles élémentaires O n déterminées pour l’expression matricielle E. La phase d’exécution P2 peut de plus comprendre, pour chaque fil d’exécution F m , une étape 580 consistant à désallouer l’espace mémoire temporaire 241 associé après l’évaluation de la ou des expressions matricielles E associées au fil d’exécution F m . L'homme du métier comprendra aisément que certaines étapes du procédé de la FIG. 4 peuvent être réalisées de manière simultanée, séquentielle, indépendante ou non, et/ou selon un ordre différent, par exemple selon un ordre défini par le dispositif informatique d’exécution. Il convient de noter que certaines caractéristiques de l’invention peuvent présenter des avantages lorsqu’elles sont considérées séparément. L’homme du métier comprendra que l’invention peut être mise en œuvre en tant que programme d’ordinateur comportant des instructions pour son exécution. Le programme d’ordinateur peut être enregistré sur un support d’enregistrement lisible par un processeur. La référence à un programme d'ordinateur qui, lorsqu'il est exécuté, effectue l'une quelconque des fonctions décrites précédemment, ne se limite pas à un programme d'application s'exécutant sur un ordinateur hôte unique. Au contraire, les termes programme d'ordinateur et logiciel sont utilisés ici dans un sens général pour faire référence à tout type de code informatique (par exemple, un logiciel d'application, un micro logiciel, un microcode, ou toute autre forme d'instruction d'ordinateur) qui peut être utilisé pour programmer un ou plusieurs processeurs pour mettre en œuvre des aspects des techniques décrites ici. Les moyens ou ressources informatiques peuvent notamment être distribués ("Cloud computing"), éventuellement selon des technologies de pair-à-pair. Le code logiciel peut être exécuté sur n'importe quel processeur approprié (par exemple, un microprocesseur) ou cœur de processeur ou un ensemble de processeurs, qu'ils soient prévus dans un dispositif de calcul unique ou répartis entre plusieurs dispositifs de calcul (par exemple tels qu’éventuellement accessibles dans l’environnement du dispositif). Le code exécutable de chaque programme permettant au dispositif programmable de mettre en œuvre les processus selon l'invention, peut être stocké, par exemple, dans le disque dur ou en mémoire morte. De manière générale, le ou les programmes pourront être chargés dans un des moyens de stockage du dispositif avant d'être exécutés. Une unité centrale peut commander et diriger l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées dans le disque dur ou dans la mémoire morte ou bien dans les autres éléments de stockage précités. L'invention n'est pas limitée aux modes de réalisation décrits ci-avant à titre d’exemple non limitatif. Elle englobe toutes les variantes de réalisation qui pourront être envisagées par l'homme du métier. En particulier, l’homme du métier comprendra que l’invention n’est pas limitée aux différentes unités informatiques du dispositif décrites à titre d’exemple non limitatif. En particulier, certains modes de réalisation de l’invention peuvent être combinés. Procédé de compilation (P1) d’un code source (121) en un code objet (221), mis en œuvre dans un outil de compilation, le procédé de compilation comprenant les étapes consistant à : recevoir un code source (121) comprenant au moins une expression matricielle (E), déterminer, pour chaque expression matricielle (E) dudit code source (121), N opérations matricielles (O n ), N étant un entier supérieur ou égal à 1, à partir d’une analyse syntaxique de ladite expression matricielle (E), lesdites opérations matricielles (O n ) étant ordonnées selon un ordre relatif à des règles de priorité opératoires, générer un code objet (221) à partir desdites opérations matricielles (O n ) déterminées à partir desdites au moins une expression matricielle (E), ledit code objet (221) comportant des instructions machine exécutables par au moins un processeur, ledit code objet (221) comprenant au moins un fil d’exécution (F m ) associé à une ou plusieurs expressions matricielles (E) parmi lesdites au moins une expression matricielle, et délivrer ledit code objet (221) à un dispositif d’exécution de code objet apte à exécuter le code objet (221), et comprenant une unité de stockage (240), l’unité de stockage (240) étant apte à comprendre au moins un espace mémoire temporaire (241), chaque espace mémoire temporaire (241) étant apte à comprendre des sous-espaces mémoire temporaires (241-n) ; les instructions du code objet comprenant, pour chaque fil d’exécution (F m ): des instructions de pré-allocation (520) d’un espace mémoire temporaire (241) dans ladite unité de stockage (240) du dispositif d’exécution, et pour chaque expression matricielle (E) associée audit fil d’exécution (F m ), des instructions d’exécution successive de N groupes d’instructions (G n ) selon ledit ordre, chaque groupe d’instructions (G n ) étant associé à une desdites N opérations matricielles (O n ) et comprenant : une instruction d’allocation d’une matrice de résultat intermédiaire (T n ) correspondant au résultat de l’évaluation de ladite opération matricielle (O n ), dans un sous-espace mémoire temporaire (241-n) dudit espace mémoire temporaire (241), et une instruction d’évaluation de ladite opération matricielle (O n ) et de stockage de ladite matrice de résultat intermédiaire (T n ) correspondante, une instruction de délivrance de la Nième matrice de résultat intermédiaire (T N ) en tant que résultat de l’exécution de ladite au moins une expression matricielle (E) associée au fil d’exécution. Procédé informatique comprenant une phase de compilation (P1) d’un code source (121) en un code objet (221) et une phase d’exécution (P2) dudit code objet (221), le procédé étant mis en œuvre dans un système informatique comprenant un outil de compilation et des moyens d’exécution de code, les moyens d’exécution de code comprenant une unité de stockage (240), le procédé comprenant, dans ladite phase de compilation (P1), les étapes consistant à : recevoir un code source (121) comprenant au moins une expression matricielle (E), déterminer, à partir d’une analyse syntaxique de ladite au moins une expression matricielle (E), N opérations matricielles (O n ), N étant un entier supérieur ou égal à 1, lesdites opérations matricielles (O n ) étant ordonnées selon un ordre relatif à des règles de priorité opératoires, et générer un code objet (221) à partir desdites N opérations matricielles (O n ), comprenant des instructions machines exécutables par au moins un processeur, ledit code objet (221) comprenant au moins un fil d’exécution (F m ) associé à une ou plusieurs expressions matricielles (E) parmi lesdites au moins une expression matricielles, le procédé comprenant, dans ladite phase d’exécution (P2) dudit code objet (221), pour chaque fil d’exécution (F m ), les étapes consistant à : pré-allouer (520) un espace mémoire temporaire (241) dans ladite unité de stockage (240) du dispositif d’exécution, et pour chaque expression matricielle (E) associée audit fil d’exécution (F m ), exécuter successivement les N opérations matricielles (O n ) déterminées pour l’expression matricielle (E), selon ledit ordre, l’exécution d’une desdites opérations matricielles (O n ) comprenant les étapes consistant à: allouer une matrice de résultat intermédiaire (T n ) correspondant au résultat de l’évaluation de ladite opération matricielle (O n ), dans un sous-espace mémoire temporaire (241-n) dudit espace mémoire temporaire (241), et évaluer ladite opération matricielle (O n ), et stocker ladite matrice de résultat intermédiaire (T n ) dans ledit sous-espace mémoire temporaire (241-n), délivrer la Nième matrice de résultat intermédiaire (T N ) en tant que résultat de l’exécution de ladite au moins une expression matricielle (E) associée au fil d’exécution. Procédé, selon la revendication 2, dans lequel, pour chaque expression matricielle (E) associée audit fil d’exécution (F m ), lesdits sous-espaces mémoire temporaires (241-n), associés auxdites matrices de résultat intermédiaire (T n ) fournies, sont alloués selon une stratégie d’allocation dynamique de type « pile » dans ledit au moins un espace mémoire temporaire (241) pré-alloué dans ladite unité de stockage (240) et associé audit fil d’exécution (F m ). Procédé, selon l’une des revendications 2 ou 3, dans lequel, pour chaque fil d’exécution (F m ), ledit espace mémoire temporaire (241) est pré-alloué (520) dans un segment mémoire « Tas », ladite unité de stockage (240) correspondant à l’allocateur dynamique de mémoire par défaut. Procédé, selon l’une des revendications 2 à 4, dans lequel le procédé comprend, dans ladite phase d’exécution (P2), une étape consistant à pré-allouer au moins un espace mémoire persistant (243) dans ladite unité de stockage (240), et pour chaque fil d’exécution (F m ), une étape consistant à assigner (562), pour chaque expression matricielle (E) associée audit fil d’exécution (F m ), ladite Nième matrice de résultat intermédiaire (T N ) du Nième sous-espace mémoire temporaire (241-N) à une matrice dudit espace mémoire persistant (243). Procédé, selon l’une des revendications 2 à 5, dans lequel le procédé comprend, dans ladite phase d’exécution (P2), pour chaque fil d’exécution (F m ), une étape consistant à désallouer (564), pour chaque expression matricielle (E) associée audit fil d’exécution (F m ), lesdits N sous-espaces mémoire temporaires (241-n) dudit espace mémoire temporaire (241) associé audit fil d’exécution (F m ). Procédé, selon l’une des revendications 2 à 6, dans lequel le procédé comprend, dans ladite phase d’exécution (P2), pour chaque fil d’exécution (F m ), une étape consistant à désallouer (580) ledit espace mémoire temporaire (241) de ladite unité de stockage (240). Procédé, selon l’une des revendications 2 à 7, dans lequel la taille dudit espace mémoire temporaire (241) pré-alloué pour chaque fil d’exécution (F m ) est déterminée en fonction du nombre N de matrices de résultat intermédiaire (T n ) fournies et de la taille desdites matrices de résultat intermédiaire (T n ) associées à une expression matricielle (E) dudit fil d’exécution (F m ). Outil de compilation configuré pour mettre en œuvre le procédé de compilation (P1) selon la revendication 1. Outil de compilation, selon la revendication 9, dans lequel l’outil comprend une librairie informatique (123) et un compilateur (125), ledit code source (121) étant compilé par le compilateur (125) à partir d’un ensemble de consignes de traitement prédéfinies dans ladite librairie informatique (123). Système informatique configuré pour mettre en œuvre le procédé de compilation (P1) selon l’une des revendications 2 à 8. Système, selon la revendication 11, dans lequel les moyens d’exécution de code sont soumis à des contraintes de temps-réel.