This is the mail archive of the gcc-bugs@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]

[Bug fortran/32468] New: PRESENCE OF SECTIONS W/ 1 SECTION CAUSES PARALLEL REGION TO HAVE 1 THREAD, NOT 4


Description:
This test case exhibits the problem that the presence of a SECTIONS directive
with only one SECTION inside of a PARALLEL region causes only one thread to be
created when omp_set_num_threads was previously called with 4 threads.  If
the directives internal to this PARALLEL region are commented out, 4 threads
are created and the program produces expected output.  The compiler used
was GNU gfortran.  The test case works as expected when compiled with PGI.

> gfortran -v
Using built-in specs.
Target: x86_64-suse-linux
Configured with: ../xt-gcc-4.2.0/configure --prefix=/opt/gcc/4.2.0/snos
--disable-nls --libdir=/opt/gcc/4.2.0/snos/lib --enable-languages=c,c++,fortran
--with-gxx-include-dir=/opt/gcc/4.2.0/snos/include/g++
--with-slibdir=/opt/gcc/4.2.0/snos/lib --with-system-zlib --enable-shared
--enable-__cxa_atexit x86_64-suse-linux
Thread model: posix
gcc version 4.2.0 20070514 (rpm:4)


> cat bug2831.f90
! Derived from OpenMP test omp1/F2_1_1_2_1c.f90
      use omp_lib
      implicit none
      integer, parameter :: NT = 4
      integer :: nth

!$    call omp_set_dynamic(.false.)
!$    call omp_set_num_threads(NT)
!$omp parallel default(none) shared(nth)
      print *, omp_get_thread_num(), omp_get_num_threads()
!$omp sections
!$omp section
      nth=omp_get_num_threads()
!$omp endsections
!$omp endparallel

      print *, 'nth=',nth,'  NT=',NT
      END

> diff bug2831.f90 bug2831a.f90
11,12d10
< !$omp sections
< !$omp section
14d11
< !$omp endsections

Incorrect output is produced:

> ftn -O0 -fopenmp -o x bug2831.f90
/opt/xt-pe/2.1/bin/snos64/ftn: INFO: linux target is being used
> aprun -n 1 ./x
           0           1
 nth=           1   NT=           4
Application 217361 resources: utime 0, stime 0

Correct output from program with sections/section directives removed:

> ftn -O0 -fopenmp -o xa bug2831a.f90
/opt/xt-pe/2.1/bin/snos64/ftn: INFO: linux target is being used
> aprun -n 1 ./xa
           0           4
           1           4
           3           4
           2           4
 nth=           4   NT=           4
Application 217362 resources: utime 0, stime 0


------
Note: ftn is an alias for:

/opt/gcc/4.2.0/bin/../snos/bin/gfortran -static -v
-I/opt/xt-mpt/2.1/mpich2-64/GP/include -I/opt/xt-mpt/2.1/mpich2-64/GP/include
-L/opt/xt-mpt/2.1/mpich2-64/GP/lib -I/opt/acml/3.6.1/gnu64/include
-I/opt/xt-libsci/10.1.0/gnu/snos64/include
-I/opt/xt-libsci/10.1.0/gnu/snos64/include/superlu
-I/opt/xt-mpt/2.1/sma/P/include -L/opt/acml/3.6.1/gnu64/lib
-L/opt/xt-libsci/10.1.0/gnu/snos64/lib -L/opt/xt-mpt/2.1/sma/P/lib -lmpichf90
-lsci -lacml -lsma -lmpichf90 -lmpich -lrt -D__CRAYXT_COMPUTE_LINUX_TARGET
-D__TARGET_LINUX__ -fno-second-underscore
-I/notbackedup/users/rsrel/rs64.DEV.070604.Mon/install/include
-I/opt/xt-catamount/2.1/catamount/linux/include -I/opt/xt-service/2.1/include
-L/notbackedup/users/rsrel/rs64.DEV.070604.Mon/install/lib/snos64
-L/opt/xt-pe/2.1/cnos/linux/64/lib -L/opt/xt-mpt/2.1/lib/snos64
-L/opt/xt-service/2.1/lib/snos64 -Wl,--start -lpct -lalpslli -lalpsutil
-lportals -lpthread -Wl,--end -lgfortranbegin -lgfortran -lm


-- 
           Summary: PRESENCE OF SECTIONS W/ 1 SECTION CAUSES PARALLEL REGION
                    TO HAVE 1 THREAD, NOT 4
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: longb at cray dot com
 GCC build triplet: x86_64-suse-linux
  GCC host triplet: x86_64-suse-linux
GCC target triplet: x86_64-suse-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32468


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