Serveur d'exploration sur l'Université de Trèves

Attention, ce site est en cours de développement !
Attention, site généré par des moyens informatiques à partir de corpus bruts.
Les informations ne sont donc pas validées.

Scheduling expression DAGs for minimal register need

Identifieur interne : 000E59 ( PascalFrancis/Checkpoint ); précédent : 000E58; suivant : 000E60

Scheduling expression DAGs for minimal register need

Auteurs : C. W. Kessler [Allemagne]

Source :

RBID : Pascal:98-0346250

Descripteurs français

English descriptors

Abstract

Generating schedules for expression DAGs that use a minimal number of registers is a classical NP-complete optimization problem. Up to now an exact solution could only be computed for small DAGs (with up to 20 nodes), using a trivial O(n!) enumeration algorithm. We present a new algorithm with worst-case complexity O(n22n) and very good average behavior. Applying a dynamic programming scheme and reordering techniques, our algorithm is able to defer the combinatorial explosion and to generate an optimal schedule not only for small DAGs but also for medium-sized ones with up to 50 nodes, a class that contains nearly all DAGs encountered in typical application programs. Experiments with randomly generated DAGs and large DAGs from real application programs confirm that the new algorithm generates optimal schedules quite fast. We extend our algorithm to cope with delay slots and multiple functional units, two common features of modern superscalar processors.


Affiliations:


Links toward previous steps (curation, corpus...)


Links to Exploration step

Pascal:98-0346250

Le document en format XML

