forked from NanoComp/meep
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
openmp for near2far calculation (NanoComp#868)
* try openmp for near2far loop * add --with-openmp configure flag * use --with and not --enable * whoops need to add OPENMP_CXXFLAGS to CXXFLAGS * docs * typo
- Loading branch information
Showing
6 changed files
with
153 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
# =========================================================================== | ||
# https://www.gnu.org/software/autoconf-archive/ax_openmp.html | ||
# =========================================================================== | ||
# | ||
# SYNOPSIS | ||
# | ||
# AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) | ||
# | ||
# DESCRIPTION | ||
# | ||
# This macro tries to find out how to compile programs that use OpenMP a | ||
# standard API and set of compiler directives for parallel programming | ||
# (see http://www-unix.mcs/) | ||
# | ||
# On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS | ||
# output variable to the flag (e.g. -omp) used both to compile *and* link | ||
# OpenMP programs in the current language. | ||
# | ||
# NOTE: You are assumed to not only compile your program with these flags, | ||
# but also link it with them as well. | ||
# | ||
# If you want to compile everything with OpenMP, you should set: | ||
# | ||
# CFLAGS="$CFLAGS $OPENMP_CFLAGS" | ||
# #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" | ||
# #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS" | ||
# | ||
# (depending on the selected language). | ||
# | ||
# The user can override the default choice by setting the corresponding | ||
# environment variable (e.g. OPENMP_CFLAGS). | ||
# | ||
# ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is | ||
# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is | ||
# not found. If ACTION-IF-FOUND is not specified, the default action will | ||
# define HAVE_OPENMP. | ||
# | ||
# LICENSE | ||
# | ||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> | ||
# Copyright (c) 2015 John W. Peterson <jwpeterson@gmail.com> | ||
# Copyright (c) 2016 Nick R. Papior <nickpapior@gmail.com> | ||
# | ||
# This program is free software: you can redistribute it and/or modify it | ||
# under the terms of the GNU General Public License as published by the | ||
# Free Software Foundation, either version 3 of the License, or (at your | ||
# option) any later version. | ||
# | ||
# This program is distributed in the hope that it will be useful, but | ||
# WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | ||
# Public License for more details. | ||
# | ||
# You should have received a copy of the GNU General Public License along | ||
# with this program. If not, see <https://www.gnu.org/licenses/>. | ||
# | ||
# As a special exception, the respective Autoconf Macro's copyright owner | ||
# gives unlimited permission to copy, distribute and modify the configure | ||
# scripts that are the output of Autoconf when processing the Macro. You | ||
# need not follow the terms of the GNU General Public License when using | ||
# or distributing such scripts, even though portions of the text of the | ||
# Macro appear in them. The GNU General Public License (GPL) does govern | ||
# all other use of the material that constitutes the Autoconf Macro. | ||
# | ||
# This special exception to the GPL applies to versions of the Autoconf | ||
# Macro released by the Autoconf Archive. When you make and distribute a | ||
# modified version of the Autoconf Macro, you may extend this special | ||
# exception to the GPL to apply to your modified version as well. | ||
|
||
#serial 13 | ||
|
||
AC_DEFUN([AX_OPENMP], [ | ||
AC_PREREQ([2.69]) dnl for _AC_LANG_PREFIX | ||
AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS | ||
ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown | ||
# Flags to try: -fopenmp (gcc), -mp (SGI & PGI), | ||
# -qopenmp (icc>=15), -openmp (icc), | ||
# -xopenmp (Sun), -omp (Tru64), | ||
# -qsmp=omp (AIX), | ||
# none | ||
ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none" | ||
if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then | ||
ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags" | ||
fi | ||
for ax_openmp_flag in $ax_openmp_flags; do | ||
case $ax_openmp_flag in | ||
none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;; | ||
*) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;; | ||
esac | ||
AC_LINK_IFELSE([AC_LANG_SOURCE([[ | ||
@%:@include <omp.h> | ||
static void | ||
parallel_fill(int * data, int n) | ||
{ | ||
int i; | ||
@%:@pragma omp parallel for | ||
for (i = 0; i < n; ++i) | ||
data[i] = i; | ||
} | ||
int | ||
main() | ||
{ | ||
int arr[100000]; | ||
omp_set_num_threads(2); | ||
parallel_fill(arr, 100000); | ||
return 0; | ||
} | ||
]])],[ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break],[]) | ||
done | ||
[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS | ||
]) | ||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then | ||
m4_default([$2],:) | ||
else | ||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then | ||
OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp | ||
fi | ||
m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])]) | ||
fi | ||
])dnl AX_OPENMP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters