mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-13 01:05:36 +00:00
Added check of mpfr and gmp at configure time
It generates automatically the linker flags or complains if not found.
This commit is contained in:
parent
b5af3fbe45
commit
4cadf11d1d
2
README
2
README
@ -33,6 +33,8 @@ MPI parallelism is UNIMPLEMENTED and for now only OpenMP and SIMD parallelism is
|
|||||||
by setting variables in the command line or in the environment. Here
|
by setting variables in the command line or in the environment. Here
|
||||||
is are examples:
|
is are examples:
|
||||||
|
|
||||||
|
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -msse4" --enable-simd=SSE4
|
||||||
|
|
||||||
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx" --enable-simd=AVX1
|
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx" --enable-simd=AVX1
|
||||||
|
|
||||||
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx2" --enable-simd=AVX2
|
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx2" --enable-simd=AVX2
|
||||||
|
104
configure
vendored
104
configure
vendored
@ -4502,6 +4502,11 @@ _ACEOF
|
|||||||
|
|
||||||
|
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
|
echo
|
||||||
|
echo Checking libraries
|
||||||
|
echo :::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
|
|
||||||
for ac_func in gettimeofday
|
for ac_func in gettimeofday
|
||||||
do :
|
do :
|
||||||
ac_fn_cxx_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
|
ac_fn_cxx_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
|
||||||
@ -4514,6 +4519,105 @@ fi
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpf_init in -lgmp" >&5
|
||||||
|
$as_echo_n "checking for __gmpf_init in -lgmp... " >&6; }
|
||||||
|
if ${ac_cv_lib_gmp___gmpf_init+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
ac_check_lib_save_LIBS=$LIBS
|
||||||
|
LIBS="-lgmp $LIBS"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
/* Override any GCC internal prototype to avoid an error.
|
||||||
|
Use char because int might match the return type of a GCC
|
||||||
|
builtin and then its argument prototype would still apply. */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
char __gmpf_init ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return __gmpf_init ();
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_cxx_try_link "$LINENO"; then :
|
||||||
|
ac_cv_lib_gmp___gmpf_init=yes
|
||||||
|
else
|
||||||
|
ac_cv_lib_gmp___gmpf_init=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS=$ac_check_lib_save_LIBS
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpf_init" >&5
|
||||||
|
$as_echo "$ac_cv_lib_gmp___gmpf_init" >&6; }
|
||||||
|
if test "x$ac_cv_lib_gmp___gmpf_init" = xyes; then :
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_LIBGMP 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
LIBS="-lgmp $LIBS"
|
||||||
|
|
||||||
|
else
|
||||||
|
as_fn_error $? "GNU Multiple Precision GMP library was not found in your system.
|
||||||
|
Please install or provide the correct path to your installation
|
||||||
|
Info at: http://www.gmplib.org" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpfr_init in -lmpfr" >&5
|
||||||
|
$as_echo_n "checking for mpfr_init in -lmpfr... " >&6; }
|
||||||
|
if ${ac_cv_lib_mpfr_mpfr_init+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
ac_check_lib_save_LIBS=$LIBS
|
||||||
|
LIBS="-lmpfr $LIBS"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
/* Override any GCC internal prototype to avoid an error.
|
||||||
|
Use char because int might match the return type of a GCC
|
||||||
|
builtin and then its argument prototype would still apply. */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
char mpfr_init ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return mpfr_init ();
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_cxx_try_link "$LINENO"; then :
|
||||||
|
ac_cv_lib_mpfr_mpfr_init=yes
|
||||||
|
else
|
||||||
|
ac_cv_lib_mpfr_mpfr_init=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS=$ac_check_lib_save_LIBS
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpfr_mpfr_init" >&5
|
||||||
|
$as_echo "$ac_cv_lib_mpfr_mpfr_init" >&6; }
|
||||||
|
if test "x$ac_cv_lib_mpfr_mpfr_init" = xyes; then :
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_LIBMPFR 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
LIBS="-lmpfr $LIBS"
|
||||||
|
|
||||||
|
else
|
||||||
|
as_fn_error $? "GNU Multiple Precision MPFR library was not found in your system.
|
||||||
|
Please install or provide the correct path to your installation
|
||||||
|
Info at: http://www.mpfr.org/" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
16
configure.ac
16
configure.ac
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# Project Grid package
|
# Project Grid package
|
||||||
#
|
#
|
||||||
# Time-stamp: <2015-05-18 17:14:20 neo>
|
# Time-stamp: <2015-05-19 13:51:08 neo>
|
||||||
|
|
||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
AC_INIT([Grid], [1.0], [paboyle@ph.ed.ac.uk])
|
AC_INIT([Grid], [1.0], [paboyle@ph.ed.ac.uk])
|
||||||
@ -46,8 +46,22 @@ AC_TYPE_UINT32_T
|
|||||||
AC_TYPE_UINT64_T
|
AC_TYPE_UINT64_T
|
||||||
|
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
|
echo
|
||||||
|
echo Checking libraries
|
||||||
|
echo :::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS([gettimeofday])
|
AC_CHECK_FUNCS([gettimeofday])
|
||||||
|
|
||||||
|
AC_CHECK_LIB([gmp],[__gmpf_init],,
|
||||||
|
[AC_MSG_ERROR(GNU Multiple Precision GMP library was not found in your system.
|
||||||
|
Please install or provide the correct path to your installation
|
||||||
|
Info at: http://www.gmplib.org)])
|
||||||
|
|
||||||
|
AC_CHECK_LIB([mpfr],[mpfr_init],,
|
||||||
|
[AC_MSG_ERROR(GNU Multiple Precision MPFR library was not found in your system.
|
||||||
|
Please install or provide the correct path to your installation
|
||||||
|
Info at: http://www.mpfr.org/)])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,121 +0,0 @@
|
|||||||
/* lib/Grid_config.h. Generated from Grid_config.h.in by configure. */
|
|
||||||
/* lib/Grid_config.h.in. Generated from configure.ac by autoheader. */
|
|
||||||
|
|
||||||
/* AVX */
|
|
||||||
/* #undef AVX1 */
|
|
||||||
|
|
||||||
/* AVX2 */
|
|
||||||
/* #undef AVX2 */
|
|
||||||
|
|
||||||
/* AVX512 */
|
|
||||||
/* #undef AVX512 */
|
|
||||||
|
|
||||||
/* GRID_COMMS_MPI */
|
|
||||||
/* #undef GRID_COMMS_MPI */
|
|
||||||
|
|
||||||
/* GRID_COMMS_NONE */
|
|
||||||
#define GRID_COMMS_NONE 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `be64toh', and to 0 if you
|
|
||||||
don't. */
|
|
||||||
#define HAVE_DECL_BE64TOH 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `ntohll', and to 0 if you don't.
|
|
||||||
*/
|
|
||||||
#define HAVE_DECL_NTOHLL 0
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <endian.h> header file. */
|
|
||||||
#define HAVE_ENDIAN_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `gettimeofday' function. */
|
|
||||||
#define HAVE_GETTIMEOFDAY 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <gmp.h> header file. */
|
|
||||||
#define HAVE_GMP_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
||||||
#define HAVE_INTTYPES_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <malloc.h> header file. */
|
|
||||||
#define HAVE_MALLOC_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <malloc/malloc.h> header file. */
|
|
||||||
/* #undef HAVE_MALLOC_MALLOC_H */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
|
||||||
#define HAVE_MEMORY_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <mm_malloc.h> header file. */
|
|
||||||
#define HAVE_MM_MALLOC_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
|
||||||
#define HAVE_STDINT_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
||||||
#define HAVE_STDLIB_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
|
||||||
#define HAVE_STRINGS_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
|
||||||
#define HAVE_STRING_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
||||||
#define HAVE_SYS_STAT_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
||||||
#define HAVE_SYS_TYPES_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
|
|
||||||
/* Name of package */
|
|
||||||
#define PACKAGE "grid"
|
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
|
||||||
#define PACKAGE_BUGREPORT "paboyle@ph.ed.ac.uk"
|
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
|
||||||
#define PACKAGE_NAME "Grid"
|
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
|
||||||
#define PACKAGE_STRING "Grid 1.0"
|
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
|
||||||
#define PACKAGE_TARNAME "grid"
|
|
||||||
|
|
||||||
/* Define to the home page for this package. */
|
|
||||||
#define PACKAGE_URL ""
|
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
|
||||||
#define PACKAGE_VERSION "1.0"
|
|
||||||
|
|
||||||
/* SSE4 */
|
|
||||||
#define SSE4 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#define VERSION "1.0"
|
|
||||||
|
|
||||||
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
|
|
||||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
|
||||||
#define below would cause a syntax error. */
|
|
||||||
/* #undef _UINT32_T */
|
|
||||||
|
|
||||||
/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
|
|
||||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
|
||||||
#define below would cause a syntax error. */
|
|
||||||
/* #undef _UINT64_T */
|
|
||||||
|
|
||||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
|
||||||
/* #undef size_t */
|
|
||||||
|
|
||||||
/* Define to the type of an unsigned integer type of width exactly 32 bits if
|
|
||||||
such a type exists and the standard includes do not define it. */
|
|
||||||
/* #undef uint32_t */
|
|
||||||
|
|
||||||
/* Define to the type of an unsigned integer type of width exactly 64 bits if
|
|
||||||
such a type exists and the standard includes do not define it. */
|
|
||||||
/* #undef uint64_t */
|
|
@ -35,6 +35,12 @@
|
|||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
#undef HAVE_INTTYPES_H
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gmp' library (-lgmp). */
|
||||||
|
#undef HAVE_LIBGMP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `mpfr' library (-lmpfr). */
|
||||||
|
#undef HAVE_LIBMPFR
|
||||||
|
|
||||||
/* Define to 1 if you have the <malloc.h> header file. */
|
/* Define to 1 if you have the <malloc.h> header file. */
|
||||||
#undef HAVE_MALLOC_H
|
#undef HAVE_MALLOC_H
|
||||||
|
|
||||||
|
@ -95,5 +95,6 @@ nobase_include_HEADERS = algorithms/approx/bigfloat.h\
|
|||||||
simd/Grid_vComplexF.h\
|
simd/Grid_vComplexF.h\
|
||||||
simd/Grid_vInteger.h\
|
simd/Grid_vInteger.h\
|
||||||
simd/Grid_vRealD.h\
|
simd/Grid_vRealD.h\
|
||||||
simd/Grid_vRealF.h
|
simd/Grid_vRealF.h\
|
||||||
|
simd/Grid_vector_types.h
|
||||||
|
|
||||||
|
0
lib/algorithms/approx/Remez.cc
Executable file → Normal file
0
lib/algorithms/approx/Remez.cc
Executable file → Normal file
0
lib/algorithms/approx/Remez.h
Executable file → Normal file
0
lib/algorithms/approx/Remez.h
Executable file → Normal file
0
lib/algorithms/approx/Zolotarev.cc
Executable file → Normal file
0
lib/algorithms/approx/Zolotarev.cc
Executable file → Normal file
0
lib/algorithms/approx/Zolotarev.h
Executable file → Normal file
0
lib/algorithms/approx/Zolotarev.h
Executable file → Normal file
0
lib/algorithms/approx/bigfloat.h
Executable file → Normal file
0
lib/algorithms/approx/bigfloat.h
Executable file → Normal file
19
lib/simd/Grid_sse4.cpp
Normal file
19
lib/simd/Grid_sse4.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
//----------------------------------------------------------------------
|
||||||
|
/*! @file Grid_vector_types.h
|
||||||
|
@brief Defines templated class to deal with inner vector types
|
||||||
|
*/
|
||||||
|
// Time-stamp: <2015-05-19 13:53:47 neo>
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Optimization {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Here assign types
|
||||||
|
namespace Grid {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,3 +1,9 @@
|
|||||||
|
//----------------------------------------------------------------------
|
||||||
|
/*! @file Grid_vector_types.h
|
||||||
|
@brief Defines templated class to deal with inner vector types
|
||||||
|
*/
|
||||||
|
// Time-stamp: <2015-05-19 13:41:47 neo>
|
||||||
|
//----------------------------------------------------------------------
|
||||||
#ifndef GRID_VECTOR_TYPES
|
#ifndef GRID_VECTOR_TYPES
|
||||||
#define GRID_VECTOR_TYPES
|
#define GRID_VECTOR_TYPES
|
||||||
|
|
||||||
@ -13,8 +19,8 @@ namespace Grid {
|
|||||||
struct RealPart< std::complex<T> >{
|
struct RealPart< std::complex<T> >{
|
||||||
typedef T type;
|
typedef T type;
|
||||||
};
|
};
|
||||||
////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////
|
||||||
// Check for complexity with type traits
|
// Check for complexity with type traits
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct is_complex : std::false_type {};
|
struct is_complex : std::false_type {};
|
||||||
|
@ -1 +0,0 @@
|
|||||||
timestamp for lib/Grid_config.h
|
|
Loading…
Reference in New Issue
Block a user