forked from geodynamics/autoconf_cig
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcit_openmp.m4
56 lines (43 loc) · 1.29 KB
/
cit_openmp.m4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- Autoconf -*-
## ---------------------------- ##
## Autoconf macros for Fortran. ##
## ---------------------------- ##
# CIT_FC_OPENMP_MODULE(FC, FCFLAGS)
# -----------------------------------------------------
AC_DEFUN([CIT_FC_OPENMP_MODULE], [
AC_LANG_PUSH(Fortran)
cit_fc_save_fc=$FC
cit_fc_save_fcflags=$FCFLAGS
FC=$1
FCFLAGS="$FCFLAGS $2"
AC_MSG_CHECKING([whether OpenMP directives work])
#AC_COMPILE_IFELSE(_CIT_FC_TRIVIAL_OPENMP_PROGRAM, [
# AC_MSG_RESULT(yes)
#], [
# AC_MSG_RESULT(no)
# AC_MSG_FAILURE([cannot compile a trivial OpenMP program using $1])
#])
AC_LINK_IFELSE(_CIT_FC_TRIVIAL_OPENMP_PROGRAM, [
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
AC_MSG_FAILURE([cannot link a trivial OpenMP program using $1 with flags: $2])
])
FC=$cit_fc_save_fc
FCFLAGS=$cit_fc_save_fcflags
AC_LANG_POP(Fortran)
])dnl CIT_FC_OPENMP_MODULE
AC_DEFUN([_CIT_FC_TRIVIAL_OPENMP_PROGRAM], [
AC_LANG_PROGRAM([], [[
implicit none
integer OMP_get_thread_num
integer OMP_GET_MAX_THREADS
integer NUM_THREADS
integer thread_id
NUM_THREADS = OMP_GET_MAX_THREADS()
!$OMP PARALLEL DEFAULT(SHARED) PRIVATE(thread_id)
thread_id = OMP_get_thread_num()+1
!$OMP END PARALLEL
]])
])dnl _CIT_FC_TRIVIAL_OPENMP_PROGRAM
dnl end of file