[LLVMdev] Google SOC - Idea

Scott Fortmann-Roe scottfr at gmail.com
Mon Mar 19 17:53:14 PDT 2007


Hi,

Here is a rough draft of the application -- a FORTRAN front-end to
LLVM. In accordance with the summer of code specifications it is split
into two portions: the abstract which describes the project, and the
details description which describes me and how I plan to complete the
project.

It's a little long, (but about half the max length the application
directions specify). Would someone be willing to read it in full
(Chris?, Kenneth?) and see if the project as specified would really be
useful to LLVM and something you guys would support?

I will submit the application on the 23rd of March, so if anyone would
like to offer feedback or suggest changes to the direction of the
project, please email them to me before then.

Cheers,
Scott

ABSTRACT
----------------

The purpose of this project is to develop a FORTRAN front-end to the
Low Level Virtual Machine (LLVM) compiler infrastructure. LLVM is a
mature collection of tools which provide a powerful resource for
language developers and end-user programmers. LLVM consists of roughly
three components. The first is a front-end to a language (such as C,
C++, or virtually any other) that parsers the language and converts it
into LLVM's Intermediate Representation (IR). The LLVM IR is a
language- and target- independent representation. The next component
of LLVM is a collection of powerful optimization routines that operate
on the IR. The final module of LLVM is a backend that can compile
optimized code to a number of platforms including x86 and PowerPC, can
emit an optimized C representation of the original program, or use a
Just-In-Time compiler to interpret the program on a variety of
platforms.

To claim FORTRAN is mature is an understatement. In use for over 50
years, FORTRAN is utilized in a wide variety of legacy code bases.
While younger and flashier languages get all the press, FORTAN still
enjoys wide usage in many scientific fields and other
businesses—especially when legacy code is involved.

The implementation of a FORTAN front end would benefit both the
FORTRAN user-base and the LLMV project. The scientific uses of
FORTRAN—along with its other applications—are often heavily involved
simulations and calculations that are very resource demanding and
could greatly benefit from LLVM's powerful optimization mechanisms.
The LLVM project will, of course, benefit from having another
front-end language and the resulting larger "market" available that
can utilize LLVM. Additionally, the LLVM optimization team will have
another case study to explore the effectiveness of its optimization
routines. Especially the development of mixed-language optimization
routines involving FORTAN and one or more other language may be
explored and implemented.

Deliverables for this project are:
* FORTRAN front-end to LLVM
* Documentation and tools for using the front-end

DETAILED DESCRIPTION
----------------------------

The reader should refer to the abstract for a description of the goals
of this project and their justifications. This section is devoted to
the applicant's experience, interests, qualifications, and plan for
completing the project.

* Personal Background

