Fixes are available
November 2012 Update for XL Fortran for Blue Gene/Q, V14.1
February 2013 Update for XL Fortran for Blue Gene/Q, V14.1
May 2013 Update for XL Fortran for Blue Gene/Q, V14.1
XL Fortran for Blue Gene/Q Fix Pack 5 (August 2013 Update) for 14.1
XL Fortran for Blue Gene/Q Fix Pack 6 (November 2013 Update) for 14.1
XL Fortran for Blue Gene/Q Fix Pack 7 (February 2014 Update) for 14.1
XL Fortran for Blue Gene/Q Fix Pack 8 (May 2014 Update) for 14.1
Closed as program error.
When the OMP_SCHEDULE env variable is set, there exists a couple of 2 for each thread for the following test case. But when the OMP_SCHEDULE is unset and omp_set_schedule() is used, we don't see a couple of 2 per thread. ===== COMPILE COMMAND: xlf95_r -c -q64 -qsmp=omp:noopt -o helloworld.o helloworld.f95 ===== TESTCASE: $ cat helloworld.f95 PROGRAM helloworld use omp_lib IMPLICIT NONE INTEGER :: i, foo, ompmodifier integer(kind=omp_sched_kind) :: ompsched CHARACTER (LEN=16) :: ENVDATA !$OMP parallel PRINT *,'thread ',omp_get_thread_num(),' of ',omp_get_num_threads() !$OMP end parallel foo = 0 !$OMP parallel CALL GETENV('OMP_SCHEDULE', VALUE=ENVDATA) PRINT *,'thread ',omp_get_thread_num(),' has env ', envdata call omp_set_schedule(omp_sched_static,2) call omp_get_schedule(ompsched,ompmodifier) PRINT *,'thread ',omp_get_thread_num(),' has schedule ', ompsched,' ', ompmodifier !$OMP do private(i) reduction(+:foo) schedule(runtime) DO i=1,6 foo = foo + i PRINT *,'thread ',omp_get_thread_num(),' has item ', i END DO !$OMP end do !$OMP end parallel END PROGRAM helloworld $ ===== ACTUAL OUTPUT: $export OMP_NUM_THREADS=2 $./helloworld thread 0 of 2 thread 1 of 2 thread 0 has env thread 0 has schedule 1 2 thread 1 has env thread 1 has schedule 1 2 thread 1 has item 4 thread 1 has item 5 thread 1 has item 6 thread 0 has item 1 thread 0 has item 2 thread 0 has item 3 $ ===== EXPECTED OUTPUT: Should give the same output as when OMP_SCHEDULE env variable is set to "static,2" as shown below because the program internally calls omp_get_schedule(omp_sched_static,2) $export OMP_NUM_THREADS=2 $export OMP_SCHEDULE=static,2 $./helloworld thread 0 of 2 thread 1 of 2 thread 0 has env static,2 thread 0 has schedule 1 2 thread 1 has env static,2 thread 1 has schedule 1 2 thread 1 has item 3 thread 1 has item 4 thread 0 has item 1 thread 0 has item 2 thread 0 has item 5 thread 0 has item 6 $
USERS AFFECTED: Any OpenMP users that wish to change the runtime schedule of loops while the program is running is affected by this issue. PROBLEM DESCRIPTION: The omp_set_schedule call is effectively being ignored by the SMP Runtime. This means that users cannot dynamically change the schedule of runtime scheduled loops, as described in the OpenMP specification.
The runtime is currently recording the values for the schedule and the modifier, as specified in the omp_set_schedule call. However, when it sets up the chunks for the parallel loop, it is not using the overwritten values. Instead it is using the default value provided in the OMP_SCHEDULE environment variable. This has been fixed.
Reported component name
XL FORTRAN FOR
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
XL FORTRAN FOR
Fixed component ID
Applicable component levels
RE10 PSN IV20901