<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>Dear Chan,</FONT></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>I use a PC with following specification:</FONT></SPAN><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>Windows 7 OS, 64 Bit, 4 GB of RAM, Intel® Core(TM)2Duo CPU 3.34 GHz</FONT></SPAN><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> <o:p></o:p></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>In my small project, I want to send and receive an array of data type. In the following, I have explained my small project. Source code also&nbsp;is attached. </FONT></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri></FONT></SPAN>&nbsp;</DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>I defined <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">Particle</I></B> data type that contains 4 INTEGER4, 11 INTEGER2, 2 LOGICAL and 2 INTEGER4 array with size 6. To define an MPI data type for the <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">particle </I></B>data type, first I defined <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">columntype</I></B> type for INTEGER4 array with size 6. Then I structured <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">particletype</I></B> and committed it. I defined two array
 (<B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">p</I></B></FONT></SPAN><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US>,</SPAN><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US>particles</SPAN></I></B><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US>) of type <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style:
 normal">particletype</I></B></SPAN></FONT><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> and allocated them: </SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><B><SPAN style="COLOR: blue">ALLOCATE</SPAN></B>(particles(0:NELEM));<B><SPAN style="COLOR: blue">ALLOCATE</SPAN></B>(p(0:1010)). <o:p></o:p></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US>I initialized </SPAN><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>particles</FONT></SPAN></I></B><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> array. For sending specific segments of </SPAN><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri;
 mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>particles </FONT></SPAN></I></B><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US>array from server process (rank=0) to array </SPAN><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>P</FONT></SPAN></I></B><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> on Client
 processes, I defined </SPAN><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>indextype</FONT></SPAN></I></B><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US> MPI data type. I want to get the array on client processes without gap and continuancely.</SPAN><SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><o:p></o:p></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>On the Client process last cell have not received truly. Even in sending one cell result are as following:<o:p></o:p></FONT></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>D:\Console1\Debug&gt;mpiexec -n 2 Console1.exe<o:p></o:p></FONT></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>rank=<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>1<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>p=<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>1<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>7<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>8<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>18 F T<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-842150451</FONT></SPAN><SPAN style="FONT-SIZE: 12pt;
 mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;</SPAN>-842150451<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-842150451<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-842150451<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-842150451<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-842150451<o:p></o:p></FONT></SPAN></DIV>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-SIZE: 12pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: DE" lang=EN-US><FONT face=Calibri>Previously a similar question has been mention about sending structured data of structures. This discussion also is attached.<o:p></o:p></FONT></SPAN></DIV><BR>--- On <B>Thu, 4/7/11, Anthony Chan <I>&lt;chan@mcs.anl.gov&gt;</I></B> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>From: Anthony Chan &lt;chan@mcs.anl.gov&gt;<BR>Subject: Re: [mpich-discuss] Is MPI developed for Fortran as well as C?<BR>To: mpich-discuss@mcs.anl.gov<BR>Date: Thursday, April 7, 2011, 8:36 PM<BR><BR>
<DIV class=plainMail><BR><BR>----- Original Message -----<BR>&gt; Dear all,<BR>&gt; Is MPI developed for Fortran as well as C?<BR>&gt; <BR><BR>MPI standard defines a Fortran binding which is provided by MPICH2.<BR>Do you have trouble in compiling/running the sample code or you have<BR>trouble install MPICH2.<BR><BR>A.Chan<BR><BR>&gt; <BR>&gt; <BR>&gt; I work on a Fortran project and I want to do massage passing works<BR>&gt; between nodes with MPI routines. I was able to send and receive simple<BR>&gt; arrays but for sending and receiving an array of data type, it did not<BR>&gt; work. In the attached files I have sent my previous Email that I had<BR>&gt; sent to MPICH Discuss mailing list. In the Email I have reported<BR>&gt; examination result of an example that I have gotten from Prof.<BR>&gt; zkovacs. In that Email someone else, also have discussed. Prof.<BR>&gt; zkovacs had wanted to send and receive an array of data type in C<BR>&gt; programming
 language. I want to do similar work in Fortran.<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; Please give your opinion or in case that development of MPICH for<BR>&gt; Fortran is not completed, introduce other implementation of MPI for<BR>&gt; Fortran.<BR>&gt; Another question. I want to write equivalent code of following C code<BR>&gt; in Fortran. C code works truly but Fortran code does not. What is the<BR>&gt; problem?<BR>&gt; Attached files contain *.pdf file of previous Email and following<BR>&gt; example. Also source code files are attached.<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; #include "mpi.h"<BR>&gt; #include &lt;stdio.h&gt;<BR>&gt; #include &lt;stdlib.h&gt;<BR>&gt; <BR>&gt; int main (int argc, char *argv[])<BR>&gt; {<BR>&gt; int position, i, j, a[2], myrank, num_proc;<BR>&gt; char buff[1000];<BR>&gt; MPI_Status stat;<BR>&gt; MPI_Init(&amp;argc,
 &amp;argv);<BR>&gt; MPI_Comm_size(MPI_COMM_WORLD, &amp;num_proc );<BR>&gt; MPI_Comm_rank(MPI_COMM_WORLD, &amp;myrank);<BR>&gt; if (myrank == 0)<BR>&gt; {<BR>&gt; /* SENDER CODE */<BR>&gt; i = 1; j = 2; a[0] = 3;<BR>&gt; printf( "Proc %d: sending %u %u %u.th portion to proc 0.\n", myrank,<BR>&gt; i, j, a );<BR>&gt; position = 0;<BR>&gt; MPI_Pack(&amp;i, 1, MPI_INT, buff, 1000, &amp;position, MPI_COMM_WORLD);<BR>&gt; MPI_Pack(&amp;j, 1, MPI_INT, buff, 1000, &amp;position, MPI_COMM_WORLD);<BR>&gt; MPI_Send( buff, position, MPI_PACKED, 1, 0, MPI_COMM_WORLD);<BR>&gt; }<BR>&gt; else /* RECEIVER CODE */<BR>&gt; {<BR>&gt; MPI_Recv( a, 2, MPI_INT, 0, 0, MPI_COMM_WORLD,&amp;stat);<BR>&gt; printf( "Proc %d: reciving %u %u %u.th portion to proc 0.\n", myrank,<BR>&gt; i, j, a[0] );<BR>&gt; }<BR>&gt; MPI_Finalize();<BR>&gt; return 0;<BR>&gt; }<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; program main<BR>&gt; implicit none<BR>&gt; include 'mpif.h'<BR>&gt; integer a(0:1)<BR>&gt;
 integer position, i, j, a(0:1), rank, numtasks;<BR>&gt; character buff(0:1000);<BR>&gt; integer stat(MPI_STATUS_SIZE)<BR>&gt; call MPI_INIT(ierr)<BR>&gt; call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)<BR>&gt; call MPI_COMM_SIZE(MPI_COMM_WORLD, numtasks, ierr)<BR>&gt; if (rank == 0) then<BR>&gt; !/* SENDER CODE */<BR>&gt; position = 0;<BR>&gt; i=1;j=2;<BR>&gt; CALL MPI_Pack(i, 1, MPI_INTEGER, buff, 1000, position, MPI_COMM_WORLD,<BR>&gt; ierr);<BR>&gt; CALL MPI_Pack(j, 1, MPI_INTEGER, buff, 1000, position, MPI_COMM_WORLD,<BR>&gt; ierr);<BR>&gt; CALL MPI_Send( buff, position, MPI_PACKED, 1, 0, MPI_COMM_WORLD,<BR>&gt; ierr);<BR>&gt; else !/* RECEIVER CODE */<BR>&gt; CALL MPI_Recv( a, 2, MPI_INTEGER, 0, 0, MPI_COMM_WORLD, ierr);<BR>&gt; position = 0;<BR>&gt; CALL MPI_Unpack(a, 2, position, i, 1, MPI_INTEGER, MPI_COMM_WORLD,<BR>&gt; ierr);<BR>&gt; CALL MPI_Unpack(a, 2, position, j, 1, MPI_INTEGER, MPI_COMM_WORLD,<BR>&gt; ierr);<BR>&gt; Write(*,*) 'i , j = '
 , i,j<BR>&gt; END IF<BR>&gt; call MPI_FINALIZE(ierr)<BR>&gt; end program main<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; Best Regards,<BR>&gt; --<BR>&gt; Hossein Beyrami<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; mpich-discuss mailing list<BR>&gt; <A href="http://us.mc1617.mail.yahoo.com/mc/compose?to=mpich-discuss@mcs.anl.gov" ymailto="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</A><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<BR><A href="http://us.mc1617.mail.yahoo.com/mc/compose?to=mpich-discuss@mcs.anl.gov" ymailto="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</A><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></DIV></BLOCKQUOTE></td></tr></table><br>