On 09/15/2010 08:54 AM, Arnaud Charlet wrote:
Given the current limitations of Gimple, another area to focus on could be
task parallelism (rather than data parallelism). In that case a language
like [Google] Go (via GCC) might make a better talking point than C or
Fortran.
An even better starting point would be Ada which has built-in multi-tasking
constructs.
Arno
Hi everybody,
At the last GROW workshop in Pisa, I presented Gomet, an extension to
GCC which (among other things) performs GIMPLE-to-C translation for
parallelization purpose.
http://ctuning.org/dissemination/grow10-02.pdf
The paper is out of date now with respect to the progress made in Gomet
this year, but you may find some information in there anyway.
It is definitely possible to achieve such translation, and the
information available in the middle-end are sufficient.
If the input source code is C, then the biggest required transformation
is to adapt the SSA form and lower PHI nodes.
Additional glitches (coming from floating point types, array and type
sizes in pointer arithmetics, includes) can be overcome.
If the input source code is not C, additional work is required to map
specific language constructs to C. In Gomet, a subset of Fortran and C++
is supported for free. I did not try Ada, Go or other input languages.
Regards,
N. BENOIT