diff --git a/configure b/configure
index 3b8dba654f09c784c2af059f0dbbeaa8bb1b0748..b715bb21b23cc803f15eadc1aabe3c2936f8be9e 100755
--- a/configure
+++ b/configure
@@ -117,6 +117,7 @@ with_lapack
 with_suitesparse
 with_petsc
 with_eigen
+with_mpi
 enable_gpu
 '
 
@@ -483,6 +484,9 @@ do
       mpivendor)
       conf_options="$conf_options -DMPI_VENDOR=$ac_optarg"
       ;;
+      mpi)
+      conf_options="$conf_options -DMPI_C_COMPILER=$ac_optarg/bin/mpicc -DMPI_CXX_COMPILER=$ac_optarg/bin/mpic++ -DMPI_Fortran_COMPILER=mpif90"
+      ;;
       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
 	 ac_unrecognized_sep=', ';;
     esac
diff --git a/example/Grid/3_gray_scott_3d_vectorization/main.cpp b/example/Grid/3_gray_scott_3d_vectorization/main.cpp
index ea40422e26340ad30c0216c54642df7829c16414..be485b82cb5161dd6ab0e4ce63b18ad843a76b14 100644
--- a/example/Grid/3_gray_scott_3d_vectorization/main.cpp
+++ b/example/Grid/3_gray_scott_3d_vectorization/main.cpp
@@ -233,7 +233,7 @@ int main(int argc, char* argv[])
 	Box<3,double> domain({0.0,0.0},{2.5,2.5,2.5});
 	
 	// grid size
-        size_t sz[3] = {256,256,256};
+        size_t sz[3] = {128,128,128};
 
 	// Define periodicity of the grid
 	periodicity<3> bc = {PERIODIC,PERIODIC,PERIODIC};
@@ -242,7 +242,7 @@ int main(int argc, char* argv[])
 	Ghost<3,long int> g(1);
 	
 	// deltaT
-	double deltaT = 1;
+	double deltaT = 1.0;
 
 	// Diffusion constant for specie U
 	double du = 2*1e-5;
@@ -310,7 +310,7 @@ int main(int argc, char* argv[])
 
 	for (size_t i = 0; i < timeSteps; ++i)
 	{
-		if (i % 300 == 0)
+		if (i % 1 == 0)
 			std::cout << "STEP: " << i << std::endl;
 
 		/*!
@@ -375,12 +375,12 @@ int main(int argc, char* argv[])
 		//! \cond [save hdf5] \endcond
 
 		// Every 2000 time step we output the configuration on hdf5
-		if (i % 2000 == 0)
+/*		if (i % 2000 == 0)
 		{
 			OldU.save("output_u_" + std::to_string(count));
 			OldV.save("output_v_" + std::to_string(count));
 			count++;
-		}
+		}*/
 
 		//! \cond [save hdf5] \endcond
 	}
diff --git a/example/Vector/1_gpu_first_step/main.cu b/example/Vector/1_gpu_first_step/main.cu
index cedab9c868ad1b728563444aaa212e4001fda76a..0bb965e8022f7bed4fedc5985b2a84603af0e8dd 100644
--- a/example/Vector/1_gpu_first_step/main.cu
+++ b/example/Vector/1_gpu_first_step/main.cu
@@ -112,7 +112,7 @@
 #define OPENMPI
 //! \cond [using_openmpi] \endcond
 
-//#define SCAN_WITH_CUB <------ MODERNGPU is broken on RTX use CUB library for scan
+#define SCAN_WITH_CUB <------ MODERNGPU is broken on RTX use CUB library for scan
 //#define EXTERNAL_SET_GPU <----- In case you want to distribute the GPUs differently from the default
 
 #include "Vector/vector_dist.hpp"
diff --git a/install b/install
index f84aaf6c6d9845833483a18995cded02758558fc..cc3dd2687cf74cd68a24f7ec1421916093e1c3e5 100755
--- a/install
+++ b/install
@@ -291,6 +291,10 @@ fi
 call_test_working_mpi_options=0
 set_mpi $i_dir $ncore $gpu_support $CC $CXX $F77 $FC
 
+if [ -d "$i_dir/MPI" ]; then
+    configure_options=" $configure_options --with-mpi=$i_dir/MPI "
+fi
+
 ### METIS and ParMETIS must be installed independently from sistem wide installation
 
 ./script/install_Parmetis.sh $i_dir $ncore