diff --git a/m4/immdx_lib_parmetis.m4 b/m4/immdx_lib_parmetis.m4
new file mode 100644
index 0000000000000000000000000000000000000000..aaf1012576835fc8c68be66186fff389e29b5f29
--- /dev/null
+++ b/m4/immdx_lib_parmetis.m4
@@ -0,0 +1,85 @@
+AC_DEFUN([IMMDX_LIB_PARMETIS], [
+        AC_MSG_CHECKING(for PARMETIS library)
+        AC_REQUIRE([AC_PROG_CC])
+        #
+        # User hints...
+        #
+        AC_ARG_VAR([PARMETIS], [PARMETIS library location])
+        AC_ARG_WITH([parmetis],
+                [AC_HELP_STRING([--with-parmetis],
+                [user defined path to PARMETIS library])],
+                [
+                        if test -n "$PARMETIS" ; then
+                                AC_MSG_RESULT(yes)
+                                with_parmetis=$PARMETIS
+                        elif test "$withval" != no ; then
+                                AC_MSG_RESULT(yes)
+                                with_parmetis=$withval
+                        else
+                                AC_MSG_RESULT(no)
+                        fi
+                ],
+                [
+                        if test -n "$PARMETIS" ; then
+                                with_parmetis=$PARMETIS
+                                AC_MSG_RESULT(yes)
+                        else
+                                with_parmetis=/usr
+                                if test ! -f "$with_parmetis/include/parmetis.h" ; then
+                                        with_parmetis=/usr/local
+                                        if test ! -f "$with_parmetis/include/parmetis.h" ; then
+                                                with_parmetis=""
+                                                AC_MSG_RESULT(failed)
+                                        else
+                                                AC_MSG_RESULT(yes)
+                                        fi
+                                else
+                                        AC_MSG_RESULT(yes)
+                                fi
+                        fi
+                ])
+        #
+        # locate PARMETIS library
+        #
+                if test -n "$with_parmetis" ; then
+                        old_CC=$CC
+                        old_CFLAGS=$CFLAGS
+                        old_LDFLAGS=$LDFLAGS
+                        CFLAGS="-I$with_parmetis/include -I$with_metis/include"
+                        LDFLAGS="-L$with_parmetis/lib -L$with_metis/lib"
+			CC=$CXX
+
+                        AC_LANG_SAVE
+                        AC_LANG_C
+
+                        AC_CHECK_LIB(parmetis, ParMETIS_V3_PartKway,
+                                [parmetis_lib=yes], [parmetis_lib=yes], [-lm])
+                        AC_CHECK_HEADER(parmetis.h, [parmetis_h=yes],
+                                [parmetis_h=no], [/* check */])
+
+                        AC_LANG_RESTORE
+
+                        CFLAGS=$old_CFLAGS
+                        LDFLAGS=$old_LDFLAGS
+                        CC=$old_CC
+
+                        AC_MSG_CHECKING(PARMETIS in $with_parmetis)
+                        if test "$parmetis_lib" = "yes" -a "$parmetis_h" = "yes" ; then
+                                AC_SUBST(PARMETIS_INCLUDE, [-I$with_parmetis/include])
+                                AC_SUBST(PARMETIS_LIB, [-L$with_parmetis/lib])
+                                AC_MSG_RESULT(ok)
+                        else
+                                AC_MSG_RESULT(failed)
+                        fi
+                fi
+                #
+                #
+                #
+                if test x = x"$PARMETIS_LIB" ; then
+                        ifelse([$2],,[AC_MSG_ERROR(Failed to find valid PARMETIS library)],[$2])
+                        :
+                else
+                        ifelse([$1],,[AC_DEFINE(HAVE_PARMETIS,1,[Define if you have PARMETIS library])],[$1])
+                        :
+                fi
+        ])dnl IMMDX_LIB_PARMETIS
diff --git a/src/Makefile.am b/src/Makefile.am
index 0a65adb5bf0c83bd7cc06fd8ad2cb248a07a6d3b..9b0f1961b58bf9dc1eb8be608d53bb92fbb2a9a1 100755
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,9 +1,9 @@
 
-LINKLIBS =  $(SUITESPARSE_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS)  $(METIS_LIB) $(DEFAULT_LIB) $(PTHREAD_LIBS) $(OPT_LIBS) $(BOOST_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LIB) $(BOOST_IOSTREAMS_LIB) $(HDF5_LDFLAGS)  $(HDF5_LIBS)
+LINKLIBS =  $(SUITESPARSE_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS)  $(METIS_LIB) $(PARMETIS_LIB) $(DEFAULT_LIB) $(PTHREAD_LIBS) $(OPT_LIBS) $(BOOST_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LIB) $(BOOST_IOSTREAMS_LIB) $(HDF5_LDFLAGS)  $(HDF5_LIBS)
 
 noinst_PROGRAMS = numerics
 numerics_SOURCES = main.cpp ../../openfpm_vcluster/src/VCluster.cpp ../../openfpm_devices/src/memory/HeapMemory.cpp ../../openfpm_devices/src/memory/PtrMemory.cpp ../../openfpm_devices/src/Memleak_check.cpp
-numerics_CXXFLAGS = $(HDF5_CPPFLAGS) -fext-numeric-literals $(INCLUDES_PATH) $(BOOST_CPPFLAGS) $(SUITESPARSE_INCLUDE) $(METIS_INCLUDE) $(EIGEN_INCLUDE) -Wno-deprecated-declarations -Wno-unused-local-typedefs
+numerics_CXXFLAGS = $(HDF5_CPPFLAGS) -fext-numeric-literals $(INCLUDES_PATH) $(BOOST_CPPFLAGS) $(SUITESPARSE_INCLUDE) $(METIS_INCLUDE) $(PARMETIS_INCLUDE)  $(EIGEN_INCLUDE) -Wno-deprecated-declarations -Wno-unused-local-typedefs
 numerics_CFLAGS = $(CUDA_CFLAGS)
 numerics_LDADD = $(LINKLIBS) -lmetis -lquadmath -lparmetis
 nobase_include_HEADERS = PSE/Kernels.hpp PSE/Kernels_test_util.hpp