Chris Lattner's Homepage
- My résumé, talks and publications.
- I am @clattner_llvm on Twitter.
- I am lattner on GitHub.
- I am not a web designer.
Starting in January 2020, I lead the RISC-V Software and Platform Engineering teams at SiFive. We build a wide range of software for RISC-V as well as infrastructure that makes chip design faster, better and cheaper.
From August 2017 to January 2020, I built a number of incredibly cool things at Google in the TensorFlow team, and led the infrastructure efforts, including hardware support (CPU, GPU, TPU), low-level runtime, and language efforts. Details are in my Google Résumé.
In early 2017, I briefly ran the Tesla Autopilot team. We built a lot of
great things, but Tesla wasn't the right fit for me. Details are in my Tesla Résumé.
I worked for Apple from July 2005 to January 2017, holding a number of
different positions over the years (a partial history is available in Apple résumé). This included managing the Developer Tools department, which was responsible for Swift Playgrounds for the
iPad, Xcode, and Instruments,
as well as compilers, debuggers, and related tools.
MLIR Compiler Infrastructure
I created and built the MLIR Compiler Infrastructure
with a small-but-amazing team of compiler engineers at Google, starting from a whitepaper
in April 2018. The
TensorFlow product (and the machine learning domain in general) needs
compilers of many different kinds for a wide range of graph-level problems, accelerators
of all kinds, and a lot of 'glue' tools to tie everything together. Because
existing solutions existed, we took time to build a world-class system, getting the core
abstractions right, and investing in building great infrastructure and a team culture that
valued engineering excellence.
The MLIR project started as a scrappy but ambitious effort to reimagine how the entire stack worked,
and produced a really interesting and extremely novel approach to constructing compilers of
all kinds. The "MLIR" is often interpreted as being Machine Learning specific, but "MLIR"
stands for "Multi-Level Intermediate Representation". It is a profound approach
to compiler design, enabling a new generation of algorithms, approaches, and applications to many
related tooling technologies. It is
such a new approach that I believe it will take many years of further research and development for
the compiler community to digest the implications and adapt. Even I don't feel like I understand
all the ramifications, and need to reevaluate the long-held beliefs I've built up over the last
two decades of compiler work I've done.
MLIR is still young, but it has already seen widespread adoption and deployment within
Google for many projects (including production deployments saving large amount of compute
and OpEx dollars), it is a core part of several critical subsystems of TensorFlow, and is
widely accepted and adopted across the industry in too many companies and projects to enumerate.
MLIR is now part of the LLVM umbrella project as a new subproject (building on the strong and
widely accepted reputation of the LLVM community), and is used by other LLVM projects like the
Flang Fortran compiler.
To learn more about MLIR, I'd recommend reading the canonical paper published about it. Please consider citing it if you build interesting work using it.
I started work on the Swift
in July of 2010. I implemented much of the basic language
structure, with only a few people knowing of its existence. A few other amazing
people started contributing in earnest late in 2011, and it became a major focus
for the Apple Developer Tools group in July 2013.
The Swift language is the product
of tireless effort from a team of language experts, documentation gurus, compiler
optimization ninjas, and an
incredibly important internal dogfooding group who provided feedback to help
refine and battle-test ideas. Of course, it also greatly benefited from the
experiences hard-won by many other languages in the field, drawing ideas from
Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others
to list. As of Dec 2015, Swift is open source, and you can participate at http://swift.org.
The Xcode Playgrounds feature and REPL were a personal passion of mine, to
make programming more interactive and approachable. The Xcode and LLDB teams
have done a phenomenal job turning crazy ideas into something truly great.
Playgrounds were heavily influenced by Bret Victor's ideas,
by Light Table and by
many other interactive systems.
I hope that by making programming more approachable and fun, we'll appeal
to the next generation of programmers and to help redefine how Computer
Science is taught. Swift
Playgrounds for the iPad is a crucial piece of this: it uses real Swift
code to teach programming fundamentals, while also providing a full featured
native iOS development experience that allows access to almost the entire
iOS SDK. Swift Playgrounds includes high production value assets and
curriculum produced by Apple, which provides a appealing and safe introduction
to programming concepts for everyone.
To learn more about the origins of Swift, I recommend listening/reading my thoughts in two interviews: January 2017 on the ATP Podcast (transcript) and January 2019 on the Swift Community Podcast (transcript excerpt).
LLVM and Clang
I am the original author of the LLVM
Compiler Infrastructure, an open source umbrella project that
includes all sorts of toolchain related technology: compilers, debuggers,
JIT systems, optimizers, static analysis systems, etc. I started both
LLVM and Clang and am still the individual with the most commits.
Of course, as the community has grown, my contribution is being dwarfed by those from a
wide range of really amazing folks.
LLVM has enjoyed broad industry success - being widely used in commercial
products - as well supporting hundreds of academic papers. LLVM is now overseen
by the LLVM Foundation a 501(c)(3)
nonprofit, and I serve on its Board of Directors. For its contribution to the software
industry, LLVM has been recognized with the ACM Software System Award.
For more details about LLVM, see:
- LLVM Compiler Infrastructure home page
- Invited talks about LLVM and other topics
- Random notes on LLVM - Unofficial notes and thoughts
on LLVM extensions and todo items.
Talks, Writing, and Publications
Over the years, I've written a lot of
things, delivered many public talks,
and have published some academic papers.