FR3076921A1 - OptimiSation DU TEMPS D’exÉcution D’UN programME D’ORDINATEUR EN DÉTERMINANT LA MISE EN ŒUVRE D’UNE fOnction EN FONCTION D’UN ÉVENTAIL DE paramÈtREs D’ENTRÉE ET D’UNE EXACTITUDE - Google Patents

OptimiSation DU TEMPS D’exÉcution D’UN programME D’ORDINATEUR EN DÉTERMINANT LA MISE EN ŒUVRE D’UNE fOnction EN FONCTION D’UN ÉVENTAIL DE paramÈtREs D’ENTRÉE ET D’UNE EXACTITUDE Download PDF

Info

Publication number
FR3076921A1
FR3076921A1 FR1872121A FR1872121A FR3076921A1 FR 3076921 A1 FR3076921 A1 FR 3076921A1 FR 1872121 A FR1872121 A FR 1872121A FR 1872121 A FR1872121 A FR 1872121A FR 3076921 A1 FR3076921 A1 FR 3076921A1
Authority
FR
France
Prior art keywords
function
computer program
call
input parameter
code
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
FR1872121A
Other languages
English (en)
Other versions
FR3076921B1 (fr
Inventor
Romain DOLBEAU
David GUIBERT
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.)
Bull SA
Original Assignee
Bull SA
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 Bull SA filed Critical Bull SA
Publication of FR3076921A1 publication Critical patent/FR3076921A1/fr
Application granted granted Critical
Publication of FR3076921B1 publication Critical patent/FR3076921B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Cette invention se rapporte à un procédé d’optimisation d’un programme d’ordinateur, comprenant - une première étape (S11, S12, S13, S14) de détermination d’un appel d’une fonction ayant au moins un paramètre d’entrée, ledit appel correspondant à un premier critère selon lequel ledit paramètre d’entrée se trouve à l’intérieur d’un intervalle sensiblement plus petit que la fourchette de valeurs possibles pour ledit paramètre d’entrée, et à un second critère correspondant à une exactitude souhaitée pour ledit appel ; - une deuxième étape (S2) de génération automatique d’un code exécutable pour mettre en œuvre ladite fonction, réduisant à un minimum le temps d’exécution pour ledit paramètre d’entrée qui se trouve à l’intérieur dudit intervalle et est compatible avec ladite exactitude souhaitée ; - une troisième étape (S3) de remplacement du code existant mettant en œuvre ladite fonction par le code exécutable généré à ladite deuxième étape. Figure à publier avec l’abrégé : Fig. 1

Description

