Commit 30bc9700 authored by Emmanuel Bertin's avatar Emmanuel Bertin
Browse files

Added support for Intel's oneAPI compiler.

parent 97421455
......@@ -4,7 +4,7 @@ Installing the software
Hardware requirements
=====================
PSFEx runs in (ANSI) text-mode from a shell. A window system is
SExtractor runs in (ANSI) text-mode from a shell. A window system is
not necessary for basic operation.
When it comes to memory usage, the amount required by SExtractor depends
......@@ -75,18 +75,19 @@ locations:
$ ./configure
Compared to "gcc" and the librairies above, the combination of the
Intel compiler ("icc") and the MKL (Math Kernel Library) libraries
can give the SExtractor executable a significant boost in performance,
thanks to better vectorized code, and reduced memory usage. If "icc"
and the MKL (Math Kernel Library) are installed on your system [4],
you can take advantage of those using instead
Intel compiler ("icc" or "icx") and the MKL (Math Kernel Library)
libraries can give the SExtractor executable a significant boost in
performance, thanks to better vectorized code, and reduced memory
usage. If "icc" (or "icx") and the MKL (Math Kernel Library) are
installed on your system [4], you can take advantage of those using
instead
$ ./configure --enable-mkl
Additionally, if the SExtractor binary is to be run on a different
machine that does not have "icc" and the MKL (Math Kernel Library)
installed (e.g., a cluster computing node), you must configure a
partially statically linked executable using
machine that does not have "icc" (or "icx") and the MKL installed
(e.g., a cluster computing node), you must configure a partially
statically linked executable using
$ ./configure --enable-mkl --enable-auto-flags --enable-best-link
......
......@@ -22,7 +22,7 @@
# You should have received a copy of the GNU General Public License
# along with SExtractor. If not, see <http://www.gnu.org/licenses/>.
#
# Last modified: 11/03/2022
# Last modified: 16/09/2022
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -31,8 +31,8 @@ define([AC_CACHE_LOAD],)
define([AC_CACHE_SAVE],)
# This is your standard AstrOmatic source code...
AC_INIT(SExtractor, 2.27.0, [astromatic@astromatic.net],
sextractor, [http://astromatic.net/software/sextractor])
AC_INIT([SExtractor],[2.27.0],[astromatic@astromatic.iap.fr],
[sextractor],[http://astromatic.net/software/sextractor])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR(autoconf)
AC_CONFIG_SRCDIR(src/makeit.c)
......@@ -80,24 +80,38 @@ AC_ARG_ENABLE(auto-flags,
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special option for the Linux Intel C "classic" compiler
AC_MSG_CHECKING([whether the classic INTEL compiler is enabled])
AC_ARG_ENABLE(icc,
[AS_HELP_STRING([--enable-icc],
[Use the Intel compiler (default = no)])],
CC="icc"
enable_iccx="yes"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special option for the Linux Intel OneAPI C compiler
AC_MSG_CHECKING([whether the INTEL compiler is enabled])
AC_ARG_ENABLE(icx,
[AS_HELP_STRING([--enable-icx],
[Use the Intel compiler (default = no)])],
CC="icx"
enable_iccx="yes"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
# Provide special options for INTEL MKL
# We force the use of icx
# We use icc if available, if not Intel OneAPI's icx
# (we don't use AC_PROG_CC as it does not play nice
# in a conditional block)
AC_MSG_CHECKING([whether INTEL's MKL is enabled])
AC_ARG_ENABLE(mkl,
[AS_HELP_STRING([--enable-mkl],
[Use INTEL's MKL for solvers and FFTs (default = no)])],
enable_icx="yes"
CC="icx"
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([yes])
CC=""
[AC_CHECK_PROGS(CC, [icc icx cc])]
enable_iccx="yes",
AC_MSG_RESULT([no]))
# Checks for programs.
......@@ -116,11 +130,10 @@ AC_PROG_INSTALL
AC_CHECK_LIB(m, sin)
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h limits.h malloc.h stdlib.h string.h sys/mman.h \
sys/types.h unistd.h])
# Checks for INTEL math header files.
if test "$enable_icx" = "yes"; then
if test "$enable_iccx" = "yes"; then
AC_CHECK_HEADERS(mathimf.h)
fi
......@@ -136,7 +149,6 @@ AC_TYPE_UID_T
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MMAP
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_CHECK_FUNCS([atexit getenv gettimeofday isinf isnan logf memcpy memmove \
......@@ -241,7 +253,7 @@ use_pthreads="no"
AC_MSG_CHECKING([for profiler mode])
AC_ARG_ENABLE(profiling,
[AS_HELP_STRING([--enable-profiling],
[Enable special mode for profiling (default = no)])]
[Enable special mode for profiling (default = no)])],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no]))
......@@ -275,10 +287,7 @@ if test "$enable_model_fitting" != "no"; then
if test "$enable_mkl" = "yes"; then
convlibs="${srcdir}/wcs/libwcs_c.a,${srcdir}/levmar/liblevmar.a"
ACX_MKL($with_mkl_dir,,$enable_best_link,$convlibs)
if test "$MKL_WARN" == ""; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
if test "$MKL_WARN" != ""; then
AC_MSG_WARN([$MKL_WARN])
fi
AM_CFLAGS="$AM_CFLAGS $MKL_CFLAGS "
......@@ -338,7 +347,7 @@ AM_CONDITIONAL(USE_MODEL, [test "$enable_model_fitting" != "no"])
# Compile with profiling option
if test "$enable_profiling" = "yes"; then
if test "$enable_icx" = "yes"; then
if test "$enable_iccx" = "yes"; then
AM_CFLAGS="$AM_CFLAGS -pq"
else
AM_CFLAGS="$AM_CFLAGS -pg"
......@@ -348,7 +357,7 @@ fi
# "Best" linking option
if test "$enable_best_link" = "yes"; then
if test "$enable_icx" = "yes"; then
if test "$enable_iccx" = "yes"; then
AM_LDFLAGS="-static-intel -qopenmp-link=static -shared-libgcc \
-static-libtool-libs -avoid-version $AM_LDFLAGS"
else
......
......@@ -81,7 +81,7 @@ language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#
today = 'Wed Sep 07 2022'
today = 'Fri Sep 16 2022'
#
# Else, today_fmt is used as the format for a strftime call.
#
......
......@@ -7,7 +7,7 @@ dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl This file part of: AstrOmatic software
dnl
dnl Copyright: (C) 2003-2016 IAP/CNRS/UPMC
dnl Copyright: (C) 2003-2022 IAP/CNRS/SorbonneU
dnl
dnl License: GNU General Public License
dnl
......@@ -23,7 +23,7 @@ dnl You should have received a copy of the GNU General Public License
dnl along with AstrOmatic software.
dnl If not, see <http://www.gnu.org/licenses/>.
dnl
dnl Last modified: 16/03/2016
dnl Last modified: 15/09/2022
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
......@@ -73,11 +73,11 @@ dnl Set architecture flags
dnl ----------------------
dnl check if INTEL compiler is present
icc -V 2>&1 | grep -i "Intel" > /dev/null 2>&1 && flagicc=yes
$CC -V 2>&1 | grep -i "Intel" > /dev/null 2>&1 && flagicc=yes
dnl check if INTEL compiler uses x86_64 architecture
icc -V 2>&1 | grep -i "Intel(R) 64" > /dev/null 2>&1 && flag64=yes
$CC -V 2>&1 | grep -i "Intel(R) 64" > /dev/null 2>&1 && flag64=yes
dnl check if the platform is OSX
icc -dumpmachine 2>&1 | grep -i "darwin" > /dev/null 2>&1 && flagosx=yes
$CC -dumpmachine 2>&1 | grep -i "darwin" > /dev/null 2>&1 && flagosx=yes
dnl ----------------------
dnl Exit if INTEL compiler is not found
......
......@@ -7,7 +7,7 @@ dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl This file part of: AstrOmatic software
dnl
dnl Copyright: (C) 2002-2010 Emmanuel Bertin -- IAP/CNRS/UPMC
dnl Copyright: (C) 2002-2022 Emmanuel Bertin -- IAP/CNRS/SorbonneU
dnl (C) 2001 Steven G. Johnson (original version)
dnl
dnl Licenses: GPL (this version)
......@@ -25,7 +25,7 @@ dnl You should have received a copy of the GNU General Public License
dnl along with AstrOmatic software.
dnl If not, see <http://www.gnu.org/licenses/>.
dnl
dnl Last modified: 09/10/2010
dnl Last modified: 15/09/2022
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
......@@ -88,7 +88,7 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
AC_LINK_IFELSE([AC_LANG_CALL([], pthread_join)], acx_pthread_ok=yes)
AC_MSG_RESULT($acx_pthread_ok)
if test x"$acx_pthread_ok" = xno; then
PTHREAD_LIBS=""
......@@ -170,10 +170,10 @@ for flag in $acx_pthread_flags; do
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_TRY_LINK([#include <pthread.h>],
AC_LINK_IFELSE([AC_LANG_CALL([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ])],
[acx_pthread_ok=yes])
LIBS="$save_LIBS"
......@@ -199,12 +199,12 @@ if test "x$acx_pthread_ok" = xyes; then
# Detect AIX lossage: threads are created detached by default
# and the JOINABLE attribute has a nonstandard name (UNDETACHED).
AC_MSG_CHECKING([for joinable pthread attribute])
AC_TRY_LINK([#include <pthread.h>],
[int attr=PTHREAD_CREATE_JOINABLE;],
AC_LINK_IFELSE([AC_LANG_CALL([#include <pthread.h>],
[int attr=PTHREAD_CREATE_JOINABLE;])],
ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
if test x"$ok" = xunknown; then
AC_TRY_LINK([#include <pthread.h>],
[int attr=PTHREAD_CREATE_UNDETACHED;],
AC_LINK_IFELSE([AC_LANG_CALL([#include <pthread.h>],
[int attr=PTHREAD_CREATE_UNDETACHED;])],
ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
fi
if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
......
......@@ -7,7 +7,7 @@
#
# This file part of: SExtractor
#
# Copyright: (C) 2002-2020 IAP/CNRS/SorbonneU
# Copyright: (C) 2002-2022 IAP/CNRS/SorbonneU
#
# License: GNU General Public License
#
......@@ -22,7 +22,7 @@
# You should have received a copy of the GNU General Public License
# along with SExtractor. If not, see <http://www.gnu.org/licenses/>.
#
# Last modified: 02/01/2020
# Last modified: 15/09/2022
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -44,6 +44,7 @@ BuildRoot: %{_tmppath}/%{name}-buildroot
BuildRequires: pkgconfig
BuildRequires: fftw-devel >= 3.1
BuildRequires: atlas-devel >= 3.6.0
BuildRequires: cfitsio-devel >= 3.30
%description
Extract catalogs of sources from astronomical images
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment