[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