OpenMP-Examples/sources/Example_set_dynamic_nthrs.1f.f
2015-01-13 11:38:24 -08:00

36 lines
778 B
Fortran

! @@name: set_dynamic_nthrs.1f
! @@type: F-fixed
! @@compilable: yes
! @@linkable: no
! @@expect: success
SUBROUTINE DO_BY_16(X, IAM, IPOINTS)
REAL X(*)
INTEGER IAM, IPOINTS
END SUBROUTINE DO_BY_16
SUBROUTINE DYNTHREADS(X, NPOINTS)
INCLUDE "omp_lib.h" ! or USE OMP_LIB
INTEGER NPOINTS
REAL X(NPOINTS)
INTEGER IAM, IPOINTS
CALL OMP_SET_DYNAMIC(.FALSE.)
CALL OMP_SET_NUM_THREADS(16)
!$OMP PARALLEL SHARED(X,NPOINTS) PRIVATE(IAM, IPOINTS)
IF (OMP_GET_NUM_THREADS() .NE. 16) THEN
STOP
ENDIF
IAM = OMP_GET_THREAD_NUM()
IPOINTS = NPOINTS/16
CALL DO_BY_16(X,IAM,IPOINTS)
!$OMP END PARALLEL
END SUBROUTINE DYNTHREADS