This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fortran's DO CONCURRENT - make use of it middle-end-wise


On Sun, Sep 4, 2011 at 10:47 AM, Tobias Burnus <burnus@net-b.de> wrote:
> Hi,
>
> Fortran 2008 has a do concurrent construct, where the programmer guarantees
> that the result is independent of the order; e.g.
> ?do concurrent (i = 1:10:2) ?! from, to, step/stride
> ? ? A(i) = sin(B(i))
> ?end do
> can be run as i = 1, 3, 5, 7, 9; in any permutation or in parallel.
>
> The plan is to translate it as normal loop; however, it would be useful if
> this non-order-dependence could be used by the middle end (general
> optimization or at least for -floop-parallelize-all /
> -ftree-parallelize-loops). Is there a way to tell the middle-end about this
> property?

Other than inserting OMP directives no, there is no way at the moment.
If middle-end arrays materialize you could translate the loop back to
array form.

Richard.

> Tobias
>
> PS: By default, do concurrent loops will run consecutively, but I was
> thinking of optionally using OpenMP parallelization for those by explicitly
> adding an OMP directive. The do-concurrent parsing/resolving patch is at
> http://gcc.gnu.org/ml/fortran/2011-09/msg00002.html. The tree-generating
> part still needs to be written, but should be simple (for the serial case).
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]