[Bug fortran/87622] coarray does not run in parallel

2018-10-17 Thread klein at cage dot ugent.be
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87622

--- Comment #5 from Andreas Klein  ---
On Wed, 17 Oct 2018, tkoenig at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87622
>
> --- Comment #2 from Thomas Koenig  ---
> Some more remarks: In a benchmark, it is best to actually fill the values of
> all read variables to something defined, for example with a call to
> random_number. Also, if you generate values which you do not use later, the
> compilet may decide to remove the calculation altogether. What works well for
> this somethinh like
>
> read (*,*) i,j
> print *, a(i,j)
>
Adding initialzation removes the effect.
There is still a 20% decresed performance, but that are plausible cache 
effects.

Sorry my minimal example was to minimal. I derived the mini example from a 
big parallel linear algebra package. Now I must go throgh all 
minimalization steps, but its possible that the original error has nothing 
to do with coarrays.

[Bug fortran/87622] coarray does not run in parallel

2018-10-17 Thread klein at cage dot ugent.be
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87622

--- Comment #4 from Andreas Klein  ---
On Wed, 17 Oct 2018, burnus at gcc dot gnu.org wrote:
>
> If "b" (and "a") are allocated in some slower memory part, it matters how one
> sums over the variables in the matmul loop.

I know that there are difference in speed. But a factor 2 is realy large 
and should not happen. I created the example as a minimal 
example. I observerd similar problems in almost every coarray program I 
have tried. The result is always that the use coarrays of brings not the 
desired speed up and is just a wast of resouces.

[Bug fortran/87622] New: coarray does not run in parallel

2018-10-16 Thread klein at cage dot ugent.be
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87622

Bug ID: 87622
   Summary: coarray does not run in parallel
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: klein at cage dot ugent.be
  Target Milestone: ---

I have a minimal co array program

program mini
implicit none
real, dimension(2500,2500),codimension[*] :: a,b
real, dimension(2500,2500) :: c

print *, "start"
!switch b and c and itworks as expected
a=matmul(b,c) !Wast time
print *, "end"
end program mini

There is no interaction between the images. Thus I expect a that running two
images on two cores is as fast as running 1 image on 1 core.

But there runtime doubles it seems that each image does the work of both
images.

Curiossly everything works as expected if I replacte matmul(b,c) by
matmul(c,b). The program runs twice as fast in this case.