Description: This test case tries to show that the following statement found in the OpenMP API Version 2.5 May 2005 on p.29 lines 21-24 is true:
"When a thread executing inside an active parallel region encounters a parallel construct, the new team which is created will consist of only the encountering thread, when any of the following conditions hold: * nested parallelism is disabled." > 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 bug2837.f90 ! Derived from OpenMP test omp1/F2_2_9g.f90 use omp_lib implicit none integer, parameter :: NT = 4 integer :: nThreads(NT) integer :: tmp = 0 !$ call omp_set_dynamic(.false.) !$ call omp_set_num_threads(NT) print *, 'omp_get_nested()=',omp_get_nested() !$omp parallel default(private) shared(nThreads) tmp = 1 !$omp parallel default(shared) !$omp atomic tmp = tmp + omp_get_thread_num() + 1 !$omp end parallel nThreads(omp_get_thread_num()+1) = tmp !$omp end parallel print *, nThreads END > ftn -O3 -fopenmp -o x bug2837.f90 > aprun -n 1 ./x omp_get_nested()= F 1 1 1 1 Application 4711 resources: utime 0, stime 0 Expected output (from PGI compilation): > ftn -o x -O3 -mp -Mconcur=nonuma bug2837.f90 bug2837.f90: > aprun -n 1 ./x Warning: omp_set_num_threads (4) greater than available cpus (1) omp_get_nested()= F 2 2 2 2 Application 4712 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: INCORRECT OUTPUT OBTAINED FROM NESTED PARALLELISM THAT IS SERIALIZED 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=32551