Unverified Commit 572b27d7 authored by Emmanuel Bertin's avatar Emmanuel Bertin Committed by GitHub
Browse files

Merge pull request #42 from astromatic/icx

Icx
parents 9689a1c4 cd937f43
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -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

@@ -118,6 +119,5 @@ path).
    options "--enable-threads --enable-float".

[4] The Linux versions of the Intel compiler and MKL (Math
    Kernel Library) are available for free to academic researchers,
    students, educators and open source contributors.
    Kernel Library) are now available for free on Intel's website.
+59 −21
Original line number Diff line number Diff line
@@ -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.25.3, [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)
@@ -53,6 +53,7 @@ sinclude(acx_atlas.m4)
sinclude(acx_openblas.m4)
sinclude(acx_fftw.m4)
sinclude(acx_mkl.m4)
sinclude(acx_cfitsio.m4)
sinclude(acx_prog_cc_optim.m4)
sinclude(acx_pthread.m4)
sinclude(acx_urbi_resolve_dir.m4)
@@ -79,24 +80,38 @@ AC_ARG_ENABLE(auto-flags,
	AC_MSG_RESULT([yes]),
	AC_MSG_RESULT([no]))

# Provide special option for the Linux Intel C compiler
AC_MSG_CHECKING([whether the INTEL compiler is enabled])
# 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 icc
# 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_icc="yes"
        CC="icc"
	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.
@@ -115,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_icc" = "yes"; then
if test "$enable_iccx" = "yes"; then
  AC_CHECK_HEADERS(mathimf.h)
fi

@@ -135,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 \
@@ -180,6 +193,24 @@ AC_ARG_WITH(openblas-incdir,
	[AS_HELP_STRING([--with-openblas-incdir=<OpenBLAS header dir>],
	[Provide an alternative path to the OpenBLAS header directory])])

# Provide special option for CFITSIO
AC_MSG_CHECKING([whether CFITSIO support should be disabled (default=enabled)])
AC_ARG_ENABLE(cfitsio,
	[AS_HELP_STRING([--disable-cfitsio],
	[Disable support for compressed FITS files through the CFITSIO library (default=enabled)])],
	if test "$enable_cfitsio" = "no"; then
	  AC_MSG_RESULT([yes])
	else
	  AC_MSG_RESULT([no])
	fi,
	AC_MSG_RESULT([no]))
AC_ARG_WITH(cfitsio-libdir,
	[AS_HELP_STRING([--with-cfitsio-libdir=<CFITSIO library path>],
	[Provide an alternative path to the CFITSIO library])])
AC_ARG_WITH(cfitsio-incdir,
	[AS_HELP_STRING([--with-cfitsio-incdir=<CFITSIO include dir>],
	[Provide an alternative path to the CFITSIO include directory])])

# Provide a special option for the default XSLT URL
with_xsl_url="file://"$(URBI_RESOLVE_DIR([$datadir]))"/$PACKAGE_TARNAME/$PACKAGE_TARNAME.xsl"
AC_ARG_WITH(xsl_url,
@@ -222,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]))

@@ -256,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 "
@@ -305,11 +333,21 @@ if test "$enable_model_fitting" != "no"; then
  fi
fi

########################## handle the CFITSIO library ########################
if test "$enable_cfitsio" != "no"; then
  ACX_CFITSIO($with_cfitsio_libdir, $with_cfitsio_incdir,
	[LIBS="$CFITSIO_LIBS $LIBS"]
	if test "$CFITSIO_WARN" != ""; then
	  AC_MSG_WARN([$CFITSIO_WARN])
	fi,
	AC_MSG_ERROR([$CFITSIO_ERROR Exiting.]))
fi

AM_CONDITIONAL(USE_MODEL, [test "$enable_model_fitting" != "no"])

# Compile with profiling option
if test "$enable_profiling" = "yes"; then
  if test "$enable_icc" = "yes"; then
  if test "$enable_iccx" = "yes"; then
    AM_CFLAGS="$AM_CFLAGS -pq"
  else
    AM_CFLAGS="$AM_CFLAGS -pg"
@@ -319,9 +357,9 @@ fi

# "Best" linking option
if test "$enable_best_link" = "yes"; then
  if test "$enable_icc" = "yes"; then
    AM_LDFLAGS="-static-intel -qopenmp-link static -shared-libgcc \
	-static-libtool-libs -no-intel-extensions -avoid-version $AM_LDFLAGS"
  if test "$enable_iccx" = "yes"; then
    AM_LDFLAGS="-static-intel -qopenmp-link=static -shared-libgcc \
	-static-libtool-libs -avoid-version $AM_LDFLAGS"
  else
    AM_LDFLAGS="-shared-libgcc -static-libtool-libs -avoid-version $AM_LDFLAGS"
  fi
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ ifeq ($(USE_BEST),1)
	dh_auto_configure -- --host=$(DEB_HOST_GNU_TYPE) \
			--build=$(DEB_BUILD_GNU_TYPE) \
			--prefix=/usr --mandir=\$${prefix}/share/man \
			--enable-icc --enable-mkl \
			--enable-icx --enable-mkl \
			--enable-auto-flags --enable-best-link \
			--with-release=$(PACKAGE_RELEASE)
