Hi all, Rajeev<br><br>Well it is still early in Argonne now, here is 10pm lol<br><br>I was testing some reads, and i see that Collective read_all perform slower times to complete than read only operation. Is this correct? or it would be notable only in great files?
<br><br><div id="result_box" dir="ltr">Below, it follows the code:</div><br><span style="font-style: italic;">#include &lt;stdio.h&gt;</span><br style="font-style: italic;"><span style="font-style: italic;">#include &lt;stdlib.h
&gt;</span><br style="font-style: italic;"><span style="font-style: italic;">#include &lt;unistd.h&gt;</span><br style="font-style: italic;"><span style="font-style: italic;">#include &lt;string.h&gt;</span><br style="font-style: italic;">
<span style="font-style: italic;">#include &lt;mpi.h&gt;</span><br style="font-style: italic;"><span style="font-style: italic;">#include &lt;string.h&gt;</span><br style="font-style: italic;"><span style="font-style: italic;">
#define FILESIZE 1048576</span><br style="font-style: italic;"><span style="font-style: italic;">#define INTS_PER_BLK 16</span><br style="font-style: italic;"><span style="font-style: italic;">int main(int argc, char **argv)
</span><br style="font-style: italic;"><span style="font-style: italic;">{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; int *buf, rank, nprocs, nints, bufsize;</span><br style="font-style: italic;">
<span style="font-style: italic;">&nbsp;&nbsp;&nbsp; double tempo_total, tempo1, tempo2, tempo;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_File fh;</span><br style="font-style: italic;"><span style="font-style: italic;">
&nbsp;&nbsp;&nbsp; MPI_Datatype filetype;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Init(&amp;argc,&amp;argv);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Comm_size(MPI_COMM_WORLD, &amp;nprocs);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; bufsize = FILESIZE/nprocs;
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; buf = (int *) malloc(bufsize);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; nints = bufsize/sizeof(int);</span><br style="font-style: italic;">
<span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_File_open(MPI_COMM_WORLD, &quot;datafile&quot;, MPI_MODE_RDONLY,</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_INFO_NULL, &amp;fh);</span><br style="font-style: italic;">
<span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Type_vector(nints/INTS_PER_BLK, INTS_PER_BLK,INTS_PER_BLK*nprocs, MPI_INT, &amp;filetype);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Type_commit(&amp;filetype);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_File_set_view(fh, INTS_PER_BLK*sizeof(int)*rank, MPI_INT,</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; filetype, &quot;native&quot;, MPI_INFO_NULL);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; tempo1=MPI_Wtime();</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_File_read_all(fh, buf, nints, MPI_INT, MPI_STATUS_IGNORE);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; tempo2=MPI_Wtime();</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; tempo=tempo2-tempo1;</span><br style="font-style: italic;">
<span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;\nPrinting Time of current process--&gt; foi %.10f&quot;,tempo);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Allreduce(&amp;tempo, &amp;tempo_total, 1, MPI_DOUBLE, MPI_MAX,MPI_COMM_WORLD);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; if(rank==0)</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; {</span><br style="font-style: italic;"><span style="font-style: italic;">
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf(&quot;\nThe longest time is %.10f\n&quot;,tempo_total);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; }</span><br style="font-style: italic;"><span style="font-style: italic;">
&nbsp;&nbsp;&nbsp; MPI_File_close(&amp;fh);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Type_free(&amp;filetype);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; free(buf);
</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; MPI_Finalize();</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp; return 0;</span><br style="font-style: italic;"><span style="font-style: italic;">
}</span><br><br><br>Thanks.<br>Luiz.<br><br><br><br><br><br><br><div><span class="gmail_quote">2007/1/23, Rajeev Thakur &lt;<a href="mailto:thakur@mcs.anl.gov">thakur@mcs.anl.gov</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Unless dimensao is 1, the Allreduce won&#39;t work because the 
input and output buffers are single element doubles (not 
arrays).</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Rajeev</font></span></div><br>
<blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
  <div dir="ltr" align="left" lang="en-us">
  <hr>
  <font face="Tahoma" size="2"><b>From:</b> Luiz Mendes 
  [mailto:<a href="mailto:luizmendesw@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">luizmendesw@gmail.com</a>] <br><b>Sent:</b> Tuesday, January 23, 2007 6:10 
  PM<br><b>To:</b> mpich-discuss<br><b>Cc:</b> Rajeev Thakur<br><b>Subject:</b> 
  Re: [MPICH] Re: Problems with allreduce<br></font><br></div><div><span class="e" id="q_110517b06b2c2833_1">
  <div></div>Hi all, Rajeev<br><br>I correct this, and i made some 
  simplifications, and the problems appears to be caused by the fact of i add 
  double variable declarations.<br><br>It is very strange. Some light to 
  this?<br><br>Thanks<br>Luiz<br><br>
  <div><span class="gmail_quote">2007/1/23, Rajeev Thakur &lt;<a href="mailto:thakur@mcs.anl.gov" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">thakur@mcs.anl.gov</a>&gt;:</span>
  <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div>
    <div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Where 
    have you allocated space for arquivo_nome?</font></span></div>
    <div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
    <div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Rajeev</font></span></div><br>
    <blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
      <div dir="ltr" align="left" lang="en-us">
      <hr>
      <font face="Tahoma" size="2"><b>From:</b> <a href="mailto:owner-mpich-discuss@mcs.anl.gov" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">owner-mpich-discuss@mcs.anl.gov</a> [mailto:<a href="mailto:owner-mpich-discuss@mcs.anl.gov" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
