From d271b4f1239e63a8514bd90a96d1efabbd17ccf5 Mon Sep 17 00:00:00 2001 From: "Peter W. Draper" <p.w.draper@durham.ac.uk> Date: Thu, 8 Feb 2018 15:28:58 +0000 Subject: [PATCH] Check for ParMETIS flavour of METIS --- configure.ac | 131 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 54 deletions(-) diff --git a/configure.ac b/configure.ac index 3256c0ff55..8874247c80 100644 --- a/configure.ac +++ b/configure.ac @@ -426,35 +426,57 @@ AC_CHECK_LIB(pthread, posix_fallocate, AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [The posix library implements file allocation functions.]), AC_MSG_WARN(POSIX implementation does not have file allocation functions.)) -# Check for METIS. Note AX_LIB_METIS exists, but cannot be configured -# to be default off (i.e. given no option it tries to locate METIS), so we -# don't use that. +# Check for METIS or PARMETIS. have_metis="no" +have_parmetis="no" AC_ARG_WITH([metis], [AS_HELP_STRING([--with-metis=PATH], - [root directory where metis is installed @<:@yes/no@:>@] + [root directory where metis or parmetis is installed @<:@yes/no@:>@] )], [], [with_metis="no"] ) if test "x$with_metis" != "xno"; then + +# Check if we have ParMETIS. if test "x$with_metis" != "xyes" -a "x$with_metis" != "x"; then - METIS_LIBS="-L$with_metis/lib -lmetis" + METIS_LIBS="-L$with_metis/lib -lparmetis -lmetis" METIS_INCS="-I$with_metis/include" else - METIS_LIBS="-lmetis" + METIS_LIBS="-lparmetis -lmetis" METIS_INCS="" fi - have_metis="yes" - AC_CHECK_LIB([metis],[METIS_PartGraphKway], - AC_DEFINE([HAVE_METIS],1,[The metis library appears to be present.]), - AC_MSG_ERROR(something is wrong with the metis library!),$METIS_LIBS) + AC_CHECK_LIB([metis],[ParMETIS_V3_RefineKway], [have_parmetis="yes"], + [have_parmetis="no"], $METIS_LIBS) + if test "$have_parmetis" == "no"; then + +# Check for serial METIS. + if test "x$with_metis" != "xyes" -a "x$with_metis" != "x"; then + METIS_LIBS="-L$with_metis/lib -lmetis" + METIS_INCS="-I$with_metis/include" + else + METIS_LIBS="-lmetis" + METIS_INCS="" + fi + AC_CHECK_LIB([metis],[METIS_PartGraphKway],[have_metis="yes"], + [have_metis="no"], $METIS_LIBS) + + if test "$have_metis" == "yes"; then + AC_DEFINE([HAVE_METIS],1,[The metis library appears to be present.]) + else + AC_MSG_ERROR(something is wrong with the metis library!) + fi + else + AC_DEFINE([HAVE_METIS],1,[The METIS library appears to be present.]) + AC_DEFINE([HAVE_PARMETIS],1,[The ParMETIS library is also present.]) + fi fi + AC_SUBST([METIS_LIBS]) AC_SUBST([METIS_INCS]) AM_CONDITIONAL([HAVEMETIS],[test -n "$METIS_LIBS"]) -# Check for grackle. +# Check for grackle. have_grackle="no" AC_ARG_WITH([grackle], [AS_HELP_STRING([--with-grackle=PATH], @@ -473,9 +495,9 @@ if test "x$with_grackle" != "xno"; then GRACKLE_LIBS="-lgrackle" GRACKLE_INCS="" fi - + have_grackle="yes" - + AC_CHECK_LIB( [grackle], [initialize_chemistry_data], @@ -734,22 +756,22 @@ AC_ARG_WITH([hydro], case "$with_hydro" in gadget2) AC_DEFINE([GADGET2_SPH], [1], [Gadget-2 SPH]) - ;; + ;; minimal) AC_DEFINE([MINIMAL_SPH], [1], [Minimal SPH]) - ;; + ;; hopkins) AC_DEFINE([HOPKINS_PE_SPH], [1], [Pressure-Entropy SPH]) - ;; + ;; default) AC_DEFINE([DEFAULT_SPH], [1], [Default SPH]) - ;; + ;; gizmo) AC_DEFINE([GIZMO_SPH], [1], [GIZMO SPH]) - ;; + ;; shadowfax) AC_DEFINE([SHADOWFAX_SPH], [1], [Shadowfax SPH]) - ;; + ;; *) AC_MSG_ERROR([Unknown hydrodynamics scheme: $with_hydro]) @@ -774,7 +796,7 @@ if test "$enable_debug_interactions" != "no"; then AC_DEFINE_UNQUOTED([MAX_NUM_OF_NEIGHBOURS], [$enableval] ,[The maximum number of particle neighbours to be logged]) [enable_debug_interactions="yes (Logging up to $enableval neighbours)"] fi - else + else [enable_debug_interactions="no (only available for gadget2 hydro scheme)"] fi fi @@ -790,22 +812,22 @@ AC_ARG_WITH([kernel], case "$with_kernel" in cubic-spline) AC_DEFINE([CUBIC_SPLINE_KERNEL], [1], [Cubic spline kernel]) - ;; + ;; quartic-spline) AC_DEFINE([QUARTIC_SPLINE_KERNEL], [1], [Quartic spline kernel]) - ;; + ;; quintic-spline) AC_DEFINE([QUINTIC_SPLINE_KERNEL], [1], [Quintic spline kernel]) - ;; + ;; wendland-C2) AC_DEFINE([WENDLAND_C2_KERNEL], [1], [Wendland-C2 kernel]) - ;; + ;; wendland-C4) AC_DEFINE([WENDLAND_C4_KERNEL], [1], [Wendland-C4 kernel]) - ;; + ;; wendland-C6) AC_DEFINE([WENDLAND_C6_KERNEL], [1], [Wendland-C6 kernel]) - ;; + ;; *) AC_MSG_ERROR([Unknown kernel function: $with_kernel]) ;; @@ -822,13 +844,13 @@ AC_ARG_WITH([hydro-dimension], case "$with_dimension" in 1) AC_DEFINE([HYDRO_DIMENSION_1D], [1], [1D solver]) - ;; + ;; 2) AC_DEFINE([HYDRO_DIMENSION_2D], [2], [2D solver]) - ;; + ;; 3) AC_DEFINE([HYDRO_DIMENSION_3D], [3], [3D solver]) - ;; + ;; *) AC_MSG_ERROR([Dimensionality must be 1, 2 or 3]) ;; @@ -845,10 +867,10 @@ AC_ARG_WITH([equation-of-state], case "$with_eos" in ideal-gas) AC_DEFINE([EOS_IDEAL_GAS], [1], [Ideal gas equation of state]) - ;; + ;; isothermal-gas) AC_DEFINE([EOS_ISOTHERMAL_GAS], [1], [Isothermal gas equation of state]) - ;; + ;; *) AC_MSG_ERROR([Unknown equation of state: $with_eos]) ;; @@ -865,16 +887,16 @@ AC_ARG_WITH([adiabatic-index], case "$with_gamma" in 5/3) AC_DEFINE([HYDRO_GAMMA_5_3], [5./3.], [Adiabatic index is 5/3]) - ;; + ;; 7/5) AC_DEFINE([HYDRO_GAMMA_7_5], [7./5.], [Adiabatic index is 7/5]) - ;; + ;; 4/3) AC_DEFINE([HYDRO_GAMMA_4_3], [4./3.], [Adiabatic index is 4/3]) - ;; + ;; 2) AC_DEFINE([HYDRO_GAMMA_2_1], [2.], [Adiabatic index is 2]) - ;; + ;; *) AC_MSG_ERROR([Unknown adiabatic index: $with_gamma]) ;; @@ -891,16 +913,16 @@ AC_ARG_WITH([riemann-solver], case "$with_riemann" in none) AC_DEFINE([RIEMANN_SOLVER_NONE], [1], [No Riemann solver]) - ;; + ;; exact) AC_DEFINE([RIEMANN_SOLVER_EXACT], [1], [Exact Riemann solver]) - ;; + ;; trrs) AC_DEFINE([RIEMANN_SOLVER_TRRS], [1], [Two Rarefaction Riemann Solver]) - ;; + ;; hllc) AC_DEFINE([RIEMANN_SOLVER_HLLC], [1], [Harten-Lax-van Leer-Contact Riemann solver]) - ;; + ;; *) AC_MSG_ERROR([Unknown Riemann solver: $with_riemann]) ;; @@ -917,19 +939,19 @@ AC_ARG_WITH([cooling], case "$with_cooling" in none) AC_DEFINE([COOLING_NONE], [1], [No cooling function]) - ;; + ;; const-du) AC_DEFINE([COOLING_CONST_DU], [1], [Const du/dt cooling function]) - ;; + ;; const-lambda) AC_DEFINE([COOLING_CONST_LAMBDA], [1], [Const Lambda cooling function]) - ;; + ;; grackle) AC_DEFINE([COOLING_GRACKLE], [1], [Cooling via the grackle library]) - ;; + ;; EAGLE) AC_DEFINE([COOLING_EAGLE], [1], [Cooling following the EAGLE model]) - ;; + ;; *) AC_MSG_ERROR([Unknown cooling function: $with_cooling]) ;; @@ -946,13 +968,13 @@ AC_ARG_WITH([chemistry], case "$with_chemistry" in none) AC_DEFINE([CHEMISTRY_NONE], [1], [No chemistry function]) - ;; + ;; gear) AC_DEFINE([CHEMISTRY_GEAR], [1], [Chemistry taken from the GEAR model]) - ;; + ;; EAGLE) AC_DEFINE([CHEMISTRY_EAGLE], [1], [Chemistry taken from the EAGLE model]) - ;; + ;; *) AC_MSG_ERROR([Unknown chemistry function: $with_chemistry]) ;; @@ -969,19 +991,19 @@ AC_ARG_WITH([ext-potential], case "$with_potential" in none) AC_DEFINE([EXTERNAL_POTENTIAL_NONE], [1], [No external potential]) - ;; + ;; point-mass) AC_DEFINE([EXTERNAL_POTENTIAL_POINTMASS], [1], [Point-mass external potential]) - ;; + ;; isothermal) AC_DEFINE([EXTERNAL_POTENTIAL_ISOTHERMAL], [1], [Isothermal external potential]) - ;; + ;; disc-patch) AC_DEFINE([EXTERNAL_POTENTIAL_DISC_PATCH], [1], [Disc-patch external potential]) - ;; + ;; sine-wave) AC_DEFINE([EXTERNAL_POTENTIAL_SINE_WAVE], [1], [Sine wave external potential in 1D]) - ;; + ;; *) AC_MSG_ERROR([Unknown external potential: $with_potential]) ;; @@ -1029,7 +1051,7 @@ touch src/version.c AC_OUTPUT # Report general configuration. -AC_MSG_RESULT([ +AC_MSG_RESULT([ ------- Summary -------- $PACKAGE_NAME v.$PACKAGE_VERSION @@ -1042,6 +1064,7 @@ AC_MSG_RESULT([ HDF5 enabled : $with_hdf5 - parallel : $have_parallel_hdf5 Metis enabled : $have_metis + ParMETIS enabled : $have_parmetis FFTW3 enabled : $have_fftw3 libNUMA enabled : $have_numa GRACKLE enabled : $have_grackle @@ -1058,7 +1081,7 @@ AC_MSG_RESULT([ Riemann solver : $with_riemann Cooling function : $with_cooling Chemistry : $with_chemistry - + External potential : $with_potential Multipole order : $with_multipole_order No gravity below ID : $no_gravity_below_id -- GitLab