summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch')
-rw-r--r--var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch222
1 files changed, 222 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch b/var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch
new file mode 100644
index 0000000000..4ee3c1df31
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bigdft-libabinit/m_libpaw_mpi.F90.patch
@@ -0,0 +1,222 @@
+--- a/libABINIT/src/libpaw/m_libpaw_mpi.F90
++++ b/libABINIT/src/libpaw/m_libpaw_mpi.F90
+@@ -54,6 +54,24 @@
+ integer,public,parameter :: xpaw_mpi_comm_null = 0
+ #endif
+
++ type xpaw_mpi_attr
++ integer :: attr_data
++ end type
++
++ interface xpaw_mpi_attr
++ module procedure new_xpaw_mpi_attr
++ end interface
++
++ interface mod
++ module procedure mod_xpaw_mpi_attr
++ end interface
++
++#ifdef HAVE_MPI
++ type(xpaw_mpi_attr),public,parameter :: xpaw_mpi_tag_ub = xpaw_mpi_attr(MPI_TAG_UB)
++#else
++ integer,public,parameter :: xpaw_mpi_tag_ub = 1
++#endif
++
+ !----------------------------------------------------------------------
+ !MPI public procedures.
+
+@@ -180,6 +198,32 @@
+ CONTAINS !===========================================================
+ !!***
+
++function new_xpaw_mpi_attr(key_val)
++ type(xpaw_mpi_attr) :: new_xpaw_mpi_attr
++ integer, intent(in) :: key_val
++!Local variables-------------------
++ integer :: mpierr
++#ifdef HAVE_MPI
++ integer :: attribute_val
++ logical :: lflag
++#endif
++
++ ! Deprecated in MPI2 but not all MPI2 implementations provide MPI_Comm_get_attr !
++ call MPI_ATTR_GET(xpaw_mpi_world, key_val, attribute_val, lflag, mpierr)
++ !call MPI_Comm_get_attr(xpaw_mpi_world, key_val, attribute_val, lflag, mpierr)
++
++ if (lflag) new_xpaw_mpi_attr%attr_data = attribute_val
++end function
++
++
++function mod_xpaw_mpi_attr(a, p)
++ integer :: mod_xpaw_mpi_attr
++ integer, intent(in) :: a
++ type(xpaw_mpi_attr), intent(in) :: p
++
++ mod_xpaw_mpi_attr = mod(a, p%attr_data)
++end function
++
+ !!****f* m_libpaw_mpi/xpaw_mpi_abort
+ !! NAME
+ !! xpaw_mpi_abort
+@@ -2297,7 +2341,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_RECV(xval,n1,MPI_INTEGER,source,my_tag,spaceComm,MPI_STATUS_IGNORE,ier)
+ end if
+ #endif
+@@ -2358,7 +2402,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_RECV(xval,n1,MPI_DOUBLE_PRECISION,source,my_tag,spaceComm,MPI_STATUS_IGNORE,ier)
+ end if
+ #endif
+@@ -2419,7 +2463,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1) ; n2=size(xval,dim=2)
+- my_tag=MOD(tag,MPI_TAG_UB)
++ my_tag=MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_RECV(xval,n1*n2,MPI_DOUBLE_PRECISION,source,my_tag,spaceComm,MPI_STATUS_IGNORE,ier)
+ end if
+ #endif
+@@ -2480,7 +2524,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1) ; n2=size(xval,dim=2) ; n3=size(xval,dim=3)
+- my_tag=MOD(tag,MPI_TAG_UB)
++ my_tag=MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_RECV(xval,n1*n2*n3,MPI_DOUBLE_PRECISION,source,my_tag,spaceComm,MPI_STATUS_IGNORE,ier)
+ end if
+ #endif
+@@ -2541,7 +2585,7 @@
+ ierr=0
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+- my_tag=MOD(tag,MPI_TAG_UB)
++ my_tag=MOD(tag,xpaw_mpi_tag_ub)
+ n1=size(xval)
+ call MPI_IRECV(xval,n1,MPI_INTEGER,source,my_tag,spaceComm,request,ier)
+ ierr=ier
+@@ -2604,7 +2648,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag=MOD(tag,MPI_TAG_UB)
++ my_tag=MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_IRECV(xval,n1,MPI_DOUBLE_PRECISION,source,my_tag,spaceComm,request,ier)
+ ierr=ier
+ end if
+@@ -2666,7 +2710,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1);n2=size(xval,dim=2)
+- my_tag=MOD(tag,MPI_TAG_UB)
++ my_tag=MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_IRECV(xval,n1*n2,MPI_DOUBLE_PRECISION,source,my_tag,spaceComm,request,ier)
+ ierr=ier
+ end if
+@@ -2727,7 +2771,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_SEND(xval,n1,MPI_INTEGER,dest,my_tag,spaceComm,ier)
+ end if
+ #endif
+@@ -2785,7 +2829,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_SEND(xval,n1,MPI_DOUBLE_PRECISION,dest,my_tag,spaceComm,ier)
+ end if
+ #endif
+@@ -2843,7 +2887,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1) ; n2=size(xval,dim=2)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_SEND(xval,n1*n2,MPI_DOUBLE_PRECISION,dest,my_tag,spaceComm,ier)
+ end if
+ #endif
+@@ -2901,7 +2945,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1) ; n2=size(xval,dim=2) ; n3=size(xval,dim=3)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_SEND(xval,n1*n2*n3,MPI_DOUBLE_PRECISION,dest,my_tag,spaceComm,ier)
+ end if
+ #endif
+@@ -2961,7 +3005,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_ISEND(xval,n1,MPI_INTEGER,dest,my_tag,spaceComm,request,ier)
+ ierr=ier
+ end if
+@@ -3020,7 +3064,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_ISEND(xval,n1,MPI_DOUBLE_PRECISION,dest,my_tag,spaceComm,request,ier)
+ ierr=ier
+ end if
+@@ -3079,7 +3123,7 @@
+ #if defined HAVE_MPI
+ if (spaceComm /= xpaw_mpi_comm_self .and. spaceComm /= xpaw_mpi_comm_null) then
+ n1=size(xval,dim=1) ; n1=size(xval,dim=2)
+- my_tag = MOD(tag,MPI_TAG_UB)
++ my_tag = MOD(tag,xpaw_mpi_tag_ub)
+ call MPI_ISEND(xval,n1*n2,MPI_DOUBLE_PRECISION,dest,my_tag,spaceComm,request,ier)
+ ierr=ier
+ end if
+@@ -3145,7 +3189,7 @@
+ #if defined HAVE_MPI
+ if (sender==recever.or.spaceComm==xpaw_mpi_comm_null.or.(n1==0)) return
+ call MPI_COMM_RANK(spaceComm,me,ier)
+- tag = MOD(n1,MPI_TAG_UB)
++ tag = MOD(n1,xpaw_mpi_tag_ub)
+ if (recever==me) then
+ call MPI_RECV(vrecv,n1,MPI_INTEGER,sender,tag,spaceComm,status,ier)
+ end if
+@@ -3212,7 +3256,7 @@
+ #if defined HAVE_MPI
+ if (sender==recever.or.spaceComm==xpaw_mpi_comm_null.or.(n1==0)) return
+ call MPI_COMM_RANK(spaceComm,me,ier)
+- tag = MOD(n1,MPI_TAG_UB)
++ tag = MOD(n1,xpaw_mpi_tag_ub)
+ if (recever==me) then
+ call MPI_RECV(vrecv,n1,MPI_DOUBLE_PRECISION,sender,tag,spaceComm,status,ier)
+ end if
+@@ -3279,7 +3323,7 @@
+ #if defined HAVE_MPI
+ if (sender==recever.or.spaceComm==xpaw_mpi_comm_null.or.(nt==0)) return
+ call MPI_COMM_RANK(spaceComm,me,ier)
+- tag=MOD(nt,MPI_TAG_UB)
++ tag=MOD(nt,xpaw_mpi_tag_ub)
+ if (recever==me) then
+ call MPI_RECV(vrecv,nt,MPI_DOUBLE_PRECISION,sender,tag,spaceComm,status,ier)
+ end if
+@@ -3346,7 +3390,7 @@
+ #if defined HAVE_MPI
+ if (sender==recever.or.spaceComm==xpaw_mpi_comm_null.or.(nt==0)) return
+ call MPI_COMM_RANK(spaceComm,me,ier)
+- tag=MOD(nt,MPI_TAG_UB)
++ tag=MOD(nt,xpaw_mpi_tag_ub)
+ if (recever==me) then
+ call MPI_RECV(vrecv,nt,MPI_DOUBLE_PRECISION,sender,tag,spaceComm,status,ier)
+ end if