mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
36 lines
778 B
Fortran
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
|