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

Merge pull request #43 from astromatic/develop

Develop
parents 37680dba 572b27d7
......@@ -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.
......@@ -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: 23/09/2020
# 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 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.
......@@ -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_icc" = "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_icc" = "yes"; then
if test "$enable_iccx" = "yes"; then
AM_CFLAGS="$AM_CFLAGS -pq"
else
AM_CFLAGS="$AM_CFLAGS -pg"
......@@ -348,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
......
......@@ -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
......
......@@ -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 = 'Tue Sep 06 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-2013 Emmanuel Bertin -- IAP/CNRS/UPMC
dnl Copyright: (C) 2002-2022 Emmanuel Bertin -- IAP/CNRS/SorbonneU
dnl (C) 2002 Ville Lauriki (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: 13/03/2013
dnl Last modified: 07/09/2022
dnl
dnl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dnl
......@@ -60,14 +60,14 @@ EOF
if $CC -V 2>&1 | grep -i "Intel(R) 64" > /dev/null 2>&1 &&
$CC -c -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3 -axSSSE3,SSE4.1,SSE4.2,AVX,CORE-AVX2,CORE-AVX-I -no-prec-div -unroll"
prog_cc_optim_cv_flags="-O3 -axSSSE3,SSE4.1,SSE4.2,AVX,CORE-AVX2,CORE-AVX-I"
prog_ld_optim_cv_flags=""
dnl INTEL C 32bits compiler
elif $CC -V 2>&1 | grep -i "Intel(R)" > /dev/null 2>&1 &&
$CC -c -O conftest.c > /dev/null 2>&1 &&
test -f conftest.o; then
prog_cc_optim_cv_flags="-O3 -axSSE2,SSE3,SSE4.1,SSE4.2,AVX,CORE-AVX2,CORE-AVX-I -no-prec-div -unroll"
prog_cc_optim_cv_flags="-O3 -axSSE2,SSE3,SSE4.1,SSE4.2,AVX,CORE-AVX2,CORE-AVX-I"
prog_ld_optim_cv_flags=""
dnl GCC
......
......@@ -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
......
......@@ -7,7 +7,7 @@
*
* This file part of: SExtractor
*
* Copyright: (C) 1993-2015 Emmanuel Bertin -- IAP/CNRS/UPMC
* Copyright: (C) 1993-2022 Emmanuel Bertin -- 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: 11/03/2015
* Last modified: 07/09/2022
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
......@@ -167,7 +167,7 @@
#define QCALLOC(ptr, typ, nel) \
{if (!(ptr = (typ *)calloc((size_t)(nel),sizeof(typ)))) \
{ \
sprintf(gstr, #ptr " (" #nel "=%lld elements) " \
sprintf(gstr, #ptr " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE, "Could not allocate memory for ", gstr);\
......@@ -177,7 +177,7 @@
#define QMALLOC(ptr, typ, nel) \
{if (!(ptr = (typ *)malloc((size_t)(nel)*sizeof(typ)))) \
{ \
sprintf(gstr, #ptr " (" #nel "=%lld elements) " \
sprintf(gstr, #ptr " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE, "Could not allocate memory for ", gstr);\
......@@ -187,7 +187,7 @@
#define QMALLOC16(ptr, typ, nel) \
{if (posix_memalign((void **)&ptr, 16, (size_t)(nel)*sizeof(typ))) \
{ \
sprintf(gstr, #ptr " (" #nel "=%lld elements) " \
sprintf(gstr, #ptr " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE, "Could not allocate memory for ", gstr);\
......@@ -197,7 +197,7 @@
#define QREALLOC(ptr, typ, nel) \
{if (!(ptr = (typ *)realloc(ptr, (size_t)(nel)*sizeof(typ))))\
{ \
sprintf(gstr, #ptr " (" #nel "=%lld elements) " \
sprintf(gstr, #ptr " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE, "Could not allocate memory for ", gstr);\
......@@ -208,7 +208,7 @@
{if (ptrin) \
{if (!(ptrout = (typ *)malloc((size_t)(nel)*sizeof(typ)))) \
{ \
sprintf(gstr, #ptrout " (" #nel "=%lld elements) " \
sprintf(gstr, #ptrout " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE,"Could not allocate memory for ",gstr);\
......
......@@ -7,7 +7,7 @@
*
* This file part of: SExtractor
*
* Copyright: (C) 2007-2017 IAP/CNRS/UPMC
* Copyright: (C) 2007-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: 19/06/2017
* Last modified: 07/09/2022
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
......@@ -40,7 +40,7 @@
#define QFFTWF_MALLOC(ptr, typ, nel) \
{if (!(ptr = (typ *)fftwf_malloc((size_t)(nel)*sizeof(typ)))) \
{ \
sprintf(gstr, #ptr " (" #nel "=%lld elements) " \
sprintf(gstr, #ptr " (" #nel "=%zd elements) " \
"at line %d in module " __FILE__ " !", \
(size_t)(nel)*sizeof(typ), __LINE__); \
error(EXIT_FAILURE, "Could not allocate memory for ", gstr);\
......
......@@ -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: 12/07/2012
* Last modified: 07/09/2022
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
......@@ -49,7 +49,7 @@ INPUT Name of the ASCII file,
OUTPUT RETURN_OK if the file was found, RETURN_ERROR otherwise.
NOTES -.
AUTHOR E. Bertin (IAP)
VERSION 12/07/2012
VERSION 07/09/2022
***/
int read_aschead(char *filename, int frameno, tabstruct *tab)
{
......@@ -63,7 +63,7 @@ int read_aschead(char *filename, int frameno, tabstruct *tab)
{
/*- Skip previous ENDs in multi-FITS extension headers */
for (i=frameno-1; i--;)
while (fgets(str, MAXCHAR, file)
while (fgets(str, 88, file)
&& strncmp(str,"END ",4)
&& strncmp(str,"END\n",4));
memset(str, ' ', 80);
......
......@@ -43,7 +43,9 @@
#include "assoc.h"
#include "back.h"
#include "check.h"
#ifdef USE_MODEL
#include "fft.h"
#endif
#include "field.h"
#include "filter.h"
#include "growth.h"
......
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