else
+4 −4
Original line number Diff line number Diff line
@@ -67,9 +67,9 @@ author = u'E. Bertin'
# built documents.
#
# The short X.Y version.
version = '2.25.3'
version = '2.27.0'
# The full version, including alpha/beta/rc tags.
release = '2.25.3'
release = '2.27.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -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 = 'Fri Mar 11 2022'
today = 'Fri Sep 16 2022'
#
# Else, today_fmt is used as the format for a strftime call.
#
@@ -144,7 +144,7 @@ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# The name for this set of Sphinx documents.
# "<project> v<release> documentation" by default.
#
# html_title = u'SExtractor v2.25.3'
# html_title = u'SExtractor v2.27.0'

# A shorter title for the navigation bar.  Default is the same as html_title.
#

m4/acx_cfitsio.m4

0 → 100644
+115 −0
Original line number Diff line number Diff line
dnl
dnl				acx_cfitsio.m4
dnl
dnl Figure out if the CFITSIO library and header files are installed.
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl	This file part of:	AstrOmatic software
dnl
dnl	Copyright:		(C) 2013 Emmanuel Bertin -- IAP/CNRS/UPMC
dnl
dnl	License:		GNU General Public License
dnl
dnl	AstrOmatic software is free software: you can redistribute it and/or
dnl	modify it under the terms of the GNU General Public License as
dnl	published by the Free Software Foundation, either version 3 of the
dnl	License, or (at your option) any later version.
dnl	AstrOmatic software is distributed in the hope that it will be useful,
dnl	but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl	GNU General Public License for more details.
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:		27/02/2013
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
dnl @synopsis ACX_CFITSIO([CFITSIO_DIR, CFITSIO_INCDIR,
dnl                    [ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
dnl This macro figures out if the CFITSIO libraries and header
dnl files are installed.
dnl You may wish to use these variables in your default LIBS and CFLAGS:
dnl
dnl        LIBS="$CFITSIO_LIBS $LIBS"
dnl
dnl You may wish to use these variables in your default CFLAGS:
dnl
dnl        CFLAGS="$CFLAGS $CFITSIO_CFLAGS"
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if CFITSIO
dnl is found (HAVE_CFITSIO are defined first), and ACTION-IF-NOT-FOUND
dnl is a list of commands to run it if it is not found.

AC_DEFUN([ACX_CFITSIO], [
AC_REQUIRE([AC_CANONICAL_HOST])

dnl --------------------
dnl Search include files
dnl --------------------

acx_cfitsio_ok=no
if test x$2 = x; then
  AC_CHECK_HEADER(fitsio.h,[acx_cfitsio_ok=yes])
  if test x$acx_cfitsio_ok = xyes; then
    AC_DEFINE(CFITSIO_H, "fitsio.h", [CFITSIO header filename.])
  else
    AC_CHECK_HEADER(cfitsio/fitsio.h,[acx_cfitsio_ok=yes])
    if test x$acx_cfitsio_ok = xyes; then
      AC_DEFINE(CFITSIO_H, "cfitsio/fitsio.h", [CFITSIO header filename.])
    else
      CFITSIO_ERROR="CFITSIO include files not found at default location!"
    fi
  fi
else
  AC_CHECK_HEADER($2/fitsio.h,[acx_cfitsio_ok=yes])
  if test x$acx_cfitsio_ok = xyes; then
    AC_DEFINE_UNQUOTED(CFITSIO_H, "$2/fitsio.h", [CFITSIO header filename.])
  else
    CFITSIO_ERROR="CFITSIO include files not found in $2!"
  fi
fi

dnl --------------------
dnl Search library files
dnl --------------------

CFITSIO_LIBS=""
OLIBS="$LIBS"
LIBS=""

if test x$acx_cfitsio_ok = xyes; then
  if test x$1 = x; then
    AC_CHECK_LIB(cfitsio, ffopen, [acx_cfitsio_ok=yes], [acx_cfitsio_ok=no])
    if test x$acx_cfitsio_ok = xyes; then
      AC_DEFINE(HAVE_CFITSIO,1, [Define if you have the CFITSIO libraries and header files.])
      CFITSIO_LIBS="-lcfitsio"
    else
      CFITSIO_ERROR="CFITSIO library files not found at usual locations!"
    fi
  else
dnl -------------------------
dnl Specific libdir specified
dnl -------------------------
    AC_CHECK_LIB(cfitsio, ffopen, [acx_cfitsio_ok=yes], [acx_cfitsio_ok=no], [-L$1])
    if test x$acx_cfitsio_ok = xyes; then
      AC_DEFINE(HAVE_CFITSIO,1, [Define if you have the CFITSIO libraries and header files.])
        CFITSIO_LIBS="-L$1 -lcfitsio"
    else
      CFITSIO_ERROR="CFITSIO library files not found in $1!"
    fi
  fi
fi

LIBS="$OLIBS"
if test x$acx_cfitsio_ok = xyes; then
  AC_SUBST(CFITSIO_LIBS)
  $3
else
  AC_SUBST(CFITSIO_ERROR)
  $4
fi

])dnl ACX_CFITSIO
Loading