Adve, Vikram Sadanand via llvm-dev
2019-Sep-11 15:25 UTC
[llvm-dev] Google’s TensorFlow team would like to contribute MLIR to the LLVM Foundation
FWIW, I think this could be a very positive step for LLVM and the community.
Most of the discussion has been about the details (documentation, in-tree vs.
out-of-tree, etc.), but I think there are key bigger picture reasons:
1. Obviously, ML languages and frameworks are becoming widespread and a
number of teams are investing resources into compilers for them. Having a
successful LLVM project that provides good infrastructure for these compilers
would be valuable. While the TensorFlow compiler may (or may not) remain a
Google project, having a core infrastructure available to the wider community
should be super valuable.
2. Related point to #1: ML models and even core data types and approaches are
evolving rapidly, so there is a lot of research happening on the underlying
system infrastructure, from hardware to compilers to languages. If MLIR can
become the infrastructure of choice for these research projects (like LLVM did
for the scalar and vector compiler world 15 years ago), that would be a big win.
3. As Hal said, the LLVM infrastructure has not provided explicit support for
high-level analyses and transformations, e.g., loop restructuring,
multidimensional arrays, etc. Having a good infrastructure to support these
will make a number of languages and hardware targets easier to implement /
target.
--Vikram Adve
+ Donald B. Gillies Professor of Computer Science, University of Illinois at
Urbana-Champaign
+ Scheduling: Kimberly Baker – kabaker at illinois.edu<mailto:kabaker at
illinois.edu>
+ Skype: vikramsadve || Zoom: https://illinois.zoom.us/j/2173900467
+ Home page: http://vikram.cs.illinois.edu<http://vikram.cs.illinois.edu/>
+ Center for Digital Agriculture:
https://digitalag.illinois.edu<https://digitalag.illinois.edu/>
From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of via
llvm-dev <llvm-dev at lists.llvm.org>
Reply-To: "llvm-dev at lists.llvm.org" <llvm-dev at
lists.llvm.org>, "llvm-dev-request at lists.llvm.org"
<llvm-dev-request at lists.llvm.org>
Date: Monday, September 9, 2019 at 1:58 PM
To: "llvm-dev at lists.llvm.org" <llvm-dev at lists.llvm.org>
Subject: llvm-dev Digest, Vol 183, Issue 22
Date: Mon, 9 Sep 2019 17:46:34 +0000
From: "Finkel, Hal J. via llvm-dev" <llvm-dev at
lists.llvm.org<mailto:llvm-dev at lists.llvm.org>>
To: Chris Lattner <clattner at google.com<mailto:clattner at
google.com>>, llvm-dev
<llvm-dev at lists.llvm.org<mailto:llvm-dev at
lists.llvm.org>>
Cc: Reid Tatge <tatge at google.com<mailto:tatge at google.com>>,
Mehdi Amini <aminim at google.com<mailto:aminim at google.com>>,
Tatiana Shpeisman <shpeisman at
google.com<mailto:shpeisman at google.com>>
Subject: Re: [llvm-dev] Google’s TensorFlow team would like to
contribute MLIR to the LLVM Foundation
Message-ID: <7611fea3-ba64-f587-ca64-fbdf49055a04 at
anl.gov<mailto:7611fea3-ba64-f587-ca64-fbdf49055a04 at anl.gov>>
Content-Type: text/plain; charset="utf-8"
Hi, Chris, et al.,
I support adding MLIR as an LLVM subproject. Here are my thoughts:
1. MLIR uses LLVM. LLVM is one of the MLIR dialects, MLIR is compiler
infrastructure, and it fits as a natural part of our ecosystem.
2. As a community, we have a lot of different LLVM frontends, many of which have
their own IRs on which higher-level transformations are performed. We don't
currently offer much, in terms of infrastructure, to support the development of
these pre-LLVM transformations. MLIR provides a base on which many of these
kinds of implementations can be constructed, and I believe that will add value
to the overall ecosystem.
3. As a specific example of the above, the current development of the new Flang
compiler depends on MLIR. Flang is becoming a subproject of LLVM and MLIR should
be part of LLVM.
4. The MLIR project has developed capabilities, such as for the analysis of
multidimensional loops, that can be moved into LLVM and used by both LLVM- and
MLIR-level transformations. As we work to improve LLVM's capabilities in
loop optimizations, leveraging continuing work to improve MLIR's loop
capabilities in LLVM as well will benefit many of us.
5. As a community, we have been moving toward increasing support for
heterogeneous computing and accelerators (and given industry trends, I expect
this to continue), and MLIR can facilitate that support in many cases (although
I expect we'll see further enhancements in the core LLVM libraries as well).
That all having been said, I think that it's going to be very important to
develop some documentation on how a frontend author looking to use LLVM backend
technology, and a developer looking to implement different kinds of
functionality, might reasonably choose whether to target or enhance MLIR
components, LLVM components, or both. I expect that this kind of advice will
evolve over time, but I'm sure we'll need it sooner rather than later.
Thanks again,
Hal
On 9/9/19 10:30 AM, Chris Lattner via llvm-dev wrote:
Hi all,
The TensorFlow team at Google has been leading the charge to build a new set of
compiler infrastructure, known as the MLIR
project<https://github.com/tensorflow/mlir>. The initial focus has been
on machine learning infrastructure, high performance accelerators, heterogeneous
compute, and HPC-style computations. That said, the implementation and design
of this infrastructure is state of the art, is not specific to these
applications, and is already being adopted (e.g.) by the Flang
compiler<https://llvm.org/devmtg/2019-10/talk-abstracts.html#tech19>. If
you are interested in learning more about MLIR and the technical design, I’d
encourage you to look at the MLIR Keynote and Tutorial at the last LLVM
Developer Meeting<http://llvm.org/devmtg/2019-04/>.
MLIR is already open source on
GitHub<https://medium.com/tensorflow/mlir-a-new-intermediate-representation-and-compiler-framework-beba999ed18d>,
and includes a significant amount of code in two repositories. “MLIR Core” is
located in github/tensorflow/mlir<https://github.com/tensorflow/mlir>,
including an application independent IR, the code generation infrastructure,
common graph transformation infrastructure, declarative operation definition and
rewrite infrastructure, polyhedral transformations etc. The primary TensorFlow
repository at
github/tensorflow/tensorflow<https://github.com/tensorflow/tensorflow/>
contains TensorFlow-specific functionality built using MLIR Core infrastructure.
In discussions with a large number of industry
partners<https://blog.google/technology/ai/mlir-accelerating-ai-open-source-infrastructure/>,
we’ve achieved consensus that it would be best to build a shared ML compiler
infrastructure under a common umbrella with well known neutral governance. As
such, we’d like to propose that MLIR Core join the non-profit LLVM Foundation as
a new subproject! We plan to follow the LLVM Developer
Policy<http://llvm.org/docs/DeveloperPolicy.html>, and have been following
an LLVM-style development process from the beginning - including all relevant
coding and testing styles, and we build on core LLVM infrastructure pervasively.
We think that MLIR is a nice complement to existing LLVM functionality,
providing common infrastructure for higher level optimization and transformation
problems, and dovetails naturally with LLVM IR optimizations and code
generation. Please let us know if you have any thoughts, questions, or
concerns!
-Chris
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org<mailto:llvm-dev at
lists.llvm.org><mailto:llvm-dev at lists.llvm.org>
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20190909/cfd721f3/attachment-0001.html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20190911/c8b80181/attachment.html>