请输入您要查询的百科知识:

 

词条 Superoptimization
释义

  1. Publicly available superoptimizers

  2. See also

  3. References

Superoptimization is the process of automatically finding the optimal code sequence for one, loop-free sequence of instructions. It is performed in and by a type of computer software termed a compiler. Real-world compilers generally cannot produce genuinely optimal code. While most standard compiler optimizations only improve code partly, a superoptimizer's goal is to find the optimal sequence, the canonical form.

The term superoptimization was first coined by Henry Massalin in the 1987 paper Superoptimizer: A Look at the Smallest Program. In 1992, the GNU Superoptimizer (GSO) was developed to integrate into the GNU Compiler Collection (GCC).[2][3] Later work further developed and extended these ideas. In 2001, goal-directed superoptimizing was demonstrated in the Denali project by Compaq research.[4] In 2006, answer set declarative programming was used for superoptimising in the Total Optimisation using Answer Set Technology (TOAST) project at the University of Bath,[5][6] and superoptimizing was used to automatically generate general-purpose peephole optimizers.[7]

Typically, superoptimizing is performed via exhaustive brute-force search in the space of valid instruction sequences. This is a costly method, and thus impractical for general-purpose compilers. Yet, it has been shown to be useful in optimizing performance-critical inner loops.

Publicly available superoptimizers

Superoptimizer studies, documents, and several working examples, are available for free download.

  • GNU Superoptimizer (GSO) (1992)[2][3]
  • Total Optimisation using Answer Set Technology (TOAST) project (2006)[5][6]
  • The Aha! (A Hacker's Assistant) Superoptimizer (and paper about it) (2006)
  • Stanford Superoptimizer (2006)[12]
  • PIC microcontroller SuperOptimizer (2003)[13][14]
  • Clojure superoptimizer for the Java virtual machine (2012)[15]
  • A feasibility study by Embecosm (2014)
  • [https://github.com/StanfordPL/stoke STOKE] - A stochastic optimizer for x86-64 x86 assembly language.
  • [https://github.com/google/souper souper] superoptimizer for programs in the LLVM intermediate language.

See also

  • Dead code elimination

References

1. ^{{cite book |author-last1=Granlund |author-first1=Torbjörn |author-last2=Kenner |author-first2=Richard |title=Eliminating branches using a superoptimizer and the GNU C compiler |journal=ACM SIGPLAN Notices |date=July 1992 |volume=27 |issue=7 |pages=341–352 |doi=10.1145/143095.143146 |isbn=978-0897914758 |citeseerx=10.1.1.58.3509 }}
2. ^{{cite web |url=http://ftp.gnu.org/gnu/superopt/ |title=Index of /gnu/superopt |author= |date=1995-06-14 |website=GNU Operating System |publisher=Free Software Foundation, Inc. |access-date=2016-09-03}}
3. ^{{cite web |url=http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-171.html |title=Denali: a goal-directed superoptimizer |author-last1=Joshi |author-first1=Rajeev |author-last2=Nelson |author-first2=Greg |author-last3=Randall |author-first3=Keith |date=2001-07-30 |department=Compaq Systems Research Center |website=HP Labs |publisher=Hewlett-Packard Co. |access-date=2016-09-02}}
4. ^{{cite book |author-last1=Brain |author-first1=Martin |author-last2=Crick |author-first2=Tom |author-last3=De Vos |author-first3=Marina |author-last4=Fitch |author-first4=John |editor-last1=Etalle |editor-first1=Sandro |editor-last2=Truszczyński |editor-first2=Mirosław |title=Logic Programming |publisher=Springer-Verlag, Berlin / Heidelberg |date=2006-08-17 |pages=270–284 |chapter=TOAST: Applying Answer Set Programming to Superoptimisation |isbn=978-3-540-36636-2}}
5. ^{{cite web |url=http://krr.cs.bath.ac.uk/index.php/TOAST |title=TOAST – KRRwiki |author= |date=2007-08-07 |department=Department of Computer Science, Mathematical Foundations Group |website=Knowledge Representation and Reasoning (KRR) group |publisher=University of Bath |access-date=2016-09-03 |deadurl=bot: unknown |archiveurl=https://web.archive.org/web/20121128143632/http://krr.cs.bath.ac.uk/index.php/TOAST |archivedate=2012-11-28 |df= }}
6. ^{{cite web |url=http://theory.stanford.edu/~sbansal/pubs/asplos06.pdf |title=Automatic Generation of Peephole Superoptimizers |author-last1=Bansal |author-first1=Sorav |author-last2=Aiken |author-first2=Alex |date=2006-10-21 |website=Stanford University |publisher=Computer Systems Lab, Stanford University |access-date=2016-09-02}}
7. ^{{cite web |url=http://www.cse.iitd.ernet.in/~sbansal/pubs/asplos06.pdf |title=Binary Translation Using Peephole Superoptimizers |author-last1=Bansal |author-first1=Sorav |author-last2=Aiken |author-first2=Alex |date=2006-10-25 |website=Department of Computer Science |publisher=Indian Institute of Technology, Delhi |access-date=2016-10-17}}
8. ^{{cite web |url=https://sites.google.com/site/danielserpell/picmicrocontrollersuperoptimizer |title=SuperOptimizer for Microchip's PIC microcontrollers |author-last=Serpell |author-first=Daniel |date=2003 |website=Google Sites |access-date=2016-09-06}}
9. ^{{cite web |url=http://freecode.com/projects/picsuperoprimizer/ |title=PIC Microcontroller SuperOptimizer |author-last=Serpell |author-first=Daniel |date=2003-06-21 |website=Freecode |publisher=Slashdot Media |access-date=2016-09-06}}
10. ^{{cite web |url=https://github.com/twhume/superoptimiser |title=Clojure program to exhaustively search for optimal Java programs |author-last=Hume |author-first=Tom |date=2012-08-21 |website=GitHub |publisher=GitHub, Inc. |access-date=2016-09-06}}
(Also: ACM SIGPLAN Notices, Vol. 22 #10, IEEE Computer Society Press #87CH2440-6, October 1987)[1][2][3][4][5][6][7][8][9][10]
}}

1 : Compiler optimizations

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/20 9:25:46