module_sm.F
References to this file elsewhere.
1 !WRF:PACKAGE:OPENMP
2 !
3
4 MODULE module_sm
5
6 #ifdef _OPENMP
7
8 ! There are a few functions in the OpenMP library,
9 ! and to use them easily, we need to define the
10 ! return types of these functions.
11
12 INTEGER , EXTERNAL :: omp_get_num_threads , &
13 omp_get_max_threads , &
14 omp_get_thread_num , &
15 omp_get_num_procs
16
17 LOGICAL , EXTERNAL :: omp_in_parallel
18 #endif
19
20 CONTAINS
21
22 SUBROUTINE omp_info
23
24 #ifdef _OPENMP
25
26 IMPLICIT NONE
27
28 PRINT '(/A,/,A,/,A,I2/)','omp_get_num_threads:', &
29 'Number of threads currently in the team executing', &
30 'the parallel region = ',omp_get_num_threads()
31
32 PRINT '(A,/,A,/,A,I2/)', 'omp_get_max_threads:', &
33 'Maximum value that can be returned by the',&
34 'omp_get_num_threads function = ',omp_get_max_threads()
35
36 PRINT '(A,/,A,/,A,I2/)', 'omp_get_thread_num:', &
37 'Returns the thread number, within the team, between', &
38 '0 and omp_get_num_threads-1, inclusive = ',omp_get_thread_num()
39
40 PRINT '(A,/,A,/,A,I2/)', 'omp_get_num_procs:', &
41 'Returns the number of processors that are available', &
42 'to the program = ',omp_get_num_procs()
43
44 PRINT '(A,/,A,/,A,L7/)','omp_in_parallel:', &
45 'Returns .TRUE. if called with the dynamic extent of a region', &
46 'executing in parallel, and otherwise .FALSE. = ',omp_in_parallel()
47
48 #endif
49
50 END SUBROUTINE omp_info
51
52 SUBROUTINE init_module_sm
53 END SUBROUTINE init_module_sm
54
55 END MODULE module_sm