Titre de l'invention : Optimisation DU TEMPS D’exÉcution D’UN programME D’ORDINATEUR EN DÉTERMINANT LA MISE EN ŒUVRE D’UNE fOnctionEN FONCTION D’UN ÉVENTAIL DE paramÈtREsD’ENTRÉEET D’UNE EXACTITUDE Domaine technique [0001] L’invention se rapporte à l’optimisation d’un programme d’ordinateur afin d’améliorer ses performances d’exécution. En particulier, l’invention s’applique au domaine de programmes d’ordinateur réalisant des tâches de calcul.
[0002] ARRIÈRE-PLAN DE L’INVENTION [0003] Certains programmes d’ordinateur sont dédiés à des domaines tels que les prévisions météorologiques, une simulation d’accident, un jeu en 3D, etc., ce qui implique des tâches de calcul énormes.
[0004] Le développeur d’un tel programme d’ordinateur écrit un code exécutable, dans n’importe quel langage informatique, qui, à certains moments, appelle une fonction en charge de tâches de calcul dédiées. Les fonctions peuvent souvent être rendues disponibles pour le développeur par une bibliothèque de logiciels. Elles peuvent être génériques (calcul de sinus, de cosinus, etc.) ou plus spécifiques (calcul en 3D...).
[0005] Toutefois, en général, le but de telles bibliothèques est d’être indépendantes de l’application. Par conséquent, l’algorithme mettant en œuvre la fonction doit être générique de sorte à s’appliquer à un large éventail de conditions.
[0006] D’un autre côté, on sait que, dans certaines conditions plus restreintes, de meilleures performances peuvent être obtenues, parfois équilibrées par une précision moindre dans le résultat mais qui pourraient être acceptables étant donné l’application.
[0007] Par exemple, un calcul trigonométrique (sinus, cosinus...) peut être mis en œuvre par différents algorithmes, qui a pour but de trouver de bonnes approximations numériques du vrai calcul mathématique. Chaque algorithme fournit des caractéristiques respectives en termes de performances, de précision (ou d’exactitude), qui peuvent dépendre de conditions du calcul, telles que spécialement la valeur des paramètres d’entrée sur lesquels le calcul est effectué.
[0008] En conséquence, le développeur d’un programme informatique devrait être prudent pour chaque appel d’une fonction si la mise en œuvre de la bibliothèque peut ou non être utilisée ou si une mise en œuvre spéciale doit, de préférence, être utilisée. La détermination de chaque appel, le choix et le remplacement du code de mise en œuvre sont des étapes réalisées manuellement par les développeurs.
[0009] [0010] Certains outils existent pour analyser automatiquement le code exécutable d’un programme d’ordinateur mais aucun ne propose de déterminer automatiquement des appels de fonctions, éligibles au remplacement du code exécutable de mise en œuvre « par défaut ». De plus, aucune solution ne propose un outil automatisant complètement le processus d’optimisation du programme d’ordinateur en ce qui concerne les appels de fonctions de calcul.
Résumé de l’invention [0011] L’objet de la présente invention est d’atténuer au moins partiellement les inconvénients mentionnés ci-dessus.
[0012] Plus particulièrement, l’invention a pour but de déterminer des appels éligibles de fonctions et d’enchaîner ces déterminations avec la génération automatique d’un code exécutable approprié, adapté aux conditions des appels respectifs, et avec le remplacement automatique du précédent code exécutable « par défaut » par le code exécutable généré.
[0013] Ce but est atteint avec un procédé d’optimisation d’un programme d’ordinateur, comprenant :
une première étape de détermination dans ledit programme d’ordinateur d’un appel d’une fonction ayant au moins un paramètre d’entrée, ledit appel correspondant à un premier critère selon lequel ledit au moins un paramètre d’entrée se trouve à l’intérieur d’un intervalle sensiblement plus petit que la fourchette de valeurs possibles pour ledit paramètre d’entrée, et à un second critère correspondant à une exactitude souhaitée pour ledit appel ;
une deuxième étape de génération automatique d’un code exécutable pour mettre en œuvre ladite fonction, minimisant le temps d’exécution pour ledit au moins un paramètre d’entrée qui se trouve à l’intérieur dudit intervalle et est compatible avec ladite exactitude souhaitée ;
une troisième étape de remplacement du code existant mettant en œuvre ladite fonction par le code exécutable généré à ladite deuxième étape.
[0014] Des modes de réalisation préférés comprennent une ou plusieurs des caractéristiques suivantes, qui peuvent être prises séparément ou ensemble, soit en combinaison partielle soit en combinaison complète.
- ladite première étape comprend le déclenchement automatique d’une série d’exécutions pour ledit programme d’ordinateur et l’analyse automatique de ladite exécution pour mesurer, pour chacun desdits appels, la valeur dudit au moins un paramètre de sorte à déterminer ledit intervalle ;
- ladite exactitude souhaitée est déterminée au moins partiellement sur la base de l’environnement dudit appel dans ledit programme d’ordinateur ;
- ladite deuxième étape comprend la génération d’expressions de code, associées chacune à un terme d’une suite mathématique approximant ladite fonction, dans lequel le nombre desdites expressions de code est déterminé par ladite exactitude souhaitée ;
- ladite fonction est une fonction trigonométrique ;
- ladite deuxième étape consiste à générer un premier code d’exécution en se basant sur une série de Taylor, ou un second code d’exécution en se basant sur des polynômes de Tchebychev ;
- ladite deuxième étape consiste à générer ledit premier code d’exécution en se basant sur une série de Taylor si ledit intervalle est proche de zéro, et ledit second code d’exécution en se basant sinon sur des polynômes de Tchebychev.
[0015] Un autre objet de l’invention consiste en une plate-forme pour l’optimisation d’un programme d’ordinateur, comprenant des moyens pour déterminer dans ledit programme d’ordinateur d’un appel d’une fonction ayant au moins un paramètre d’entrée, ledit appel correspondant à un premier critère selon lequel ledit au moins un paramètre d’entrée se trouve à l’intérieur d’un intervalle sensiblement plus petit que la fourchette de valeurs possibles pour ledit paramètre d’entrée, et à un second critère correspondant à une exactitude souhaitée pour ledit appel ;
un programme d’ordinateur pour la génération automatique d’un code exécutable pour mettre en œuvre ladite fonction minimisant le temps d’exécution pour ledit au moins un paramètre d’entrée qui se trouve à l’intérieur dudit intervalle et est compatible avec ladite exactitude souhaitée, et le remplacement du code existant mettant en œuvre ladite fonction par le code exécutable généré à ladite deuxième étape. [0016] Selon un mode de réalisation de cette plate-forme, lesdits moyens sont un second programme d’ordinateur conçu pour la détermination automatique dudit appel.
[0017] D’autres caractéristiques et avantages de l’invention apparaîtront à partir de la description suivante des modes de réalisation de l’invention, donnés en tant qu’exemples non limitatifs, en se référant aux dessins ci-joints listés ci-dessous.
Brève description des dessins [0018] [fig-1] montre un flux de données illustratif selon des modes de réalisation de l’invention.
[0019] [fig.2] montre un exemple schématique d’un appel à une fonction, selon des modes de réalisation de l’invention.
Description des modes de réalisation [0020] L’invention a pour but l’optimisation d’un programme d’ordinateur existant afin d’améliorer ses performances en se concentrant sur les appels à des fonctions mettant en œuvre un calcul.
[0021] Ce qui est appelé « calcul » dans la description suivante comprend notamment le calcul de fonctions mathématiques, spécialement les fonctions pour lesquelles le résultat ne peut pas être exactement déterminé mais est une approximation déterminée par un algorithme heuristique.
[0022] Des exemples typiques, mais non exhaustifs, sont des fonctions trigonométriques telles que la fonction sinusoïdale ou cosinusoïdale, qui sont largement utilisées dans un grand éventail d’applications. Le sinus ou le cosinus ne peut pas être directement calculé par un ordinateur mais des approximations peuvent être déterminées par des algorithmes tels que la série de Taylor ou les polynômes de Tchebychev.
Des descriptions de ces deux algorithmes peuvent être, par exemple, trouvés dans l’encyclopédie participative Wikipedia :
https://en.wikipedia.org/wiki/Taylor_series https://en.wikipedia.org/wiki/Chebyshev_polynomials [0023] Bien sûr, d’autres algorithmes d’approximation sont également possibles pour mettre en œuvre une fonction sinusoïdale ou cosinusoïdale.
[0024] De même, un autre type de fonctions mathématiques peut être considéré comme « calcul » et abordé par la présente invention : les transformées de Lourier et d’autres transformées, un calcul matriciel, etc.
[0025] Toutes ces approches fournissent seulement des résultats d’approximation surtout pour ces deux raisons.
[0026] D’abord, parce qu’elles sont basées sur des séries mathématiques ou d’autres procédés d’approximation qui, par définition, fourniront un résultat exact seulement après le calcul d’une infinité de termes.
Mais également, parce que des ordinateurs ne peuvent pas traiter des valeurs « réelles » mais seulement des approximations, telles que, par exemple, la double précision (DP) de la norme IEEE754. Ce schéma de codage est expliqué, par exemple, dans https ://en. wikipedia.org/wiki/IEEE_754.
[0027] Selon l’invention, et comme représenté dans le flux de données illustratif de la figure 1, une première étape SI 1 consiste à déterminer dans un programme d’ordinateur à optimiser les appels à certaines fonctions identifiées. Ces fonctions identifiées sont celles qui mettent en œuvre un calcul tel que défini ci-dessus. Bien sûr, le procédé peut seulement se concentrer sur un sous-ensemble de ces dernières, ou même sur une ou deux de ces fonctions telles que les fonctions sinusoïdales ou cosinusoïdales, par exemple.
[0028] Afin de recueillir un échantillon substantiel de valeurs de paramètres d’entrée, le programme d’ordinateur peut être exécuté plusieurs fois. À chaque exécution, la valeur du ou des paramètres d’entrée peut être stockée de telle sorte qu’à la fin de l’ensemble d’exécutions, un « espace » de valeurs soit constitué, formant un intervalle entre une valeur minimale et une valeur maximale.
[0029] En outre, typiquement, pendant un temps d’exécution, un appel donné à une fonction peut avoir lieu plusieurs fois grâce à des boucles dans le programme d’ordinateur. Chaque fois, les paramètres d’entrée de la fonction sont normalement différents.
[0030] La figure 2 illustre un tel exemple schématique dans lequel la première ligne verticale représente la fonction principale MF, composée d’une séquence d’instructions Tl, T2, T3,..., Ti,..., Tn. À l’étape Tn, la fonction principale fait des boucles sur l’instruction T2. L’instruction Ti appelle la fonction SF qui comprend les étapes SI, S2, S3, ..., Sp. L’instruction Sp met fin à l’appel de fonction et le traitement passe à l’instruction suivante de Ti de la fonction principale MF.
[0031] L’appel de la fonction SF peut être conforme à un format différent en fonction des langages logiciels et des plates-formes sous-jacentes mais il peut ressembler à [0032] [Math.l] y = S F (x).
[0033] dans lequel SF est un identifiant de la fonction, y est le résultat (une valeur ou un ensemble de valeurs) et x constitue les paramètres (une valeur ou un ensemble de valeurs).
[0034] Il peut être apprécié dans cet exemple que la fonction SF sera appelée à chaque boucle dans la fonction principale MF. À chaque boucle, les paramètres d’entrée x devraient normalement être différents.
[0035] Pour chaque appel déterminé à l’étape SI 1, dans une seconde étape S12, le procédé comprend la détermination de l’intervalle constitué par les valeurs des paramètres d’entrée de la fonction à chaque occurrence des appels.
[0036] Dans le cas habituel dans lequel un appel donné a lieu plusieurs fois, les différentes valeurs des paramètres pour toutes ces occurrences peuvent être stockées de sorte à déterminer les valeurs minimale et maximale. Lorsque la fonction comprend plusieurs paramètres d’entrée, cela peut être réalisé pour tous les paramètres.
[0037] Ces valeurs minimale et maximale forment un intervalle qui sera utile pour déterminer si l’appel est éligible à une optimisation.
[0038] L’étape S13 peut être réalisée en parallèle à l’étape S12, ou en séquence avec cette dernière. Elle consiste à déterminer une précision souhaitable pour l’appel.
[0039] Une telle précision, ou exactitude, peut être déterminée manuellement par le développeur, en fonction du programme d’ordinateur qui est développé.
[0040] De même, l’exactitude peut être déterminée au moins partiellement sur la base de l’environnement dudit appel dans le programme d’ordinateur.
[0041] Cet environnement peut comprendre les instructions se servant du résultat de la fonction.
[0042] Selon un mode de réalisation, cet environnement peut être regardé à travers une « fenêtre », qui peut comprendre les quelques précédentes instructions avant l’appel et certaines instructions ultérieures après l’appel. Dans l’exemple de la figure 2, une telle fenêtre peut être formalisée sous la forme d’un sous-ensemble d’instructions [Ti - a ; Ti + β ] de la boucle principale MF, dans lequel a et β sont deux paramètres de configuration, a peut être zéro de telle sorte que seules des instructions ultérieures soient prises en compte pour déterminer Γ environnement.
[0043] Au moyen d’une analyse automatique de ces instructions, il est possible d’obtenir des informations concernant la manière avec laquelle est utilisé le résultat de la fonction dans la fonction principale. En particulier, en fonction de la manière avec laquelle le résultat est traité par des instructions ultérieures, on peut déterminer l’impact de son exactitude sur l’exactitude des résultats de ces résultats ultérieurs.
[0044] Un exemple trivial est l’arrondi de la fonction de résultat en tant qu’instruction ultérieure, comme dans l’exemple suivant :
[0045] [Math.2] z = arrondi (y ; 4).
[0046] dans lequel le « 4 » signifie que z est arrondi à 4 chiffres après la virgule.
[0047] Dans une telle situation triviale, il ne serait pas nécessaire de calculer y = sin(x) avec une exactitude plus importante puisque les données supplémentaires calculées seront perdues par les instructions ultérieures (à savoir l’instruction « arrondir »).
[0048] À l’étape S14, il est alors possible de déterminer si l’appel est éligible à une optimisation s’il correspond à deux critères :
- un premier critère selon lequel l’intervalle déterminé à l’étape S12 est sensiblement plus petit que la fourchette de valeurs possibles pour le ou les paramètres d’entrée ;
- un second critère correspondant à l’exactitude souhaitée du résultat de la fonction, déterminé à l’étape S13.
[0049] L’intervalle déterminé devrait être assez petit par comparaison avec la fourchette de valeurs possibles de sorte que certaines caractéristiques spécifiques puissent être associées à cet intervalle. En d’autres mots, il devrait être le déclencheur de la détermination d’une mise en œuvre particulière de la fonction qui serait appropriée dans cet intervalle.
[0050] Par conséquent, la granularité de l’intervalle approprié et, donc, la signification du terme « sensiblement plus petit » dépend de la fonction à laquelle l’appel doit être optimisé. Pour certaines fonctions, certaines caractéristiques peuvent être déterminées pour une proximité à zéro, par exemple, le déclenchement d’une mise en œuvre spécifique ; pour d’autres fonctions, les intervalles appropriés pourraient être des valeurs positives et négatives d’un paramètre, etc.
[0051] Selon un mode de réalisation particulier, différentes mises en œuvre peuvent chacune être associées à un intervalle approprié. Alors, l’intervalle déterminé à l’étape S12 peut être comparé à cet intervalle. Si un intervalle englobant cet intervalle déterminé est trouvé et si une exactitude souhaitée a été déterminée, alors l’appel est éligible à une optimisation.
[0052] Une fois qu’un appel d’une fonction a été déterminé comme remplissant les deux critères, un code exécutable est automatiquement généré à l’étape S2 pour réduire à un minimum le temps d’exécution pour cette fonction, lorsque les paramètres d’entrée se trouvent dans l’intervalle déterminé auparavant et étant donné que l’exactitude calculée peut être assouplie à l’exactitude déterminée auparavant.
[0053] En d’autres mots, il est supposé que l’échantillon sur lequel l’intervalle des paramètres d’entrée est déterminé est assez approprié (par exemple, assez important) de sorte que les exécutions ultérieures du programme d’ordinateur produiront des valeurs de paramètre pour cet appel dans ce même intervalle.
[0054] Le code exécutable pour mettre en œuvre la fonction est choisi à la fois en fonction de cet intervalle et de l’exactitude souhaitée. Cette exactitude souhaitée peut servir à la fois de degré de liberté, permettant des choix plus importants de mises en œuvre, mais également de paramètre pour optimiser davantage la mise en œuvre choisie.
[0055] Par conséquent, les deux critères travaillent en synergie pour définir le code exécutable le plus approprié mettant en œuvre la fonction.
[0056] Par exemple, certaines mises en œuvre d’une fonction comprennent une séquence d’expressions de code, chacune étant associée à un terme d’une série mathématique approximant cette fonction. Alors, le nombre de ces termes (et, donc, d’une expression de code) est déterminé par cette exactitude souhaitée.
[0057] Par conséquent, le code exécutable généré est optimisé comme comprenant seulement le nombre minimal de termes permettant d’atteindre l’exactitude souhaitée (étant donné que n’importe quel terme supplémentaire donnera une exactitude supplémentaire inutile et augmentera le temps d’exécution global à cause de ces termes supplémentaires à calculer).
[0058] Des exemples concrets peuvent être fournis en ce qui concerne des fonctions mathématiques telles que des fonctions trigonométriques (sinusoïdale, cosinusoïdale, ...).
[0059] Si l’intervalle déterminé est proche de zéro, une mise en œuvre basée sur une série de Taylor peut être sélectionnée. Sinon, une mise en œuvre basée sur des polynômes de Tchebychev peut être sélectionnée.
[0060] Alors, l’exactitude souhaitée peut être utilisée pour affiner le code exécutable de sorte à être généré pour mettre en œuvre la fonction.
[0061] Bien sûr, d’autres mises en œuvre sont possibles mais, pour la clarté et la concision de la description, un exemple basé sur ces 2 mises en œuvre sera décrit. L’homme de l’art sera capable de trouver la manière d’adapter cet exemple à d’autres mises en œuvre.
[0062] Les séries de Taylor sont des techniques bien connues pour approximer des fonctions mathématiques telles que des fonctions trigonométriques. En théorie, des séries infinies donnent le résultat exact mais, dans un calcul numérique, les séries devraient évidemment être limitées à un certain nombre N de termes.
[0063] [Math.3] sir· .Ύ
ÇS5
taii x
[0064] B2n étant les nombres de Bernoulli.
[0065] Ensuite, l’exactitude souhaitée peut être utilisée pour déterminer le nombre N de termes de la série qui doit être calculée.
[0066] Selon l’algorithme de mise en œuvre sélectionné et ce nombre N déterminé, le code exécutable peut être automatiquement généré.
[0067] Ensuite, avec une exactitude souhaitée déterminant N = 5, le code d’exécution généré pourrait ressembler à :
[0068] [Math.4] (
OOOOOOOf// z = (0,008333333333333333333333333) t /0/o/(/1100/101(i/(ôli/teO/li011010ôO-110000000010100/i:/(/ return s ;
) [0069] dans lequel _fma est la fonction classique « multiplication et ajout fusionnés » et _mul est une simple multiplication.
[0070] Avec un nombre N de termes plus important, le code d’exécution généré peut ressembler à :
[0071] [Math.5] tl leiliiill «2 — y) ;
z = ^^^{2^2,(1,64397470831557903351581534773430- 63));
(((i(((B((iOMiiB^ ((1((((1((((1^1^ ((i(((i((((BiBBiiiB3iiiii3i®BiewiBiiilieiiiiiiii(j((| (((i(((o((io»ieBiw (iii^
z — _/-??-;a_'/7î. {2, $2, (-0/1665666666666666666666667)) ;
)5()((Β((^105Β11(Ο((Β(Ο:(((((ί· retii™ z ;
[0072] Comme pour les polynômes de Tchebychev, plusieurs approches peuvent être utilisées.
[0073] Selon un mode de réalisation, le sous-problème à traiter consiste à trouver la combinaison des polynômes de Tchebychev qui optimisent l’approximation dans l’intervalle déterminé. Ces polynômes Pi ont la propriété de définir une base (dans le sens mathématique). Ensuite, une fonction f(x) peut être approximée par n polynômes de Tchebychev :
[0074] [Math.6]
[0075] La détermination des coefficients a; peut être réalisée au moyen de résolutions d’équations, qui peuvent être automatiquement effectuées par un outil de calcul formel.
[0076] En utilisant le langage d’un outil bien connu tel que le produit logiciel Mathematica, [0077] [0078] [0079] [0080] [0081] [0082] [0083] la détermination du coefficient peut être réalisée par le code suivant :
[Math.7] ((8/(3 « Pi)} « (x) - (8/(3 * Pi *3')) * (χΛ3))Α(-1} ;
..........
inner J î > 2S 1 ;
........
dans lequel BOUNDARY est la limite par rapport à l’intervalle et RANGE est la série d’indices des coefficients qui doivent être déterminés.
Cet exemple dérive des enseignements de l’article trouvé à l’adresse URL suivante : http:////mooooo.ooo/chebyshev-sine-approximation
Ensuite, ces coefficients peuvent être introduits dans le code d’exécution qui doit être généré.
En particulier, dans le cas où les coefficients ont été déterminés par un outil de calcul formel tel que « Mathematica », les coefficients peuvent être convertis et affichés. Un code pour ce faire pourrait être :
[Math. 8]
P ;= Ar[Expimd[sffie[A]], 22];
Ensuite, le coefficient peut être utilisé de la même manière que dans le cas de la série de Taylor ci-dessus. Par exemple, pour un intervalle déterminé par BOUNDARY = 2 π, un code d’exécution généré peut être :
[0084] [Math.9] ;
β
γ :::
[0085] Ou, pour une précision, ou une exactitude, plus grande :
[0086] [Math. 10] {
s = (-5369196481185774086993e - 67) ;
+ 15 lignes similaires ne sont pus représentées peur lu œncisian iré 4tru?ÿ«ri©n i/ré^ïrén^sîjl }
[0087] À la différence de la série de Taylor, les coefficients dépendent de l’exactitude souhaitée, à savoir la valeur de RANGE dans l’algorithme ci-dessus et de l’intervalle, à savoir la valeur de BOUNDARY.
[0088] Les polynômes de Tchebychev donnent une approximation avec une exactitude presque strictement constante pour toutes les valeurs possibles des paramètres d’entrée à l’intérieur de RANGE (au moins par comparaison à l’approximation fournie par des séries de Taylor). Toutefois, des séries de Taylor donnent une meilleure approximation proche de zéro de telle sorte que, pour une exactitude souhaitée donnée, moins de termes soient requis, impliquant une meilleure optimisation en termes de temps de traitement.
[0089] De même, de nombreux autres algorithmes de mise en œuvre peuvent être utilisés pour approximer la fonction, chacun ayant des caractéristiques différentes en termes d’exactitude, d’exactitude par rapport à un équilibre d’intervalle, de temps de traitement, etc. Plus des algorithmes de mise en œuvre sont disponibles, plus appropriée peut être la détermination du code d’exécution qui doit être généré.
[0090] Une fois que le code d’exécution est généré, il remplacera le code d’exécution utilisé auparavant qui a mis en œuvre la fonction appelée. Cette étape de remplacement S3 peut être réalisée en joignant simplement le code d’exécution au code global du programme d’ordinateur et en remplaçant l’appel à la fonction par un appel à cette nouvelle mise en œuvre de la fonction (à savoir sans supprimer nécessairement la précédente mise en œuvre, qui pourrait être utilisée pour mettre en œuvre la fonction en ce qui concerne un autre appel à elle au moyen du programme d’ordinateur).
[0091] L’invention a été décrite en se référant à des modes de réalisation préférés. Toutefois, de nombreuses modifications sont possibles dans la portée de l’invention.

Claims (1)

  1. Procédé d’optimisation d’un programme d’ordinateur, comprenant
    - une première étape (SU, S12, S13, S14) de détermination dans ledit programme d’ordinateur d’un appel d’une fonction ayant au moins un paramètre d’entrée, ledit appel correspondant à un premier critère selon lequel ledit au moins un paramètre d’entrée se trouve à l’intérieur d’un intervalle sensiblement plus petit que la fourchette de valeurs possibles pour ledit paramètre d’entrée, et à un second critère correspondant à une exactitude souhaitée pour ledit appel ;
    - une deuxième étape (S2) de génération automatique d’un code exécutable pour mettre en œuvre ladite fonction, minimisant le temps d’exécution pour ledit au moins un paramètre d’entrée qui se trouve à l’intérieur dudit intervalle et est compatible avec ladite exactitude souhaitée ;
    - une troisième étape (S3) de remplacement du code existant mettant en œuvre ladite fonction par le code exécutable généré à ladite deuxième étape.
    Procédé selon la revendication précédente, dans lequel ladite première étape comprend le déclenchement automatique d’une série d’exécutions pour ledit programme d’ordinateur et l’analyse automatique de ladite exécution pour mesurer, pour chacun desdits appels, la valeur dudit au moins un paramètre de sorte à déterminer (S 12) ledit intervalle. Procédé selon l’une quelconque des revendications précédentes, dans lequel ladite exactitude souhaitée est déterminée (S 13) au moins partiellement sur la base de l’environnement dudit appel dans ledit programme d’ordinateur.
    Procédé selon l’une quelconque des revendications précédentes, dans lequel ladite deuxième étape (S2) comprend la génération d’expressions de code, associées chacune à un terme d’une suite mathématique approximant ladite fonction, dans lequel le nombre desdites expressions de code est déterminé par ladite exactitude souhaitée.
    Procédé selon l’une quelconque des revendications précédentes, dans lequel ladite fonction est une fonction trigonométrique.
    Procédé selon la revendication précédente, dans lequel ladite deuxième étape consiste à générer un premier code d’exécution en se basant sur une série de Taylor, ou un second code d’exécution en se basant sur des polynômes de Tchebychev.
    [Revendication 7] [Revendication 8] [Revendication 9] [Revendication 10]
    Procédé selon la revendication précédente, dans lequel ladite deuxième étape consiste à générer ledit premier code d’exécution en se basant sur une série de Taylor si ledit intervalle est proche de zéro, et ledit second code d’exécution en se basant sinon sur des polynômes de Tchebychev. Plate-forme pour l’optimisation d’un programme d’ordinateur, comprenant
    - des moyens pour déterminer dans ledit programme d’ordinateur d’un appel d’une fonction ayant au moins un paramètre d’entrée, ledit appel correspondant à un premier critère selon lequel ledit au moins un paramètre d’entrée se trouve à l’intérieur d’un intervalle sensiblement plus petit que la fourchette de valeurs possibles pour ledit paramètre d’entrée, et à un second critère correspondant à une exactitude souhaitée pour ledit appel ;
    - un programme d’ordinateur pour la génération automatique d’un code exécutable pour mettre en œuvre ladite fonction, minimisant le temps d’exécution pour ledit au moins un paramètre d’entrée qui se trouve à l’intérieur dudit intervalle et est compatible avec ladite exactitude souhaitée, et le remplacement du code existant mettant en œuvre ladite fonction par le code exécutable généré à ladite deuxième étape. Plate-forme selon la revendication précédente, dans laquelle lesdits moyens sont un second programme d’ordinateur conçu pour la détermination automatique dudit appel.
    Plate-forme selon l’une quelconque des revendications 8 et 9, dans laquelle ledit programme d’ordinateur comprend des instructions pour générer des expressions de code, associées chacune à un terme d’une suite mathématique approximant ladite fonction, dans laquelle le nombre desdites expressions de code est déterminé par ladite exactitude souhaitée.
FR1872121A 2017-11-30 2018-11-30 Optimisation du temps d'exécution d'un programme d'ordinateur ne déterminant la mise en œuvre d'une fonction en fonction d'un éventail de paramètres d'entrée et d'une exactitude Active FR3076921B1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17306658.0A EP3493053B1 (fr) 2017-11-30 2017-11-30 Optimisation du temps d'exécution d'un programme informatique par la détermination de la mise en oeuvre d'une fonction selon une plage de paramètres d'entrée et une précision
EP17306658.0 2017-11-30

Publications (2)

Publication Number Publication Date
FR3076921A1 true FR3076921A1 (fr) 2019-07-19
FR3076921B1 FR3076921B1 (fr) 2023-03-24

Family

ID=60661877

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1872121A Active FR3076921B1 (fr) 2017-11-30 2018-11-30 Optimisation du temps d'exécution d'un programme d'ordinateur ne déterminant la mise en œuvre d'une fonction en fonction d'un éventail de paramètres d'entrée et d'une exactitude

Country Status (5)

Country Link
US (1) US11307883B2 (fr)
EP (1) EP3493053B1 (fr)
JP (1) JP2019102088A (fr)
BR (1) BR102018074540A2 (fr)
FR (1) FR3076921B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11573822B2 (en) * 2020-12-30 2023-02-07 Arteris, Inc. System and method for generating and using a context block based on system parameters

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289519A1 (en) * 2004-06-24 2005-12-29 Apple Computer, Inc. Fast approximation functions for image processing filters
US20080040409A1 (en) * 2006-07-31 2008-02-14 Fujitsu Limited Arithmetic program conversion apparatus, arithmetic program conversion program and arithmetic program conversion method
US20150309778A1 (en) * 2014-04-29 2015-10-29 Reservoir Labs, Inc. Systems and methods for approximation based optimization of data processors

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370822B2 (en) * 2008-11-20 2013-02-05 Apple Inc. Compiling techniques for providing limited accuracy and enhanced performance granularity
US9495139B2 (en) * 2011-04-11 2016-11-15 University Of Florida Research Foundation, Inc. Elastic computing
US10521208B2 (en) * 2017-06-23 2019-12-31 Microsoft Technology Licensing, Llc. Differentiated static analysis for dynamic code optimization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289519A1 (en) * 2004-06-24 2005-12-29 Apple Computer, Inc. Fast approximation functions for image processing filters
US20080040409A1 (en) * 2006-07-31 2008-02-14 Fujitsu Limited Arithmetic program conversion apparatus, arithmetic program conversion program and arithmetic program conversion method
US20150309778A1 (en) * 2014-04-29 2015-10-29 Reservoir Labs, Inc. Systems and methods for approximation based optimization of data processors

Also Published As

Publication number Publication date
US20190163508A1 (en) 2019-05-30
EP3493053B1 (fr) 2023-07-19
FR3076921B1 (fr) 2023-03-24
JP2019102088A (ja) 2019-06-24
EP3493053A1 (fr) 2019-06-05
US11307883B2 (en) 2022-04-19
BR102018074540A2 (pt) 2019-06-25

Similar Documents

Publication Publication Date Title
RU2582541C2 (ru) Контекстно-зависимое расслаивание для динамической параллелизации двоичных программ
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
CA2970551A1 (fr) Procede d'ajustement de la precision d'un programme d'ordinateur manipulant au moins un nombre a virgule
FR3035243A1 (fr) Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
JP2012208924A (ja) 適応的重み付けを用いた様々な文書間類似度計算方法に基づいた文書比較方法および文書比較システム
EP2137663A1 (fr) Procede de protection de documents numeriques contre des utilisations non autorisees
FR3076921A1 (fr) OptimiSation DU TEMPS D’exÉcution D’UN programME D’ORDINATEUR EN DÉTERMINANT LA MISE EN ŒUVRE D’UNE fOnction EN FONCTION D’UN ÉVENTAIL DE paramÈtREs D’ENTRÉE ET D’UNE EXACTITUDE
EP2996040A1 (fr) Procédé de détermination par optimisation d'une architecture multi-coeurs
WO2018059897A1 (fr) Procede de gestion des taches de calcul sur un processeur multi-cœurs fonctionnellement asymetrique
FR2964275A1 (fr) Compteur numerique et procede de mesure d'une duree
FR2769105A1 (fr) Dispositif et procede de prise en compte de l'execution d'une tache sur un systeme informatique
AU2020346686B2 (en) System and method for approximating branching operations for use with data encrypted by fully homomorphic encryption (FHE)
EP3224653A1 (fr) Methode et dispositif de traitement de donnees de puits
CA2989514A1 (fr) Procede et systeme d'aide a la maintenance et a l'optimisation d'un supercalculateur
FR3039677A1 (fr) Procede de conception de pieces mecaniques, notamment d'aubes de turbomachine
FR3096477A1 (fr) Calcul d'agrégation agnostique de modèle de jonction dans des opérations de requête de base de données
US7536427B2 (en) Comparing process sizes
EP4167144A1 (fr) Methode de conception d'une architecture materielle optimisee pour l'execution d'un reseau de neurones
WO2020174186A1 (fr) Procédé de validation d'un système flots de données
FR3060157A1 (fr) Procede de simulation du comportement d'une structure par calcul par elements finis
FR3109651A1 (fr) Procédé d’implémentation d’un réseau de neurones artificiels dans un circuit intégré
FR2922338A1 (fr) Procede et systeme d'annotation de documents multimedia
FR3103594A1 (fr) Système et procédé pour la création assistée par ordinateur de code informatique
FR3091390A1 (fr) Procédé de génération d’un exemple adversaire pour un modèle d’apprentissage automatique, procédé de robustification, dispositif de génération et programme produit ordinateur associés
FR2858074A1 (fr) Procede de gestion de l'execution d'au moins un programme sur plusieurs calculateurs

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20200327

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6