Dear Anthony<div><br></div><div>Hi</div><div> Many thanks for informing me. I`m using OpenMP compiler, but I could not understand this part:</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">so you don&#39;t need to set it before using it.</span></div>
<div><font class="Apple-style-span" face="arial, sans-serif">Is there any line that I should cancel?<br></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, sans-serif">Best Regards<br>
</font></div><div><div class="gmail_quote">Sincerely</div><div class="gmail_quote">Amin</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">On Wed, Sep 14, 2011 at 12:43 AM, Anthony Chan <span dir="ltr">&lt;<a href="mailto:chan@mcs.anl.gov">chan@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
&gt; [hx001:18110] *** An error occurred in MPI_Wait<br>
&gt; [hx001:18110] *** on communicator MPI_COMM_WORLD<br>
&gt; [hx001:18110] *** MPI_ERR_TRUNCATE: message truncated<br>
&gt; [hx001:18110] *** MPI_ERRORS_ARE_FATAL (goodbye)<br>
&gt; [hx001:18111] *** An error occurred in MPI_Wait<br>
&gt; [hx001:18111] *** on communicator MPI_COMM_WORLD<br>
&gt; [hx001:18111] *** MPI_ERR_TRUNCATE: message truncated<br>
&gt; [hx001:18111] *** MPI_ERRORS_ARE_FATAL (goodbye)<br>
&gt; mpirun noticed that job rank 0 with PID 18109 on node hx001 exited on signal 15 (Terminated).<br>
&gt; 1 additional process aborted (not shown)<br>
<br>
</div>Are you using OpenMPI or MPICH2?<br>
MPI_Request is set by MPI, so you don&#39;t need to set it before using it.<br>
<br>
A.Chan<br>
<div><div></div><div class="h5"><br>
----- Original Message -----<br>
&gt; Hi<br>
&gt;<br>
&gt; I`m running a program including th following subroutine:<br>
&gt; c---------------------SUBROUTINE Particle_Passing Begin Here<br>
&gt; --------------------------<br>
&gt; SUBROUTINE Particle_Passing(ions,lecs,xi,yi,zi,xe,ye,ze<br>
&gt; &amp; ,ui,vi,wi,ue,ve,we,mh,Max_p,buf_size,CRye,CRze,CRue<br>
&gt; &amp; ,CP_send,CP_recv,CRxi,CRyi,CRzi,CRui,CRvi,CRwi,CRxe<br>
&gt; &amp; ,CRve,CRwe,CP_Rx,CP_Ry,CP_Rz,CP_Ru,CP_Rv,CP_Rw,CP_Sx<br>
&gt; &amp; ,CLxi,CLyi,CLzi,CLui,CLvi,CLwi,CLxe,CLye,CLze,CLue<br>
&gt; &amp; ,CLve,CLwe,CP_Sy,CP_Sz,CP_Su,CP_Sv,CP_Sw,LABEL_p<br>
&gt; &amp; ,ionsR,lecsR,ionsL,lecsL,mpass,kstrt,Nproc,ierr)<br>
&gt;<br>
&gt; Integer ions,lecs,mh,mpass<br>
&gt; REAL xe,ye,ze,ue,ve,we<br>
&gt; REAL xi,yi,zi,ui,vi,wi<br>
&gt; DIMENSION xe(mh),ye(mh),ze(mh),ue(mh),ve(mh),we(mh)<br>
&gt; DIMENSION xi(mh),yi(mh),zi(mh),ui(mh),vi(mh),wi(mh)<br>
&gt;<br>
&gt; Integer MAX_p<br>
&gt; C Real MAX_p<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; integer::ionsR,lecsR,ionsL,lecsL,buf_size<br>
&gt; integer::LABEL_p,CP_send,CP_recv<br>
&gt; REAL,DIMENSION(mpass)::CRxi,CRyi,CRzi,CRui,CRvi,CRwi<br>
&gt; REAL,DIMENSION(mpass)::CRxe,CRye,CRze,CRue,CRve,CRwe<br>
&gt; REAL,DIMENSION(mpass)::CLxi,CLyi,CLzi,CLui,CLvi,CLwi<br>
&gt; REAL,DIMENSION(mpass)::CLxe,CLye,CLze,CLue,CLve,CLwe<br>
&gt; REAL,DIMENSION(buf_size)::CP_Sx,CP_Sy,CP_Sz<br>
&gt; REAL,DIMENSION(buf_size)::CP_Su,CP_Sv,CP_Sw<br>
&gt; REAL,DIMENSION(buf_size)::CP_Rx,CP_Ry,CP_Rz<br>
&gt; REAL,DIMENSION(buf_size)::CP_Ru,CP_Rv,CP_Rw<br>
&gt;<br>
&gt; REAL,DIMENSION(6,buf_size)::CP_S6,CP_R6<br>
&gt;<br>
&gt; integer kstrt, Nproc<br>
&gt; integer ierr<br>
&gt;<br>
&gt; c common block for parallel processing<br>
&gt; integer nprocc, lgrp, lstat, mreal, mint, mcplx, mdouble, lworld<br>
&gt; c lstat = length of status array<br>
&gt; parameter(lstat=10)<br>
&gt; c lgrp = current communicator<br>
&gt; c mreal = default datatype for reals<br>
&gt; common /PPARMS/ nprocc, lgrp, mreal, mint, mcplx, mdouble, lworld<br>
&gt; c local data<br>
&gt; integer j, ks, moff, kl, kr<br>
&gt; integer istatus, msid,msid1,msid2,msid3,msid4<br>
&gt; integer msid5,msid6,msid7<br>
&gt; dimension istatus(lstat)<br>
&gt;<br>
&gt; integer nypmx<br>
&gt; C integer status1(10)<br>
&gt; integer, DIMENSION(1):: mypm, iwork1<br>
&gt; C dimension mypm(1),iwork1(1)<br>
&gt;<br>
&gt; mypm(1)=ionsR<br>
&gt;<br>
&gt; call PPIMAX(mypm,iwork1,1)<br>
&gt; nypmx=mypm(1)<br>
&gt;<br>
&gt; Max_p=nypmx/buf_size+1<br>
&gt; C Max_p=MAXVAL(ionsR)/buf_size+1 !change<br>
&gt; LABEL_p=0<br>
&gt; do 200 n_p=1,Max_p<br>
&gt; CP_send=0<br>
&gt; do i=1,buf_size<br>
&gt; n=LABEL_p+i<br>
&gt; CP_Sx(i)=CRXi(n)<br>
&gt; CP_Sy(i)=CRyi(n)<br>
&gt; CP_Sz(i)=CRzi(n)<br>
&gt;<br>
&gt; CP_Su(i)=CRui(n)<br>
&gt; CP_Sv(i)=CRvi(n)<br>
&gt; CP_Sw(i)=CRwi(n)<br>
&gt; end do<br>
&gt; CP_send=buf_size<br>
&gt; if(n.gt.ionsR)then<br>
&gt; CP_send=ionsR - LABEL_p<br>
&gt; end if<br>
&gt; LABEL_p=n<br>
&gt;<br>
&gt; do i=1,buf_size<br>
&gt; CP_S6(1,i)=CP_Sx(i)<br>
&gt; CP_S6(2,i)=CP_Sy(i)<br>
&gt; CP_S6(3,i)=CP_Sz(i)<br>
&gt;<br>
&gt; CP_S6(4,i)=CP_Su(i)<br>
&gt; CP_S6(5,i)=CP_Sv(i)<br>
&gt; CP_S6(6,i)=CP_Sw(i)<br>
&gt; end do<br>
&gt;<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,-1,2) !change<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,-1,2) !change<br>
&gt; c CP_Ry=CSHIFT(CP_Sy,-1,2) !change<br>
&gt; C CP_Rz=CSHIFT(CP_Sz,-1,2) !change<br>
&gt; c CP_Ru=CSHIFT(CP_Su,-1,2) !change<br>
&gt; C CP_Rv=CSHIFT(CP_Sv,-1,2) !change<br>
&gt; C CP_Rw=CSHIFT(CP_Sw,-1,2) !change<br>
&gt;<br>
&gt; C CP_recv=CSHIFT(CP_send,-1,1) !change<br>
&gt; C CP_recv=buf_size<br>
&gt;<br>
&gt; ks = kstrt - 1<br>
&gt; moff = FZ_strd*mz+2 !my*mz + 2<br>
&gt; c copy to guard cells<br>
&gt; kr = ks + 1<br>
&gt; if (kr.ge.Nproc) kr = kr - Nproc<br>
&gt; kl = ks - 1<br>
&gt; if (kl.lt.0) kl = kl + Nproc<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; call MPI_IRECV(CP_recv,1,mint,kl,1,lgrp,msid<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_send,1,mint,kr,1,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid,istatus,ierr)<br>
&gt; print*,kstrt,lecsR,kr,CP_recv,CP_send,11111113<br>
&gt; call MPI_IRECV(CP_R6,CP_recv,mreal,kl,2,lgrp,msid1<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_S6,CP_recv,mreal,kr,2,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid1,istatus,ierr)<br>
&gt;<br>
&gt; if (CP_recv.gt.0) then<br>
&gt; do n=1,CP_recv<br>
&gt; ions=ions+1<br>
&gt; xi(ions)=CP_R6(1,n)<br>
&gt; yi(ions)=CP_R6(2,n)<br>
&gt; zi(ions)=CP_R6(3,n)<br>
&gt;<br>
&gt; ui(ions)=CP_R6(4,n)<br>
&gt; vi(ions)=CP_R6(5,n)<br>
&gt; wi(ions)=CP_R6(6,n)<br>
&gt; end do<br>
&gt; End if<br>
&gt; 110 continue<br>
&gt; C.......................<br>
&gt; 200 continue<br>
&gt;<br>
&gt; C------------------------------<br>
&gt;<br>
&gt; mypm(1)=lecsR<br>
&gt; call PPIMAX(mypm,iwork1,1)<br>
&gt; nypmx=mypm(1)<br>
&gt;<br>
&gt;<br>
&gt; Max_p=nypmx/buf_size+1<br>
&gt; C Max_p=MAXVAL(lecsR)/buf_size+1 !change<br>
&gt;<br>
&gt; LABEL_p=0<br>
&gt; do 400 n_p=1,Max_p<br>
&gt; CP_send=0<br>
&gt; do i=1,buf_size<br>
&gt; n=LABEL_p+i<br>
&gt; CP_Sx(i)=CRXe(n)<br>
&gt; CP_Sy(i)=CRye(n)<br>
&gt; CP_Sz(i)=CRze(n)<br>
&gt;<br>
&gt; CP_Su(i)=CRue(n)<br>
&gt; CP_Sv(i)=CRve(n)<br>
&gt; CP_Sw(i)=CRwe(n)<br>
&gt; end do<br>
&gt; CP_send=buf_size<br>
&gt; if(n.gt.lecsR)then<br>
&gt; CP_send=lecsR - LABEL_p<br>
&gt; end if<br>
&gt;<br>
&gt; LABEL_p=n<br>
&gt;<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,-1,2) !change<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,-1,2) !change<br>
&gt; C CP_Ry=CSHIFT(CP_Sy,-1,2) !change<br>
&gt; C CP_Rz=CSHIFT(CP_Sz,-1,2) !change<br>
&gt; C CP_Ru=CSHIFT(CP_Su,-1,2) !change<br>
&gt; C CP_Rv=CSHIFT(CP_Sv,-1,2) !change<br>
&gt; C CP_Rw=CSHIFT(CP_Sw,-1,2) !change<br>
&gt;<br>
&gt; C CP_recv=CSHIFT(CP_send,-1,1) !change<br>
&gt;<br>
&gt; do i=1,buf_size<br>
&gt; CP_S6(1,i)=CP_Sx(i)<br>
&gt; CP_S6(2,i)=CP_Sy(i)<br>
&gt; CP_S6(3,i)=CP_Sz(i)<br>
&gt;<br>
&gt; CP_S6(4,i)=CP_Su(i)<br>
&gt; CP_S6(5,i)=CP_Sv(i)<br>
&gt; CP_S6(6,i)=CP_Sw(i)<br>
&gt; end do<br>
&gt;<br>
&gt;<br>
&gt; call MPI_IRECV(CP_recv,1,mint,kl,3,lgrp,msid2<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_send,1,mint,kr,3,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid2,istatus,ierr)<br>
&gt;<br>
&gt; call MPI_IRECV(CP_R6,CP_recv,mreal,kl,4,lgrp,msid3<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_S6,CP_recv,mreal,kr,4,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid3,istatus,ierr)<br>
&gt;<br>
&gt; if (CP_recv.gt.0) then<br>
&gt; do n=1,CP_recv<br>
&gt; lecs=lecs+1<br>
&gt; xe(lecs)=CP_R6(1,n)<br>
&gt; ye(lecs)=CP_R6(2,n)<br>
&gt; ze(lecs)=CP_R6(3,n)<br>
&gt;<br>
&gt; ue(lecs)=CP_R6(4,n)<br>
&gt; ve(lecs)=CP_R6(5,n)<br>
&gt; we(lecs)=CP_R6(6,n)<br>
&gt; end do<br>
&gt; End if<br>
&gt; 310 continue<br>
&gt; C.......................<br>
&gt; 400 continue<br>
&gt; C------------------<br>
&gt; mypm(1)=ionsL<br>
&gt; call PPIMAX(mypm,iwork1,1)<br>
&gt; nypmx=mypm(1)<br>
&gt; Max_p=nypmx/buf_size+1<br>
&gt; C Max_p=MAXVAL(ionsL)/buf_size+1 !change<br>
&gt; LABEL_p=0<br>
&gt; do 600 n_p=1,Max_p<br>
&gt; CP_send=0<br>
&gt; do i=1,buf_size<br>
&gt; n=LABEL_p+i<br>
&gt; CP_Sx(i)=CLXi(n)<br>
&gt; CP_Sy(i)=CLyi(n)<br>
&gt; CP_Sz(i)=CLzi(n)<br>
&gt;<br>
&gt; CP_Su(i)=CLui(n)<br>
&gt; CP_Sv(i)=CLvi(n)<br>
&gt; CP_Sw(i)=CLwi(n)<br>
&gt; end do<br>
&gt; CP_send=buf_size<br>
&gt; if(n.gt.ionsL)then<br>
&gt; CP_send=ionsL - LABEL_p<br>
&gt; end if<br>
&gt; LABEL_p=n<br>
&gt;<br>
&gt; do i=1,buf_size<br>
&gt; CP_S6(1,i)=CP_Sx(i)<br>
&gt; CP_S6(2,i)=CP_Sy(i)<br>
&gt; CP_S6(3,i)=CP_Sz(i)<br>
&gt;<br>
&gt; CP_S6(4,i)=CP_Su(i)<br>
&gt; CP_S6(5,i)=CP_Sv(i)<br>
&gt; CP_S6(6,i)=CP_Sw(i)<br>
&gt; end do<br>
&gt;<br>
&gt;<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,+1,2) !change<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,+1,2) !change<br>
&gt; C CP_Ry=CSHIFT(CP_Sy,+1,2) !change<br>
&gt; C CP_Rz=CSHIFT(CP_Sz,+1,2) !change<br>
&gt; C CP_Ru=CSHIFT(CP_Su,+1,2) !change<br>
&gt; C CP_Rv=CSHIFT(CP_Sv,+1,2) !change<br>
&gt; C CP_Rw=CSHIFT(CP_Sw,+1,2) !change<br>
&gt;<br>
&gt; C CP_recv=CSHIFT(CP_send,+1,1) !change<br>
&gt;<br>
&gt; call MPI_IRECV(CP_recv,1,mint,kr,5,lgrp,msid4<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_send,1,mint,kl,5,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid4,istatus,ierr)<br>
&gt;<br>
&gt; call MPI_IRECV(CP_R6,CP_recv,mreal,kr,6,lgrp,msid5<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_S6,CP_recv,mreal,kl,6,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid5,istatus,ierr)<br>
&gt;<br>
&gt; if (CP_recv.gt.0) then<br>
&gt; do n=1,CP_recv<br>
&gt; ions=ions+1<br>
&gt; xi(ions)=CP_R6(1,n)<br>
&gt; yi(ions)=CP_R6(2,n)<br>
&gt; zi(ions)=CP_R6(3,n)<br>
&gt;<br>
&gt; ui(ions)=CP_R6(4,n)<br>
&gt; vi(ions)=CP_R6(5,n)<br>
&gt; wi(ions)=CP_R6(6,n)<br>
&gt; end do<br>
&gt; End if<br>
&gt; 510 continue<br>
&gt; C.......................<br>
&gt; 600 continue<br>
&gt; C--------------------<br>
&gt; mypm(1)=lecsL<br>
&gt; call PPIMAX(mypm,iwork1,1)<br>
&gt; nypmx=mypm(1)<br>
&gt; Max_p=nypmx/buf_size+1<br>
&gt; C Max_p=MAXVAL(lecsL)/buf_size+1 !change<br>
&gt; LABEL_p=0<br>
&gt; do 800 n_p=1,Max_p<br>
&gt; CP_send=0<br>
&gt; do i=1,buf_size<br>
&gt; n=LABEL_p+i<br>
&gt; CP_Sx(i)=CLXe(n)<br>
&gt; CP_Sy(i)=CLye(n)<br>
&gt; CP_Sz(i)=CLze(n)<br>
&gt;<br>
&gt; CP_Su(i)=CLue(n)<br>
&gt; CP_Sv(i)=CLve(n)<br>
&gt; CP_Sw(i)=CLwe(n)<br>
&gt; end do<br>
&gt; CP_send=buf_size<br>
&gt; if(n.gt.lecsL)then<br>
&gt; CP_send=lecsL - LABEL_p<br>
&gt; end if<br>
&gt; LABEL_p=n<br>
&gt;<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,+1,2) !change<br>
&gt; C CP_Rx=CSHIFT(CP_Sx,+1,2) !change<br>
&gt; C CP_Ry=CSHIFT(CP_Sy,+1,2) !change<br>
&gt; C CP_Rz=CSHIFT(CP_Sz,+1,2) !change<br>
&gt; C CP_Ru=CSHIFT(CP_Su,+1,2) !change<br>
&gt; C CP_Rv=CSHIFT(CP_Sv,+1,2) !change<br>
&gt; C CP_Rw=CSHIFT(CP_Sw,+1,2) !change<br>
&gt;<br>
&gt; C CP_recv=CSHIFT(CP_send,-1,1) !change<br>
&gt;<br>
&gt; do i=1,buf_size<br>
&gt; CP_S6(1,i)=CP_Sx(i)<br>
&gt; CP_S6(2,i)=CP_Sy(i)<br>
&gt; CP_S6(3,i)=CP_Sz(i)<br>
&gt;<br>
&gt; CP_S6(4,i)=CP_Su(i)<br>
&gt; CP_S6(5,i)=CP_Sv(i)<br>
&gt; CP_S6(6,i)=CP_Sw(i)<br>
&gt; end do<br>
&gt;<br>
&gt; call MPI_IRECV(CP_recv,1,mint,kr,7,lgrp,msid6<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_send,1,mint,kl,7,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid6,istatus,ierr)<br>
&gt;<br>
&gt; call MPI_IRECV(CP_R6,CP_recv,mreal,kr,8,lgrp,msid7<br>
&gt; &amp; ,ierr)<br>
&gt; call MPI_SEND(CP_S6,CP_recv,mreal,kl,8,lgrp,ierr)<br>
&gt; call MPI_WAIT(msid7,istatus,ierr)<br>
&gt;<br>
&gt; C print*,mreal,mint,lgrp,CP_send,msid,1111114<br>
&gt; C print*,kstrt,kl,kr,CP_recv,CP_send,11111113<br>
&gt;<br>
&gt; if (CP_recv.gt.0) then<br>
&gt; do n=1,CP_recv<br>
&gt; lecs=lecs+1<br>
&gt; xe(lecs)=CP_R6(1,n)<br>
&gt; ye(lecs)=CP_R6(2,n)<br>
&gt; ze(lecs)=CP_R6(3,n)<br>
&gt;<br>
&gt; ue(lecs)=CP_R6(4,n)<br>
&gt; ve(lecs)=CP_R6(5,n)<br>
&gt; we(lecs)=CP_R6(6,n)<br>
&gt; end do<br>
&gt; End if<br>
&gt; 710 continue<br>
&gt; C.......................<br>
&gt; 800 continue<br>
&gt; End Subroutine<br>
&gt; c---------------------SUBROUTINE Particle_Passing End Here<br>
&gt; --------------------------<br>
&gt; And I`m receiving the following error:<br>
&gt;<br>
&gt; [hx001:18110] *** An error occurred in MPI_Wait<br>
&gt; [hx001:18110] *** on communicator MPI_COMM_WORLD<br>
&gt; [hx001:18110] *** MPI_ERR_TRUNCATE: message truncated<br>
&gt; [hx001:18110] *** MPI_ERRORS_ARE_FATAL (goodbye)<br>
&gt; [hx001:18111] *** An error occurred in MPI_Wait<br>
&gt; [hx001:18111] *** on communicator MPI_COMM_WORLD<br>
&gt; [hx001:18111] *** MPI_ERR_TRUNCATE: message truncated<br>
&gt; [hx001:18111] *** MPI_ERRORS_ARE_FATAL (goodbye)<br>
&gt; mpirun noticed that job rank 0 with PID 18109 on node hx001 exited on<br>
&gt; signal<br>
&gt; 15 (Terminated).<br>
&gt; 1 additional process aborted (not shown)<br>
&gt;<br>
&gt; is it possible also to be cause of the following routine:<br>
&gt; call PPIMAX(mypm,iwork1,1)<br>
&gt;<br>
&gt; subroutine PPIMAX(if,ig,nxp)<br>
&gt; c this subroutine finds parallel maximum for each element of a vector<br>
&gt; c that is, if(j,k) = maximum as a function of k of if(j,k)<br>
&gt; c at the end, all processors contain the same maximum.<br>
&gt; c if = input and output integer data<br>
&gt; c ig = scratch integer array<br>
&gt; c nxp = number of data values in vector<br>
&gt; implicit none<br>
&gt; integer if, ig<br>
&gt; integer nxp<br>
&gt; dimension if(nxp), ig(nxp)<br>
&gt; c common block for parallel processing<br>
&gt; integer nproc, lgrp, lstat, mreal, mint, mcplx, mdouble, lworld<br>
&gt; integer msum, mmax<br>
&gt; parameter(lstat=10)<br>
&gt; c lgrp = current communicator<br>
&gt; c mint = default datatype for integers<br>
&gt; common /PPARMS/ nproc, lgrp, mreal, mint, mcplx, mdouble, lworld<br>
&gt; c mmax = MPI_MAX<br>
&gt; common /PPARMSX/ msum, mmax<br>
&gt; c local data<br>
&gt; integer j, ierr<br>
&gt; c find maximum<br>
&gt; call MPI_ALLREDUCE(if,ig,nxp,mint,mmax,lgrp,ierr)<br>
&gt; c copy output from scratch array<br>
&gt; do 10 j = 1, nxp<br>
&gt; if(j) = ig(j)<br>
&gt; 10 continue<br>
&gt; return<br>
&gt; end<br>
&gt; c-----------------------------------------------------------------------<br>
&gt;<br>
&gt; BTW, should I have a pre-default of msids (msid,msid1,msid2,...msid7)?<br>
&gt;<br>
&gt; Best Regards<br>
&gt; Sincerely<br>
&gt; Amin<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; mpich-discuss mailing list <a href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>
&gt; To manage subscription options or unsubscribe:<br>
&gt; <a href="https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss</a><br>
_______________________________________________<br>
mpich-discuss mailing list     <a href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>
To manage subscription options or unsubscribe:<br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss</a><br>
</blockquote></div><br></div>