<record>
<TEI>
<teiHeader>
<fileDesc>
<titleStmt>
<title xml:lang="en" level="a">Scheduling expression DAGs for minimal register need</title>
<author>
<name sortKey="Kessler, C W" sort="Kessler, C W" uniqKey="Kessler C" first="C. W." last="Kessler">C. W. Kessler</name>
<affiliation wicri:level="1">
<inist:fA14 i1="01">
<s1>Universitaet Trier</s1>
<s2>Trier</s2>
<s3>DEU</s3>
<sZ>1 aut.</sZ>
</inist:fA14>
<country>Allemagne</country>
<wicri:noRegion>Trier</wicri:noRegion>
<wicri:noRegion>Universitaet Trier</wicri:noRegion>
<wicri:noRegion>Universitaet Trier</wicri:noRegion>
</affiliation>
</author>
</titleStmt>
<publicationStmt>
<idno type="wicri:source">INIST</idno>
<idno type="inist">98-0346250</idno>
<date when="1998">1998</date>
<idno type="stanalyst">PASCAL 98-0346250 EI</idno>
<idno type="RBID">Pascal:98-0346250</idno>
<idno type="wicri:Area/PascalFrancis/Corpus">001127</idno>
<idno type="wicri:Area/PascalFrancis/Curation">001698</idno>
<idno type="wicri:Area/PascalFrancis/Checkpoint">000E59</idno>
<idno type="wicri:explorRef" wicri:stream="PascalFrancis" wicri:step="Checkpoint">000E59</idno>
</publicationStmt>
<sourceDesc>
<biblStruct>
<analytic>
<title xml:lang="en" level="a">Scheduling expression DAGs for minimal register need</title>
<author>
<name sortKey="Kessler, C W" sort="Kessler, C W" uniqKey="Kessler C" first="C. W." last="Kessler">C. W. Kessler</name>
<affiliation wicri:level="1">
<inist:fA14 i1="01">
<s1>Universitaet Trier</s1>
<s2>Trier</s2>
<s3>DEU</s3>
<sZ>1 aut.</sZ>
</inist:fA14>
<country>Allemagne</country>
<wicri:noRegion>Trier</wicri:noRegion>
<wicri:noRegion>Universitaet Trier</wicri:noRegion>
<wicri:noRegion>Universitaet Trier</wicri:noRegion>
</affiliation>
</author>
</analytic>
<series>
<title level="j" type="main">Computer Languages</title>
<title level="j" type="abbreviated">Comput Lang</title>
<idno type="ISSN">0096-0551</idno>
<imprint>
<date when="1998">1998</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
<seriesStmt>
<title level="j" type="main">Computer Languages</title>
<title level="j" type="abbreviated">Comput Lang</title>
<idno type="ISSN">0096-0551</idno>
</seriesStmt>
</fileDesc>
<profileDesc>
<textClass>
<keywords scheme="KwdEn" xml:lang="en">
<term>Algorithms</term>
<term>Application</term>
<term>Code generation</term>
<term>Computational complexity</term>
<term>Dynamic programming</term>
<term>Instruction scheduling</term>
<term>Program compilers</term>
<term>Program optimization</term>
<term>Register allocation</term>
<term>Storage allocation (computer)</term>
<term>Theory</term>
</keywords>
<keywords scheme="Pascal" xml:lang="fr">
<term>Application</term>
<term>Complexité calcul</term>
<term>Algorithme</term>
<term>Programmation dynamique</term>
<term>Allocation mémoire</term>
<term>Compilateur</term>
<term>Théorie</term>
</keywords>
</textClass>
</profileDesc>
</teiHeader>
<front>
<div type="abstract" xml:lang="en">Generating schedules for expression DAGs that use a minimal number of registers is a classical NP-complete optimization problem. Up to now an exact solution could only be computed for small DAGs (with up to 20 nodes), using a trivial O(n!) enumeration algorithm. We present a new algorithm with worst-case complexity O(n22n) and very good average behavior. Applying a dynamic programming scheme and reordering techniques, our algorithm is able to defer the combinatorial explosion and to generate an optimal schedule not only for small DAGs but also for medium-sized ones with up to 50 nodes, a class that contains nearly all DAGs encountered in typical application programs. Experiments with randomly generated DAGs and large DAGs from real application programs confirm that the new algorithm generates optimal schedules quite fast. We extend our algorithm to cope with delay slots and multiple functional units, two common features of modern superscalar processors.</div>
</front>
</TEI>
<inist>
<standard h6="B">
<pA>
<fA01 i1="01" i2="1">
<s0>0096-0551</s0>
</fA01>
<fA02 i1="01">
<s0>COLADA</s0>
</fA02>
<fA03 i2="1">
<s0>Comput Lang</s0>
</fA03>
<fA05>
<s2>24</s2>
</fA05>
<fA06>
<s2>1</s2>
</fA06>
<fA08 i1="01" i2="1" l="ENG">
<s1>Scheduling expression DAGs for minimal register need</s1>
</fA08>
<fA11 i1="01" i2="1">
<s1>KESSLER (C. W.)</s1>
</fA11>
<fA14 i1="01">
<s1>Universitaet Trier</s1>
<s2>Trier</s2>
<s3>DEU</s3>
<sZ>1 aut.</sZ>
</fA14>
<fA20>
<s1>33-53</s1>
</fA20>
<fA21>
<s1>1998</s1>
</fA21>
<fA23 i1="01">
<s0>ENG</s0>
</fA23>
<fA43 i1="01">
<s1>INIST</s1>
<s2>16408</s2>
</fA43>
<fA44>
<s0>A100</s0>
</fA44>
<fA45>
<s0>31 Refs.</s0>
</fA45>
<fA47 i1="01" i2="1">
<s0>98-0346250</s0>
</fA47>
<fA60>
<s1>P</s1>
</fA60>
<fA61>
<s0>A</s0>
</fA61>
<fA64 i2="1">
<s0>Computer Languages</s0>
</fA64>
<fA66 i1="01">
<s0>USA</s0>
</fA66>
<fC01 i1="01" l="ENG">
<s0>Generating schedules for expression DAGs that use a minimal number of registers is a classical NP-complete optimization problem. Up to now an exact solution could only be computed for small DAGs (with up to 20 nodes), using a trivial O(n!) enumeration algorithm. We present a new algorithm with worst-case complexity O(n22n) and very good average behavior. Applying a dynamic programming scheme and reordering techniques, our algorithm is able to defer the combinatorial explosion and to generate an optimal schedule not only for small DAGs but also for medium-sized ones with up to 50 nodes, a class that contains nearly all DAGs encountered in typical application programs. Experiments with randomly generated DAGs and large DAGs from real application programs confirm that the new algorithm generates optimal schedules quite fast. We extend our algorithm to cope with delay slots and multiple functional units, two common features of modern superscalar processors.</s0>
</fC01>
<fC02 i1="01" i2="X">
<s0>001D02B03</s0>
</fC02>
<fC02 i1="02" i2="X">
<s0>001D02A</s0>
</fC02>
<fC02 i1="03" i2="X">
<s0>001D02B</s0>
</fC02>
<fC02 i1="04" i2="X">
<s0>001D01A</s0>
</fC02>
<fC02 i1="05" i2="X">
<s0>001D03I02</s0>
</fC02>
<fC03 i1="01" i2="1" l="ENG">
<s0>Instruction scheduling</s0>
<s4>INC</s4>
</fC03>
<fC03 i1="02" i2="1" l="ENG">
<s0>Register allocation</s0>
<s4>INC</s4>
</fC03>
<fC03 i1="03" i2="1" l="ENG">
<s0>Program optimization</s0>
<s4>INC</s4>
</fC03>
<fC03 i1="04" i2="1" l="ENG">
<s0>Code generation</s0>
<s4>INC</s4>
</fC03>
<fC03 i1="05" i2="X" l="FRE">
<s0>Application</s0>
</fC03>
<fC03 i1="05" i2="X" l="ENG">
<s0>Application</s0>
</fC03>
<fC03 i1="05" i2="X" l="GER">
<s0>Anwendung</s0>
</fC03>
<fC03 i1="05" i2="X" l="SPA">
<s0>Aplicación</s0>
</fC03>
<fC03 i1="06" i2="1" l="FRE">
<s0>Complexité calcul</s0>
</fC03>
<fC03 i1="06" i2="1" l="ENG">
<s0>Computational complexity</s0>
</fC03>
<fC03 i1="07" i2="1" l="FRE">
<s0>Algorithme</s0>
</fC03>
<fC03 i1="07" i2="1" l="ENG">
<s0>Algorithms</s0>
</fC03>
<fC03 i1="08" i2="1" l="FRE">
<s0>Programmation dynamique</s0>
</fC03>
<fC03 i1="08" i2="1" l="ENG">
<s0>Dynamic programming</s0>
</fC03>
<fC03 i1="09" i2="1" l="FRE">
<s0>Allocation mémoire</s0>
</fC03>
<fC03 i1="09" i2="1" l="ENG">
<s0>Storage allocation (computer)</s0>
</fC03>
<fC03 i1="10" i2="1" l="FRE">
<s0>Compilateur</s0>
<s3>P</s3>
</fC03>
<fC03 i1="10" i2="1" l="ENG">
<s0>Program compilers</s0>
<s3>P</s3>
</fC03>
<fC03 i1="11" i2="1" l="FRE">
<s0>Théorie</s0>
</fC03>
<fC03 i1="11" i2="1" l="ENG">
<s0>Theory</s0>
</fC03>
<fN21>
<s1>229</s1>
</fN21>
</pA>
</standard>
</inist>
<affiliations>
<list>
<country>
<li>Allemagne</li>
</country>
</list>
<tree>
<country name="Allemagne">
<noRegion>
<name sortKey="Kessler, C W" sort="Kessler, C W" uniqKey="Kessler C" first="C. W." last="Kessler">C. W. Kessler</name>
</noRegion>
</country>
</tree>
</affiliations>
</record>

Pour manipuler ce document sous Unix (Dilib)

EXPLOR_STEP=$WICRI_ROOT/Wicri/Rhénanie/explor/UnivTrevesV1/Data/PascalFrancis/Checkpoint
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 000E59 | SxmlIndent | more

Ou

HfdSelect -h $EXPLOR_AREA/Data/PascalFrancis/Checkpoint/biblio.hfd -nk 000E59 | SxmlIndent | more

Pour mettre un lien sur cette page dans le réseau Wicri

{{Explor lien
   |wiki=    Wicri/Rhénanie
   |area=    UnivTrevesV1
   |flux=    PascalFrancis
   |étape=   Checkpoint
   |type=    RBID
   |clé=     Pascal:98-0346250
   |texte=   Scheduling expression DAGs for minimal register need
}}

Wicri

This area was generated with Dilib version V0.6.31.
Data generation: Sat Jul 22 16:29:01 2017. Site generation: Wed Feb 28 14:55:37 2024