I am a Junior, Environmental Engineering and Economics double major at
Swarthmore College and do not come from a traditional Computer Science
background. My story is the standard "taught himself to program at
twelve, no time for stuffy computer science courses" narrative. My
programming ideology is one of problem solving: I encounter a problem
in my life and solve it using whatever tools or resources are needed
to do so. To this end, I have dabbled in a wide range of fields from
databases, to statistical analysis, to GUI applications, to web
applications, and more. Examples of this work are an anti-censorship,
in-browser web-browser (it's ridiculous, I know, but darn useful)
[http://palary.com] and Longhand a calculator program for OS X
[http://longhand.palary.com]. I have also worked for a number of
clients developing GUI applications, data analysis applications, and
web applications.

I became interested in the area of language development as a result of
a desire for better tools to deal with the environmental modeling and
economical modeling issues that I came into contact with in my
studies. It seemed to me like these areas could benefit greatly from
domain specific languages that were tailored to their specific needs
(such as built in units in the environmental modeling case). I am
currently working toward developing such a language for my Senior
Thesis here at Swarthmore.

* Motivation

To gain the background to carry out the complicated task of developing
a domain specific modeling language, I have since wiggled my way
around the pre-requisites and enrolled in an upper-level compiler
course here at Swarthmore. Additionally, I have actively immersed
myself in the field. In this immersion I came across the LLVM project
and I believe that its IR would be an excellent target for the
language I eventually create.  LLVM is, of course, a complex tool and
I wish to gain much more familiarity with it.

This is my primary motivation for working on a FORTRAN front-end:
gaining experience and background. I am here to learn, and if my
learning allows both the LLVM community and the FORTRAN community to
receive an excellent tool, as it assuredly will, so much the better.

* The Plan

I will possess roughly three-months this summer to work on the
front-end, and I am very confident that it will be completed on time
(I am actually thinking that I could do much more in that period, but
I learned long ago not to stick my head out on thing like this :).

I am not as familiar with the technologies involved as I would like
to, so my planning is necessarily imprecise. My rough plan proceeds as
follows:

=====
- 2 weeks – Become familiar with the technologies: LLVM, FORTAN (I've
programmed a lot of languages, but never that), and GCC's FORTAN
implementation. Do not engage in any direct work on the projects but
gain experience with the tools. Ascertain what previous work has been
accomplished towards developing a FORTRAN front-end.

- 4 weeks – Build the FORTRAN front-end.

- 2 weeks – Smooth things out, unit tests, etc…

- 1 week – Documentation, make sure that the front-end can be
maintained by someone else.

- 3 weeks – "Shit Happens"
=====

I plan on first attempting to implement the FORTRAN front-end by
co-opting the GCC FORTRAN parser. If that fails, I will build a
front-end using ANTLR [http://antlr.org] a parser generator with which
I am familiar and for which a FORTRAN grammar is already available
(targeting an obsolete version of ANTLR, but it should not be too
difficult to update).

* In Short

I'm psyched :)

I am confident that this is a very manageable project, I will complete
it on time, and I will learn a great deal in the process of
implementing it.



On 3/19/07, Scott Fortmann-Roe <scottfr at gmail.com> wrote:
> Getting the front end for Fortran finished is definitely something I
> would be interested in working on. I will draft up a little proposal
> and send it out to this list.
>
> -Scott
>
> On 3/19/07, Kenneth Hoste <kenneth.hoste at ugent.be> wrote:
> > Hi Scott,
> >
> > On 18 Mar 2007, at 04:22, Scott Fortmann-Roe wrote:
> >
> > > Hi,
> > >
> > > I noticed that LLVM had signed up as a mentoring organization for
> > > Google's summer of code. LLVM looks like an exciting project that
> > > overlaps some of my interests.
> > >
> > > I would be interested in developing an additional front end for a
> > > language it does not currently support (I'm open to what language). I
> > > do not know much about what this entails in regards to what LLVM
> > > requires from its front ends. But I have experience with the ANTLR
> > > parser generator that looks like it could be used to generate such a
> > > front end.
> > >
> >
> > Recently, there has been work done on a Fortran frontend.
> > Unfortunately, it was abandonded because of the switch the LLVM team
> > is currently making to a new bytecode format and, afaik, a new GCC
> > version in the near future. The rub is that the gfortran part of GCC
> > 4.0 isn't really mature, but the ones in 4.1 and the upcoming 4.2 are.
> >
> > I think getting a Fortran frontend working will highly benefit the
> > relevance of LLVM for researchers. Quite a few of the SPEC CPU2000
> > and CPU2006 benchmarks are fully or partially written in Fortran, and
> > the SPEC benchmarks remain by far the most important benchmarks used
> > in computer architecture and compiler-related research. Allowing all
> > of the SPEC CPU200x benchmarks to compile using LLVM will vastly
> > increase it's use imho.
> >
> > greetings,
> >
> > Kenneth
> >
> > > Are you folks interested in this?
> > >
> > > If so, please let me know ASAP and I'll put together an application.
> > >
> > > -Scott
> > > _______________________________________________
> > > LLVM Developers mailing list
> > > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
> > --
> >
> > Statistics are like a bikini. What they reveal is suggestive, but
> > what they conceal is vital (Aaron Levenstein)
> >
> > Kenneth Hoste
> > ELIS - Ghent University
> > kenneth.hoste at elis.ugent.be
> > http://www.elis.ugent.be/~kehoste
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>
>
> --
> Scott Fortmann-Roe
> 500 College Ave
> Swarthmore, Pa 19081
> (510) 866-5296
>


-- 
Scott Fortmann-Roe
500 College Ave
Swarthmore, Pa 19081
(510) 866-5296




More information about the llvm-dev mailing list