Thread overview
[SAoC] Presentation - MLIR Support for LDC
Sep 16, 2019
Roberto Rosmaninho
Sep 16, 2019
Roberto Rosmaninho
Nov 06, 2019
Gishan Abeysinghe
Nov 20, 2019
Roberto Rosmaninho
September 16, 2019
Hi everyone,

My name is Roberto I'm in my second year of Computer Science and I will work on the project "MLIR Support for D". Here is a brief of what my project is about:

The Multi-Level Intermediate Representation (MLIR) is a project that aims to define a flexible and extensible intermediate representation (IR) that will unify the infrastructure required to perform high-performance machine learning models in TensorFlow and similar ML frameworks. Each level of MLIT is represented by a dialect and each dialect is consisted by a set of defined operations which makes the levels of optimizations more flexible than the usual source code, machine code and IR LLVM, which has its dialect on MLIR levels. Those dialects have their own optimizations that may not be available on other representations of the source code. The goal of this project is to provide LDC a new level of abstraction to support the integration of the MLIR into the D ecosystem. This project will lead to the incorporation of new optimizations into the D programming language that will benefit all users. The addition of new optimizations will be possible due to the levels of intermediate representation provided by the MLIR infrastructure. To complete these tasks, this project aims to create a D Dialect of MLIR, which will be closer to the D source code.

The full proposal of the project and the code that I can work can be found in the following GitHub repository: https://github.com/Robertorosmaninho/D-Dialect-for-MLIR

The Milestones for this project are described below:

   1. Compilation of D through the LLVM dialect of MLIR:
      -  Build and set up as the newest version available: LLVM (10.0.0svn), MLIR, LDC (1.17.0) and DMD (v2.087.1).
      -  A systematic review about D, LDC and MLIR source code.
      -  Model all core IR structures in LLVM: Instructions, Globals, Modules, etc.
      -  Traverse the AST of D to issue MLIR code.
      -  Run tests, fix bugs, write documentation.

   2. Build the D dialect:
      -  Implement D operations as D Dialect operations.
      -  Implement D operations as D Dialect operations.
      -  Refine D Dialect to support D specific constraints.
      -  Run tests, fix bugs, write documentation.

   3. Implement D specific optmizations and Use / Test the translation to other dialects:
      -  Expose instructions and operations to D.
      -  Implement GC2Stack and simpler D optimizations.
      -  Translate D Dialect into Affine, Vector, GPU, etc.
      -  Run tests, fix bugs, write documentation.
      -  Run some benchmarks to compare the performance of D and D + MLIR optimizations.

   4. Use D (compiled into MLIR) on ML Frameworks and analyze performance.


I will work on each milestone for a month finishing ever 15th day of the month, for example, the first milestone has to be achieved on October 15th an so on ...

I'll do an effort to write weekly updates here so the community can follow the development of my project. Any doubt, suggestion or tip is very welcome, just write in this topic and I will answer as soon as possible!

That's all for now, hopefully, next week I'll have some advances to tell you about!

Thanks for your attention,
Roberto Rosmaninho.
September 16, 2019
Edit:

On Monday, 16 September 2019 at 02:05:14 UTC, Roberto Rosmaninho wrote:
>    2. Build the D dialect:
>       -  Implement D operations as D Dialect operations.
>       -  Implement D operations as D Dialect operations.

 This second subtopic should be "Register D dialect as MLIR Dialect."
November 06, 2019
On Monday, 16 September 2019 at 02:05:14 UTC, Roberto Rosmaninho wrote:
> Hi everyone,
>
> My name is Roberto I'm in my second year of Computer Science and I will work on the project "MLIR Support for D". Here is a brief of what my project is about:
>
> [...]

I am Gishan Chaminga Abeysinghe from Sri Lanka. I am planning for the same kind of project as at first, I thought to build my own compiler, now I think it's better to make MLIR works for existing front-end. If you are okay we can work together on your project. my email is gishan.abeysinghe@gmail.com

Thank you
November 20, 2019
On Wednesday, 6 November 2019 at 05:53:18 UTC, Gishan Abeysinghe wrote:
> I am Gishan Chaminga Abeysinghe from Sri Lanka. I am planning for the same kind of project as at first, I thought to build my own compiler, now I think it's better to make MLIR works for existing front-end. If you are okay we can work together on your project. my email is gishan.abeysinghe@gmail.com
>
> Thank you

Hi Gishan, sorry for not answering before!
Definitely, using DMD as the front end to get MLIR code makes the problem much easier to solve. About working together, I'm totally comfortable working together with someone, the problem is that I don't think we can do it during project development at SAoC, but when the event is over, I would appreciate any help to maintain and improve the code so that the community can use the best and most reliable MLIR translation.

Regards,
Roberto Rosmaninho