The cr.yp.to blog
Older (Access-J):
2015年02月18日: Follow-You Printing: How Equitrac's marketing department misrepresents and interferes with your work. #equitrac #followyouprinting #dilbert #officespaceprinter
Table of contents (Access-I for index page)
2025年10月05日: MODPOD: The collapse of IETF's protections for dissent. #ietf #objections #censorship #hybrids
2025年10月04日: NSA and IETF: Can an attacker simply purchase standardization of weakened cryptography? #pqcrypto #hybrids #nsa #ietf #antitrust
2024年08月03日: Clang vs. Clang: You're making Clang angry. You wouldn't like Clang when it's angry. #compilers #optimization #bugs #timing #security #codescans
2023年06月09日: Turbo Boost: How to perpetuate security problems. #overclocking #performancehype #power #timing #hertzbleed #riskmanagement #environment
2016年03月15日: Thomas Jefferson and Apple versus the FBI: Can the government censor how-to books? What if some of the readers are criminals? What if the books can be understood by a computer? An introduction to freedom of speech for software publishers. #censorship #firstamendment #instructions #software #encryption
2015年03月14日: The death of optimizing compilers: Abstract of my tutorial at ETAPS 2015. #etaps #compilers #cpuevolution #hotspots #optimization #domainspecific #returnofthejedi
2015年02月18日: Follow-You Printing: How Equitrac's marketing department misrepresents and interferes with your work. #equitrac #followyouprinting #dilbert #officespaceprinter
2014年06月02日: The Saber cluster: How we built a cluster capable of computing 3000000000000000000000 multiplications per year for just 50000 EUR. #nvidia #linux #howto
2015年03月14日: The death of optimizing compilers: Abstract of my tutorial at ETAPS 2015. #etaps #compilers #cpuevolution #hotspots #optimization #domainspecific #returnofthejedi
"ETAPS"
[home page]
[Wikipedia page]
is a conference federation,
the "European Joint Conferences on Theory and Practice of Software".
ETAPS 2015,
which combines
-
CC 2015 (24th International Conference on Compiler Construction),
-
ESOP 2015 (24th European Symposium on Programming),
-
FASE 2015 (18th International Conference on Fundamental Approaches to Software Engineering),
-
FoSSaCS 2015 (18th International Conference on Foundations of Software Science and Computation Structures),
-
POST 2015 (4th International Conference on Principles of Security and Trust),
and
-
TACAS 2015 (21st International Conference on Tools and Algorithms for the Construction and Analysis of Systems),
will be held next month in London.
I was invited to give one of two 90-minute tutorials at ETAPS 2015.
I decided to speak on "The death of optimizing compilers",
which perhaps wasn't exactly what the organizers wanted to hear.
Coincidentally,
the ETAPS 2015 web page ran out of space to hold my abstract
and had to compress the abstract to one paragraph,
so I'm posting the complete abstract here.
[2022年01月09日 update: Updated links above.]
Abstract:
In the ancient days,
computers were slow,
and compilers were stupid,
and the software engineer's solemn duty
was to manually squeeze every last cycle out of the software.
Today the situation is quite different,
but not in the direction one might expect.
Have computers become so fast that nobody cares about optimization any more?
Certainly not:
most users still spend time waiting for computers.
As computation has become cheaper,
users have correspondingly expanded the volume of data that they are handling,
and optimization remains a critical challenge
for the occasional "hot spots" in the code.
Most programmers today never touch these hot spots.
The reduced cost of computation
means that more and more code runs freezingly cold,
freeing up more and more programmers to ignore performance.
However, the hot spots still exist.
This tutorial will focus on
how these hot spots are handled in the real world.
Have compilers become so smart
that they automatically turn
clean high-level code for these hot spots into optimized code,
removing the need for humans to be optimization experts?
The reality, unfortunately,
is very much the opposite:
general-purpose "optimizing" compilers
are falling farther and farther behind
the actual capabilities of modern processors.
This tutorial is an introduction to
(1) what current and near-future processors are capable of;
(2) how modern high-speed software libraries actually work;
and
(3) the increasing dominance of domain-specific tools
to engineer high-speed software.
This tutorial is designed to be fully comprehensible
to audience members who are not optimization experts.
Version:
This is version 2022年01月09日 of the 20150314-optimizing.html web page.