[MITgcm-support] MPI problem on Archer (CRAY XC30)

Jean-Michel Campin jmc at ocean.mit.edu
Mon Oct 20 22:29:40 EDT 2014


Hi David,

Could you try to replace the original 
 pkg/compon_communic/generate_tag.F 
with the modified "generate_tag.F" routine (attached to this email)
and check that it works ?

Cheers,
Jean-Michel

On Mon, Oct 20, 2014 at 03:14:51PM +0100, David Ferreira wrote:
> Hi all,
> I'm having a problem running the coupled model on Archer.
> The Archer support team discovered the following problem:
> 
> ##########
> ...
> ---
> Rank 0 [Tue Oct  7 22:44:10 2014] [c7-0c1s12n2] Fatal error in
> MPI_Recv: Invalid
> tag, error stack:
> MPI_Recv(192): MPI_Recv(buf=0x7fffffff8000, count=1024, MPI_INTEGER,
> src=1, tag=9862928,
>  comm=0x84000004, status=0x7fffffff7df0) failed
> MPI_Recv(113): Invalid tag, value is 9862928
> ---
> 
> The maximum allowed value for the "tag" in MPI messages on Cray XC30 systems
> is 4194303, which explains the error message
> 
> MPI_Recv(113): Invalid tag, value is 9862928
> 
> The MPI standard only requires that the maximum tag value is not less than
> 32767 (so Cray MPI is compliant). The maximum can be larger, and can
> be found
> using the MPI_Get_attr enquiry function. Your program should
> retrieve this value
> and ensure that any tags it specifies are no larger.
> 
> ##########
> 
> I have absolutely no clue how to tell the model to choose MPI tags
> which are below 4194303.
> A bit of googling on MPI_Get_attr led me to some very obscure pages.
> 
> Any help is welcome.
> Cheers,
> david
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support
-------------- next part --------------
C $Header: /u/gcmpack/MITgcm/pkg/compon_communic/generate_tag.F,v 1.2 2007/10/08 23:58:20 jmc Exp $
C $Name:  $

C=======================================================================
      integer function generate_tag( iarg1, iarg2, carg )
      implicit none
C Predefined constants/arrays
#include "CPLR_SIG.h"
! Arguments
      integer iarg1
      integer iarg2
      character*(*) carg
C Local
      integer j,hash,pow
      integer itrans(MAXLEN_COMP_NAME)
C     ------------------------------------------------------------------

C Convert the characters to an integer array
      call mitcplr_char2int( carg, itrans )

C Hash the integer array
      hash=1
      pow=1
      do j=1,MAXLEN_COMP_NAME
       hash=abs(hash+itrans(j)*pow)
       pow=mod(pow*128,256*256)
      enddo

c     generate_tag=(hash*256+iarg2)*128+iarg1
c     generate_tag=abs(mod(generate_tag,256*256*256))
C-  to fit in some MPI max tag limit (e.g., Cray XC30):
      generate_tag=(hash*256+iarg2)*32+iarg1
      generate_tag=abs(mod(generate_tag,128*128*128))

c     if (DEBUG)
c    & write(15,'(A,I12,2(A,I8),3A)') 'generate_tag =', generate_tag,
c    &                 ' from Arg:', iarg1,',', iarg2, ', "',carg,'"'

C     ------------------------------------------------------------------
      return
      end
C=======================================================================


More information about the MITgcm-support mailing list