logoalt Hacker News

Superoptimizer – A Look at the Smallest Program (1987) [pdf]

51 pointsby linggenlast Friday at 6:15 PM8 commentsview on HN

Comments

ashton314today at 8:28 PM

A (relatively) new way to create a super optimizer is to use an egraph: https://egraphs-good.github.io/

These are nifty data structures that can quickly search the space of equivalent programs.

gregdaniels421today at 5:00 PM

Same author did the synthesis kernel with Carl Pu, I think? The Synthesis kernel was genius, but relied on self modifying code, so can't work with modern chips well.

show 1 reply
smalltorchtoday at 6:27 PM

Interesting to compare and contrast the human brain in the frame of reference of this superoptimzer paper.

It constantly trys to do the most things with the least things. Take all the shortcuts to achieve the same outcome, often misconstrued with laziness, quality deficiency, or hard to understand.

For example, something as simple as timing may superoptimize and minimize instruction sets. Using one resource to do all the things needed at once versus calling the resource multiple times at different times shrinks the overall program a lot.

petercoopertoday at 6:33 PM

This has long been one of my favorite papers, if only for the opening example. When I walked through it, it was an eye opener to a different level of thinking about code, one that assembly and democoders are probably working in every day.

KentBecktoday at 5:10 PM

I love love love this paper. I wonder how a GPU would do with it?

seritoolstoday at 4:41 PM

(1987)