This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran 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: gomp - equivalence for threadprivate data


Tobias Burnus wrote:
> Tim,
> 
> Tim Prince wrote:
>> We do use ifort and pgf90 to build other applications which
>> violate OpenMP standard in this respect.
> Can you give a list/example for widely supported OpenMP violating
> directives? One could then think of adding support for those in GCC. I
> have to admit I do not have much knowledge about OpenMP - and none with
> regards to common OpenMP extensions.
> 
> In any case, using
>    !$omp threadprivate(/GCPARM/, PACUTS)
> failed here not only with gfortran but also with ifort (9.1 and 11),
> pathf95 and sunf95; though it compiles with openf95 and with pgf95.
> 
> Tobias
I've attached a cut-down example of the way a well-known legacy
application violates OpenMP standard.
c
      subroutine strainx(x,volo,v,lft,llt,volf,vlim)
c
c
      include 'nlqparm'
      common/aux33loc/ix1(nlq),ix2(nlq),ix3(nlq),ix4(nlq),ix5(nlq),
     1             ix6(nlq),ix7(nlq),ix8(nlq),mxt(nlq)
c
      dimension x(3,*),v(3,*),volo(nlq),volf(*),vlim(*)
      dimension ixx(nlq,8),posn(nlq,8,3),posv(nlq,8,3)
      equivalence (ixx(1,1),ix1(1)),(posn(1,1,1),x1(1))
     &  ,(posv(1,1,1),vx1(1))
c
c   Gather xJ,yJ,zJ(J=1,8)
c$omp thread private (/aux33loc/)
      do node=1,8
      do i=lft,llt
      posn(i,node,1)=x(1,ixx(i,node))
      posn(i,node,2)=x(2,ixx(i,node))
      posn(i,node,3)=x(3,ixx(i,node))
      enddo
      enddo
c
      return
      end
      integer nlq
      parameter (nlq=544)
      integer nnlq,lq9,lq0,lq1
      common/newnlq/nnlq,lq9,lq0,lq1

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