From 8bd2610b096a2caa00555a4a7faf90c4dfd71d0f Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 18 Jan 2019 16:20:15 +0000 Subject: [PATCH] Allow both METIS 4 and METIS 5 interfaces. --- config/pac.m4 | 4 ++-- configure | 6 +++--- configure.ac | 2 +- util/metis_int.c | 18 ++++++++++++++++++ util/psb_metispart_mod.F90 | 6 +++--- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/config/pac.m4 b/config/pac.m4 index 689efd6a..57d769fe 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -1823,8 +1823,8 @@ fi if test "x$pac_metis_lib_ok" == "xyes" ; then AC_MSG_CHECKING([for METIS_SetDefaultOptions in $LIBS]) AC_TRY_LINK_FUNC(METIS_SetDefaultOptions, - [psblas_cv_have_metis=yes;pac_metis_lib_ok=yes; ], - [psblas_cv_have_metis=no;pac_metis_lib_ok="no. Unusable METIS version, sorry."; METIS_LIBS=""]) + [psblas_cv_metis_version="5"; ], + [psblas_cv_metis_version="4"; ]) AC_MSG_RESULT($pac_metis_lib_ok) fi diff --git a/configure b/configure index dd2094c8..94abe2c8 100755 --- a/configure +++ b/configure @@ -11378,12 +11378,12 @@ $as_echo "$ac_try_echo") >&5 test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then - psblas_cv_have_metis=yes;pac_metis_lib_ok=yes; + psblas_cv_metis_version="5"; else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - psblas_cv_have_metis=no;pac_metis_lib_ok="no. Unusable METIS version, sorry."; METIS_LIBS="" + psblas_cv_metis_version="4"; fi rm -rf conftest.dSYM @@ -11398,7 +11398,7 @@ CPPFLAGS="$SAVE_CPPFLAGS"; if test "x$psblas_cv_have_metis" == "xyes" ; then FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $FDEFINES" - CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES" + CDEFINES="-DHAVE_METIS_ -DMETIS_$psblas_cv_metis_version $psblas_cv_metis_includes $CDEFINES" fi diff --git a/configure.ac b/configure.ac index 4310397a..7b4e1370 100755 --- a/configure.ac +++ b/configure.ac @@ -677,7 +677,7 @@ dnl AC_CHECK_HEADERS([rsb.h], [ LIBS="${LIBS} $want_rsb_libs"], []) PAC_CHECK_METIS if test "x$psblas_cv_have_metis" == "xyes" ; then FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $FDEFINES" - CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES" + CDEFINES="-DHAVE_METIS_ -DMETIS_$psblas_cv_metis_version $psblas_cv_metis_includes $CDEFINES" fi PAC_CHECK_AMD diff --git a/util/metis_int.c b/util/metis_int.c index b9d258b4..a293e085 100644 --- a/util/metis_int.c +++ b/util/metis_int.c @@ -10,6 +10,7 @@ int metis_PartGraphKway_C(int *n, int *ixadj, int *iadj, int *ivwg, int *graphpart) { int res = -1; +#if defined(METIS_5) idx_t objval = 0; idx_t options[METIS_NOPTIONS]; //printf("Inside Metis/C interface\n"); @@ -35,6 +36,23 @@ int metis_PartGraphKway_C(int *n, int *ixadj, int *iadj, int *ivwg, } else { return res; } +#elif defined(METIS_4) + idxtype objval = 0; + int options[8]; + //printf("Inside Metis/C interface\n"); + idxtype ncon=1; + int wflag=0; + int numflag=1; + int ecut; + options[0]=0; + METIS_PartGraphKway((int *)n,(idxtype *)ixadj,(idxtype *)iadj, + NULL,NULL,&wflag,&numflag,nparts,options, + &ecut,(idxtype *)graphpart); + return(0); + +#elif + choke on me! +#endif } diff --git a/util/psb_metispart_mod.F90 b/util/psb_metispart_mod.F90 index 13a2292e..57bf4efc 100644 --- a/util/psb_metispart_mod.F90 +++ b/util/psb_metispart_mod.F90 @@ -365,9 +365,9 @@ contains !!$ write(*,*) 'Before allocation',nparts - irpl=irp - jal = ja - nl = n + irpl = irp + jal = ja + nl = n nptl = nparts wgh_ = -1.0 if(present(weights)) then