This was last updated in January 2019. It may be out of date.
If you want me to update it or have any questions, please contact me
by email at: clattner@nondot.org.
Chris Lattner
clattner@nondot.org
http://nondot.org/sabre
US Citizen, Ph.D. Computer Science
My overall objective is to improve large software systems through the
development of novel techniques as well as the application of known
engineering principles. I am a proven technical leader, who likes to grapple
with hard engineering problems that most people assume are impossible to solve. I
enjoy leading by
example and getting my hands dirty in code. I have worked in many spaces, including
things as diverse as low level machine code optimization, compiler
optimization, programming language design, IDE features, built the Swift
Playgrounds iPad app, and ran a team at Tesla applying a diverse range
of tech in the autonomous car space (including machine learning, computer
vision, sensors and non-vision perception, robotics planning and control, mapping,
cloud infrastructure, embedded systems, and simulation), and have built and managed
an array of AI-related teams in Google Brain.
I am the founder and chief architect of the open source LLVM Compiler
Infrastructure project, and serve on the board of directors of the LLVM Foundation.
LLVM has
grown to include a broad range of compiler, debugger, and runtime library
technologies. Assembled out of this technology are things like the Clang compiler, the LLDB debugger, the Clang Static Analyzer, and
other low-level tools.
LLVM is widely used for academic research
projects, has been adopted for commercial use by several companies,
and has a broad and growing
developer base. For more information, please see the LLVM web
page: http://llvm.org/.
I am also the founder of the Swift Programming
Language, which is open source at Swift.org and GitHub. Swift has been steadily and rapidly
growing ever since its launch, with over 100,000 apps in the Apple app stores,
is installed on millions of developer workstations, and is widely loved by people who use it.
Since its release as open source, Swift is rapidly growing in the server space and in
other domains outside of the traditional Apple developer community.
I am a strong leader and have excellent communication skills (both
verbal and written). I occasionally give talks explaining and evangelizing
TensorFlow, Swift, LLVM, Clang, and other technologies I have worked on. I also co-founded and contribute to the Swift Community Podcast in my spare time.
Resume Contents:
Notable awards:
-
Senior Director and Distinguished Engineer, TensorFlow Infrastructure and Technologies
August 2017 - current
The TensorFlow team is an incredibly dynamic and fast moving team, incorporating multiple cross-cutting concerns that I love to work on and with. This includes complex product issues, Open Source infrastructure, deep technical challenges, new hardware platforms, and a race with the rest of the industry. At the time of this writing (Jan 2019) I'm driving three main projects:
TensorFlow Accelerator Support and Compiler Infrastructure: I lead teams responsible for TensorFlow CPU, GPU and TPU ("Tensor Processing Units") support, including the XLA compiler team, and TensorFlow graph transformations.
Swift for TensorFlow: Swift for TensorFlow rethinks machine learning development by opening the programming language to extension and change - allowing us to solve old problems in new ways. This project includes a combination of compiler, runtime, and programming language design and implementation work. I imagined, advocated for, coded the initial prototype and many of the subsystems after that; recruited, hired and trained an exceptional engineering team; we drove it to an open source launch and are continuing to build out and iterate on infrastructure. We are now intentionally maintaining a low profile as we are building out infrastructure, but aim to start pushing for it in the first half of 2019. If you'd like to participate or follow along, please join our community.
MLIR: A New Compiler Infrastructure for Machine Learning:
I am driving a (still in stealth mode) project to build key compiler and runtime infrastructure underlying TensorFlow and its support for a very wide range of high performance accelerators. This project is driven by the increased generality of new hardware and programming models, as well as the need to enable rapid bringup of new hardware - sometimes with wildly different capabilities and target markets. This is a large scale project pushing the boundaries of fundamental compiler technology - we are aware of and build on key concepts from existing systems, but are innovating in all areas of compiler architecture and design. We expect to announce and open-source this project when the time is right.
Incidentally, I'm actively hiring a for a large number of engineer, manager, and tech lead positions (up to Director / Principle Engineer level) for the above projects - if you are experienced and interested, please get in touch with me.
-
VP Autopilot Software
January 30 - June 20, 2017
When I joined Tesla, it was in the midst of a hardware transition from
"Hardware 1" Autopilot (based primarily on MobileEye for vision processing)
to "Hardware 2", which uses an in-house designed TeslaVision stack. The
team was facing many tough challenges given the nature of the transition.
My primary contributions over these fast five months were:
- We evolved Autopilot for HW2 from its first early release (which had few
capabilities and was limited to 45mph on highways) to effectively parity with HW1, and
surpassing it in some ways (e.g. silky
smooth control).
- This required building and shipping numerous features for HW2, including: support for local roads, Parallel Autopark, High Speed Autosteer, Summon, Lane Departure Warning, Automatic Lane Change, Low Speed AEB, Full Speed Autosteer, Pedal Misapplication Mitigation, Auto High Beams, Side Collision Avoidance, Full Speed AEB, Perpendicular Autopark, and 'silky smooth' performance.
- This was done by shipping a total of 7 major feature releases, as well as
numerous minor releases to support factory, service, and other narrow
markets.
- One of Tesla's huge advantages in the autonomous driving space is that it
has tens of thousands of cars already on the road. We built infrastructure to take
advantage of this, allowing the collection of image and video data from this fleet, as well as building big data infrastructure in the cloud to process and use it.
- I defined and drove the feature roadmap, drove the technical architecture
for future features, and managed the implementation for the
next exciting features to come.
- I advocated for and drove a major rewrite of the deep net
architecture in the vision stack, leading to significantly better precision,
recall, and inference performance.
- I ended up growing the Autopilot Software team by over 50%. I personally interviewed most of the accepted candidates.
- I improved internal infrastructure and processes that I
cannot go into detail about.
- I was closely involved with others in the broader Autopilot program,
including future hardware support, legal, homologation, regulatory,
marketing, etc.
Overall I learned a lot, worked hard, met a lot of great people, and
had a lot of fun. I'm still a firm believer in Tesla, its mission, and the
exceptional Autopilot team: I wish them well.
- Apple: Developer Tools Department
Senior Director and Architect, Developer Tools Department
January 2013 - January 2017
In January 2013, I took over management and leadership of the entire Developer
Tools department at Apple (~200 people). In addition to languages (Swift
and Objective-C), compilers and low-level tools, I took on responsibility for the
Xcode IDE, Instruments performance analysis tool, Apple Java releases, and a
variety of internal tools.
In this time period, my team shipped a number of major Xcode releases, including Xcode 4.6, 5.x, 6.x, 7.x, and 8.x, each with major feature enhancements.
Some of my more notable contributions include:
- ARM64: Over a 3 year span, I drove definition, bringup and implementation
work of the ARM64 (aka Aarch64) compiler toolchain - the first production quality
compiler for this architecture in the world - which shipped in Xcode 5. This
enabled the iPhone 5s, which shocked the world with its 64-bit support and superb
performance. In addition to
compiler work, I contributed to the design of a new Objective-C runtime object
model for the architecture, and I personally contributed
the "TBI" feature to ARM, which was incorporated in the Aarch64 architecture.
- iPhone GPU Compiler: we implemented a completely new LLVM-based runtime GPU
shader compiler. This started shipping in iOS7 to support the iPhone 5s - which
featured a VLIW PowerVR Rogue GPU
derivative, and has been extended to support later iPhone hardware as it comes out.
Compared to the vendor compiler it replaced, this GPU compiler produces code
that runs slightly faster, and takes much less compile time to generate it.
- Xcode 5 was a major release, notable for me in that it was the first
release with a completely LLVM-based low-level toolchain (Clang, LLDB, etc) - it
dropped the last support for GCC and GDB. This transition
was largely driven by the ARM64 architecture transition.
- Swift: The most prominent feature of Xcode 6 was Swift, a
new programming language that I had been personally driving since 2010. In
addition to the language design and implementation, I drove much of the
compiler architecture (e.g. the SIL high-level IR), the REPL and Playgrounds
feature designs, drove and coordinated the rest of the team to implement full
Xcode and documentation support for a language that was still rapidly evolving.
We managed to keep extremely tight secrecy until a great launch at WWDC 2014.
- I was the primary proponent for the
Official Swift Blog and wrote many of the posts.
- I drove Swift Open Source to happen, and was
extensively involved defining exactly what that meant.
- I was one of the few core people who drove Swift Playgrounds for iPad, including conception,
design, implementation, and iteration.
- I was a member of Apple's senior executive leadership team, and drove a number of internal
things that I can't talk about.
- Apple: Developer Tools Group
Director and Architect, Low-Level Tools
September 2011 - January 2013
This timeframe has included numerous technical and team achievements
across a wide range of domains. For example:
- Apple shipped the Mac OS X 10.8 and iOS 6 releases, and they were
built with Clang - llvm-gcc is obsolete, and GCC is long gone.
- We invested major effort into compiler implementation and tuning for
the custom Apple CPU design known as the "Apple A6". The
exceptional CPU performance of the iPhone 5 was a result of a joint effort
between the Apple silicon and LLVM teams.
- I personally drove LLDB to production quality and to become the default
debugger in Xcode.
- I drove the new "Objective-C
Literal Syntax" language extensions, making many common
situations in Objective-C much more syntactically elegant.
- We shipped Xcode
4.3, 4.4, and 4.5 releases, and I was a key part of the high level
feature planning and decision processes that defined the features and
shaped the releases.
- Apple: Developer Tools Group
Senior Manager and Architect, Low-Level Tools
June 2010 - September 2011
I managed the teams responsible for compilers, the LLDB debugger,
Objective-C and C++ runtimes, assembler, linker, dynamic loader, etc. I
am continuing my work improving the Apple developer tools, and continue to
contribute daily to the open source LLVM technologies. During this time
period my team switched Mac OS/X Lion and iOS5 to build with llvm-gcc and
clang (off of GCC 4.2) and oversaw the final release of Xcode 4.0 in March
(as well as subsequent updates).
Xcode 4.2 was a specific achievement in that it is the first release where
all of its compilers are LLVM-based (GCC 4.2 is no longer included).
Xcode 4.2 also includes the "Automatic
Reference Counting (ARC) Objective-C language feature (see also
wikipedia).
ARC has revolutionized Objective-C programming by automating memory
management without the runtime overhead of a garbage collector. I personally
defined and drove this feature late in the schedule of iOS5 and Lion. This
is notable for the short schedule for the project, the extensive
cross-functional work required, and the extensive backwards compatibility
issues that had to be addressed (making it a very technically complex
problem).
- Apple: Developer Tools Group
Senior Manager of Compilers and Low-Level Tools, Compiler Architect
September 2009 - June 2010
My work in this time period culminated in the release of the Xcode 4 preview
at WWDC, which included a preview release of Clang C++ support, a new C++ Standard Library, a much faster and
memory efficient system linker, a new X86
assembler (which is integrated into the clang compiler, providing faster
compile times), and countless smaller improvements throughout the toolchain.
Xcode 4 itself now features deep integration of the Clang parser for code
completion, syntax highlighting, indexing, live warning and error messages,
and the new 'Fix-It' feature in which the compiler informs the UI how to
automatically corrects small errors. LLVM-GCC is the default compiler in
Xcode 4.
The Xcode 4 preview also includes the first public release of LLDB to which I served as a
consultant and contributed directly to turning it into an open source
project.
- Apple: Developer Tools Group
Manager of Compilers and Low-Level Tools, Compiler Architect
July 2008 - September 2009
In this time period, I was a second level manager running the teams responsible for
Clang,
LLVM, GCC,
and other parts of the Apple toolchain (assembler, linker, etc). I directly
managed the Clang team, contributed daily to both the Clang and LLVM projects,
and continued in my role as compiler architect and lead on the Open Source
LLVM/Clang projects.
During this period my team brought Clang 1.0 to production quality as a
brand new C and Objective-C compiler for X86-32 and X86-64. We also
productized and shipped the Xcode static analyzer, a new compiler-rt library
(which replaced libgcc in Snow Leopard) and many enhancements to existing
components in the operating system.
- Apple: Developer Tools Group
LLVM Compiler Group Manager and Compiler Architect
December 2006 - July 2008
In this time period, my group expanded use of LLVM within Apple, supported
new clients, built new features, and extended LLVM in many ways.
We shipped llvm-gcc 4.2 in the Xcode 3.1 and major improvements for it in the
Xcode 3.1.1 release.
In addition to llvm-gcc, much of the work during this time was focused on
Mac OS 10.6 development. I made major contributions to design and
implementation of the "Blocks" language feature as well as to the architecture and design of
the language and compiler aspects of the OpenCL GPGPU technology.
Finally, during this period I architected and started implementation of a
suite of front-end technologies based on LLVM, named "Clang".
- Apple Computer Inc: Developer Tools Group
Senior Compiler Engineer and Tech Lead
June 2005 - December 2006
I drove LLVM productization, features and applications at Apple.
LLVM link-time
optimization support is now integrated into the Apple
system linker, and LLVM is used by the Apple
OpenGL group for several different purposes. My main contributions during
this time was a new llvm-gcc4 front-end, significant improvements to the X86
and PowerPC backends, a wide range of optimization improvements and new
optimizers, significant improvement to the target-independent code
generator, and leadership for the rest of the team.
Graduate School Work
-
University of Illinois at Urbana Champaign
Research Assistant
Fall 2000 - Spring 2005
I worked on numerous projects at UIUC, the most important being LLVM and Data Structure
Analysis (DSA). At Illinois, I designed and built most of the fundamental
aspects of LLVM, establishing the architecture for things to come and building most
of the scalar, loop and interprocedural optimizers. I also built most of the
target-independent code generator, X86 backend, JIT, llvm-gcc3 front-end, and
much more. Finally, I wrote many papers.
-
Microsoft Research: Programmer Productivity Research Center
Research Intern
Summer 2004
I worked on the Microsoft Phoenix compiler infrastructure, building an
experimental bridge between the Microsoft compiler and the LLVM compiler
(which allowed LLVM to compile and run .NET code).
In the process, I identified and fixed numerous bugs in the (still in
early development) Microsoft compiler.
IBM NUMA-Q / Sequent Computer Systems:
-
Operating Systems Group
Software Engineer Contractor
May '00 - Aug '00
I virtualized the Linux Kernel to run as a user-level application under
the Dynix/PTX operating system. This provided 100% compatibility
with existing Linux binaries, but this project was never productized.
-
Compilers & Tools Group
Software Engineer Contractor
May '99 - Dec '99
I was involved with the 4.5 release of Sequent's PTX OS, which added
kernel threads. I was primarily involved porting the Java Virtual Machine
from user-level threads to native threads, but also debugged many
kernel issues in the pthreads implementation. I also added thread awareness
to the system debugger.
-
Operating Systems Group
Software Engineer Intern
Jan '99 - Apr '99
I worked 16 hrs/wk developing an online remote kernel debugger based
on GDB.
-
Compilers & Tools Group
Software Engineer Intern
May-Aug, Dec '98
My primary work was to port Sun's Java Virtual Machine to the
Dynix/PTX OS. This involved work in both C & Java, in systems as
varied as user-level threads, garbage collection, and asynchronous
I/O.
University of Illinois,
Urbana-Champaign - Urbana, Illinois - GPA: 4.0
University of Portland -
Portland, Oregon - GPA: 3.9
- B.S. Computer Science: Fall 1996 - Spring 2000
- "Concurrency with Chris Lattner", discussing my proposed concurrency model for Swift 6
Swift Unwrapped Podcast, September 4, 2017
- "WWDC 2017 Swift Panel"
Realm WWDC Panel, June 8, 2017.
- "Interview: My personal backstory"
SwiftCoders Podcast, Episode 37, January 23, 2017.
- "Interview: Swift history and design" (transcript)
Accidental Tech Podcast, Episode 205, January 19, 2017.
- "Swift: Opportunities for Language and Compiler Research"
IBM PL Day 2016, Yorktown Heights, NY, December 2016.
- "Swift 3 Introduction, Platform State of the Union" - Section starts at 16:30
2016 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2016.
- "What's New in Swift 3" - Middle third of the talk
2016 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2016.
- "Keynote: Swift & Xcode Playgrounds Demo"
IBM Interconnect 2016, Las Vegas, NV, February 2016.
- "Swift's High-Level IR: A Case Study of Complementing LLVM IR with Language-Specific Optimization - second half of talk
2015 LLVM Developer's Meeting, San Jose, CA, November 2015.
- Swift 2 Introduction, Platform State of the Union - Section starts at 56:40
2015 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2015.
- What's new in Swift 2 - First half of talk
2015 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2015.
- "Apple Keynote, Swift Launch Demo - Swift Launch, starts at 103:50 my demo starts at 107:15
2014 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2014.
- "LLVM - The Early
Days - first half of a talk
2013 LLVM Developer's Meeting, San Francisco, CA, November 2013.
- "LLVM and Clang - Advancing Compilers
and Tools
Opening Keynote, 2013 Central and Eastern European Software Engineering Conference in Russia (CEE-SECR 2013),
Moscow, Russia, October 2013.
Selected as the best invited talk by conference attendees.
- "What's New in Xcode 5
2013 Apple World Wide Developer Conference (WWDC), San Francisco, CA, June 2013.
- "Developer Tools
Kickoff" (shared talk)
2012 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2012.
- "Increasing Industry Impact of Compiler
Optimization Research"
Opening Keynote, 2012 International Symposium on Code Generation and Optimization (CGO'12), San Jose, CA,
April 2012.
- "LLVM and
Clang: Advancing Compiler Technology
Keynote, Free and Open Source Developers' European Meeting (FOSDEM'11), Brussels, Belgium, February 2011.
- "What's New in the
LLVM Compiler" (shared talk)
2010 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2010.
- "State of Clang" (shared
talk) and several other pieces of the meeting, such as the introduction,
open discussion forum, etc.
LLVM Developer Meeting, Cupertino, CA, Oct 2009.
- "Developer Tools State of the Union" (shared talk)
2009 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2009.
- "Compiler State of the Union" (shared talk)
2009 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2009.
- "Introduction
to the LLVM Compiler System"
Plenary Talk, ACAT 2008: Advanced
Computing and Analysis Techniques in Physics Research, Erice,
Sicily, Italy, November 2008.
- "Compiler State of the Union" (shared talk)
2008 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2008.
- "LLVM Compiler In Depth" (shared talk)
2008 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2008.
- "LLVM and
Clang: Next Generation Compiler Technology"
BSDCan 2008, Ottawa, Canada,
May 16-17, 2008.
- "The
LLVM Compiler System"
2007 O'Reilly Open Source Convention, Portland, OR, July 2007.
- "LLVM
2.0 and Beyond!"
Google Tech Talk, Mountain View, CA, July 25, 2007.
- "Taking Advantage of Compiler Advances" (shared talk)
2007 Apple World Wide Developer Conference (WWDC), San Francisco, CA,
June 2007.
- "LLVM in OpenGL and for Dynamic
Languages" (and several others)
LLVM Developer Meeting, Cupertino, CA, May 2007.
- "The LLVM
Compiler System"
2007 Bossa Conference on Open Source, Mobile Internet and Multimedia,
Recife, Brazil, March 2007.
- "Introduction
to the LLVM Compiler Infrastructure"
2006 Itanium Conference and Expo, San Jose, California, April 2006.
Here are some of the more interesting things I've written:
- In 2011, I wrote a chapter on LLVM for "The Architecture of Open Source
Applications," a book on software design. It explains
traditional compiler design, what makes LLVM different, how
library-based design impacts applicability of the code, and how some simple
optimizations work.
- May 2011: I wrote a treatise about undefined behavior in C, describing how it works, why and why it is so problematic. I wrote this when working on Swift, and because I was tired of explaining the same old problems in C over and over.
Since joining industry, I rarely take time to write papers about my
work, preferring instead to focus on building new great things. That
said, LLVM is widely used as a basis for many current and past research
projects by other people.
- "Making
Context-sensitive Points-to Analysis with Heap Cloning
Practical For The Real World"
Chris Lattner, Andrew Lenharth, and Vikram Adve
PLDI 2007, San Diego, CA, June
2007
- "Automatic Pool Allocation: Improving Performance by Controlling Data
Structure Layout in the Heap"
Chris Lattner & Vikram Adve
PLDI 2005, Chicago, IL, June 2005.
Awarded PLDI 2005 Best Paper Award
- "Automatic
Pointer Compression for Linked Data Structures"
Chris Lattner & Vikram Adve
ACM SIGPLAN 2005 Workshop on Memory System Performance (MSP'05)
Chicago, IL, June 2005.
- "Memory Safety
Without Runtime Checks or Garbage Collection"
Dinakar Dhurjati, Sumant Kowshik, Vikram Adve & Chris Lattner
2005 Transactions in Embedded Computing Systems (TECS'05)
Journal Publication
- "The LLVM
Compiler Framework and Infrastructure Tutorial"
Chris Lattner & Vikram Adve
LCPC'04 Workshop on Compiler Research Infrastructures, West Lafayette,
Indiana, Sep. 2004.
- "LLVM: An
Aggressive Compilation Framework for Life-Long Program Analysis
and Transformation"
Chris Lattner & Vikram Adve
CGO 2004, San Jose, CA, March 2004.
Best Student Presenter Award
Test of Time
Award for the most influential paper of CGO 2004
(awarded at CGO 2014).
- "LLVA: A Low-level
Virtual Instruction Set Architecture"
Vikram Adve, Chris Lattner, Michael Brukman, Anand Shukla, & Brian
Gaeke
MICRO-36 2003, San Diego, CA, December 2003.
- "Memory
Safety Without Runtime Checks or Garbage Collection"
Dinakar Dhurjati, Sumant Kowshik, Vikram Adve, & Chris Lattner
Proc. Languages Compilers and Tools for Embedded Systems 2003 (LCTES 03),
San Diego, CA, June 2003.
- "Architecture
For a Next-Generation GCC"
Chris Lattner & Vikram Adve
First Annual GCC Developers' Summit, Ottawa, Canada, May 2003.
- "Automatic Pool Allocation for Disjoint Data Structures"
Chris Lattner & Vikram Adve
ACM SIGPLAN 2002 Workshop on Memory System Performance (MSP'02),
Berlin, Germany, June 2002.
- "Developing a Graphical Robotics Simulator"
Ming-Shu Hsu & Chris Lattner
IASTED International Conference, Modeling & Simulation (MS'99)
In addition to technical activities:
- I am married (to Tanya), have two kids (Zac and Riley), and three dog (Zoey, Copper, Annie).
- I co-founded and contribute to the Swift Community Podcast in my spare time.
- I enjoy woodworking, downhill skiing, swimming, and walking our dogs.
- I was a competitive fencer and was president of the University of
Illinois Classical Fencing club. I taught an introduction to fencing class in 2003-2004, with
a class of ~15 people.