owner-mpich-discuss@mcs.anl.gov</a>] <b>On Behalf Of 
      </b>Luiz Mendes<br><b>Sent:</b> Tuesday, January 23, 2007 5:05 
      PM<br><b>To:</b> mpich-discuss<br><b>Subject:</b> [MPICH] Re: Problems 
      with allreduce<br></font><br></div>
      <div><span>
      <div></div>Discard variable &quot;tempo&quot;, without this continue getting 
      error.<br><br>thanks<br><br>
      <div><span class="gmail_quote">2007/1/23, Luiz Mendes &lt;<a href="mailto:luizmendesw@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">luizmendesw@gmail.com</a>&gt;:</span> 
      <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi 
        all, i am with a problem in operation MPI_Allreduce. <br><br>The code is 
        the following below: <br><br><span style="font-style: italic;">int 
        main(int argc, char *argv[])</span><br style="font-style: italic;"><span style="font-style: italic;">{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;int opcao, 
        dimensao,nome_tamanho, processo, num_procs;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;int coluna, contador_bytes, contador_bytes_parcial, interacao, 
        contador_total_bytes; </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;char&nbsp; *palavra = 
        NULL, *arquivo_nome;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        char *arquivo_pv;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;char 
        procname[MPI_MAX_PROCESSOR_NAME];</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;double inicio, termino, tempo_parcial, soma_tempo_total, 
        valor;</span> <br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;long long 
        offset;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;MPI_Datatype 
        linhaMatriz;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;MPI_File 
        arquivo;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;MPI_Status 
        status;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Init(&amp;argc, &amp;argv);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Comm_rank(MPI_COMM_WORLD, &amp;processo); </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Comm_size(MPI_COMM_WORLD, &amp;num_procs);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Get_processor_name(procname,&amp;nome_tamanho); </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;while ((opcao = 
        getopt(argc, argv, &quot;A:D:P:h&quot;)) != EOF)</span> <br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;switch(opcao) </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;case &#39;A&#39;: </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;arquivo_pv =optarg; </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;sprintf(arquivo_nome,&quot;%s&quot;,arquivo_pv);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;break; 
        </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;case &#39;D&#39;: </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;sscanf 
        (optarg, &quot;%d&quot;, &amp;dimensao); </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;break;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;case &#39;P&#39;:</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;sprintf(arquivo_nome,&quot;pvfs2:/mnt/pvfs2/%s&quot;,arquivo_pv);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</span> <br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;}</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;</span><br style="font-style: italic;"><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Type_contiguous(dimensao,MPI_DOUBLE,&amp;linhaMatriz);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Type_commit(&amp;linhaMatriz); </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_File_open(MPI_COMM_WORLD, arquivo_nome, MPI_MODE_CREATE | 
        MPI_MODE_WRONLY, MPI_INFO_NULL, &amp;arquivo);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;for(interacao=0; 
        interacao&lt;(dimensao/num_procs);interacao++)</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;double 
        matrizlocal[dimensao];</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;valor=processo*(dimensao/num_procs)*dimensao+interacao*dimensao; 
        </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;offset=valor*sizeof(double);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;for(coluna=0; coluna&lt;dimensao; coluna++) 
        </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;{</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;matrizlocal[coluna]=valor+coluna;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;}</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;MPI_File_set_view(arquivo, offset, MPI_DOUBLE, linhaMatriz, 
        &quot;native&quot;, MPI_INFO_NULL); </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;inicio=MPI_Wtime();</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;MPI_File_write(arquivo, matrizlocal, 1, linhaMatriz, &amp;status); 
        </span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;termino=MPI_Wtime();</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
        &nbsp;tempo_parcial=termino-inicio;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; 
        &nbsp;contador_bytes_parcial+=sizeof(matrizlocal);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;&nbsp;&nbsp; &nbsp;soma_tempo_total+=tempo_parcial;</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;}</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_File_close(&amp;arquivo);</span><br style="font-style: italic;"><span style="font-weight: bold; font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Allreduce(&amp;soma_tempo_total, &amp;tempo, dimensao, 
        MPI_DOUBLE, MPI_MAX,MPI_COMM_WORLD);</span><br style="font-style: italic;"><span style="font-style: italic;">&nbsp;&nbsp; 
        &nbsp;MPI_Finalize();&nbsp;&nbsp;&nbsp; <br>.......<br><br></span><br>Do 
        you know what could be happening?<br><br>Thanks<br><span><br>Luiz 
        Mendes<br></span></blockquote></div><br></span></div></blockquote></div></blockquote></div><br></span></div></blockquote></div>

</blockquote></div><br>