<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:'bookman old style', 'new york', times, serif;font-size:10pt;color:#000000;"><div></div><div><span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; "><p>Hello,&nbsp;<br></p><p>I have a MPI/C++ code for parallel reading from a single data file. There seems&nbsp;<br>to be some problem which I am not able to figure out. Pls point out my mistake.&nbsp;<br>Here is the code, data file and input:&nbsp;<br></p><p>// example of parallel MPI read from single file, in C++&nbsp;<br>#include &lt;iostream.h&gt;&nbsp;<br>#include &lt;mpi.h&gt;&nbsp;<br></p><p>int main(int argc, char *argv[])&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;int bufsize, buf[15], count,rank,nprocs,i;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_File fh;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_Status
 status;&nbsp;<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;MPI_Init(&amp;argc, &amp;argv);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_Comm_size(MPI_COMM_WORLD, &amp;nprocs);&nbsp;<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;bufsize = sizeof(int)*30 / nprocs ; // local number to read&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;nints = bufsize/sizeof (int);&nbsp;<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;MPI_File_open&nbsp;<br>(MPI_COMM_WORLD,"testfile.dat",MPI_MODE_RDONLY,MPI_INFO_NULL,&amp;fh);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_File_seek(fh,rank*bufsize,MPI_SEEK_SET);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_File_read(fh,&amp;buf,nints,MPI_INT,&amp;status);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_File_close(&amp;fh);&nbsp;<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;if(rank == 0) for(i=0;i&lt;15;i++) cout&lt;&lt;"rank = "&lt;&lt;rank&lt;&lt;" "&lt;&lt;" i&nbsp;<br>= "&lt;&lt;i&lt;&lt;"
 "&lt;&lt;buf[i]&lt;&lt;endl;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;free (buf);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;MPI_Finalize();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;return 0;&nbsp;<br>}&nbsp;</p><p><br></p></span>&nbsp;<span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; ">DATA FILE:&nbsp;</span></div><span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; "><p>1&nbsp;<br>2&nbsp;<br>3&nbsp;<br>4&nbsp;<br>5&nbsp;<br>6&nbsp;<br>7&nbsp;<br>8&nbsp;<br>9&nbsp;<br>10&nbsp;<br>11&nbsp;<br>12&nbsp;<br>13&nbsp;<br>14&nbsp;<br>15&nbsp;<br>16&nbsp;<br>17&nbsp;<br>18&nbsp;<br>19&nbsp;<br>20&nbsp;<br>21&nbsp;<br>22&nbsp;<br>23&nbsp;<br>24&nbsp;<br>25&nbsp;<br>26&nbsp;<br>27&nbsp;<br>28&nbsp;<br>29&nbsp;<br>30&nbsp;<br></p><p>OUTPUT:&nbsp;<br></p><p>mpirun -np 1 MPIfilehandling testfile.dat&nbsp;<br>rank = 0 i = 0 822751754&nbsp;<br>rank = 0 i = 1 856306698&nbsp;<br>rank = 0 i = 2
 889861642&nbsp;<br>rank = 0 i = 3 923416586&nbsp;<br>rank = 0 i = 4 956969264&nbsp;<br>rank = 0 i = 5 170995978&nbsp;<br>rank = 0 i = 6 825362993&nbsp;<br>rank = 0 i = 7 856305972&nbsp;<br>rank = 0 i = 8 170997002&nbsp;<br>rank = 0 i = 9 825625137&nbsp;<br>rank = 0 i = 10 923414840&nbsp;<br>rank = 0 i = 11 170998026&nbsp;<br>rank = 0 i = 12 842009138&nbsp;<br>rank = 0 i = 13 822751794&nbsp;<br>rank = 0 i = 14 171062026&nbsp;</p><p><br></p><p><span class="Apple-style-span" style="font-family: verdana, helvetica, sans-serif; font-size: x-small; "><span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; ">The mistake is not in your application per se. MPI I/O is not&nbsp;</span></span></p></span><span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; ">intended to read in general text files - it is intended for reading&nbsp;<br>files written by the MPI I/O interface. It definitely
 doesn't do the&nbsp;<br>string to integer conversion necessary to read in your input file.&nbsp;</span><div><font class="Apple-style-span" face="verdana, arial, helvetica" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><span class="Apple-style-span" style="font-family: verdana, arial, helvetica; font-size: 12px; ">So if i want to parallelly read a single data file which hasn't written by the MPI I/O, what can i do?</span><div><font face="verdana, helvetica, sans-serif"><br><font color="#00407f" face="bookman old style, new york, times, serif" size="1">--------------------------------------------------------<br>Burak ISIKLI</font></font></div><div><font face="verdana, helvetica, sans-serif"><font color="#00407f" face="bookman old style, new york, times, serif" size="1">Dumlupinar University</font></font></div><div><font face="verdana, helvetica, sans-serif"><font color="#00407f" face="bookman old style, new
 york, times, serif" size="1">Electrical &amp; Electronics -&nbsp;Computer Engineering</font></font></div><div><font face="verdana, helvetica, sans-serif"><font color="#00407f" face="bookman old style, new york, times, serif" size="1"></font>&nbsp;</font></div><div><font face="verdana, helvetica, sans-serif"><font color="#00407f" face="bookman old style, new york, times, serif" size="1"><a rel="nofollow" target="_blank" href="http://burakisikli.wordpress.com">http://burakisikli.wordpress.com</a><br>--------------------------------------------------------</font></font></div><div><br></div><div style="position:fixed"></div>


<!-- cg18.c2.mail.ac4.yahoo.com compressed/chunked Sun Dec 27 06:09:29 PST 2009 -->
</div></div><br>

      </body></html>