Re: what is a parallelizing compiler? etc

bear@sonic.net
20 Apr 2003 17:51:44 -0400

          From comp.compilers

Related articles
what is a parallelizing compiler? etc hzmonte@hotmail.com (2003-04-15)
Re: what is a parallelizing compiler? etc bear@sonic.net (2003-04-20)
| List of all articles for this month |

From: bear@sonic.net
Newsgroups: comp.compilers
Date: 20 Apr 2003 17:51:44 -0400
Organization: ...disorganized...
References: 03-04-049
Keywords: parallel
Posted-Date: 20 Apr 2003 17:51:43 EDT

hzmonte wrote:
>
> I am a novice. what is a parallelizing compiler? Is it limited to a
> compiler that gets a sequentail program as an input and produce code
> that explore parallelism for either a multiprocessor or a single
> processor that has multiple functional units?


I think you've got the right idea. A parallelizing compiler takes an
input language and attempts to parallelize the process described in it
as much as possible. For example, if two procedures are both purely
functional (don't have side effects outside their own scope and return
results that depend completely on their arguments) then you can call
them in parallel using different CPU's or execution units rather than
calling one after the other.


> That is, a HPF or OpenMP compiler would not be called a
> parallelizing compiler because the parallelism in the program is
> explicitly provided in the programming language constructs like
> forall or compiler directives, rather than automatically found by
> the compiler itself?


Interpretations vary. Even those compilers will recognize "sequences"
of operations that can be parallelized, beyond the explicit
parallelism of the languages' semantics. So a lot of people would
refer to them as "parallelizing".


> I would divide optimizing compilers into two categories:
> parallelizing compilers that explores parallelization and
> locality-optimizing compilers which explore local memory/cache
> locality by re-ordering instructions so that contiguous instructions
> access the same cache line, for example. The latter do not
> necessarily parallelize instructions. Is this a fair
> classification?


Each of these are fair distinctions to make about compilers, but
they're orthogonal, and not strictly opposed. A compiler can do both,
and where they conflict, different options give different tradeoffs.
A compiler can do neither, and still make optimizations.


Bear


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.