<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi rob,</div><div><span style="line-height: 23.7999992370605px;">I </span><span style="font-family: arial; line-height: 23.3240013122559px; white-space: pre-wrap;">look at the src/mpi/romio/test/coll_perf.c test, and I </span><span style="font-family: arial; line-height: 23.3240013122559px; white-space: pre-wrap;">experimented with the collective and non-collective versions, in single machine collective read is slower than non-collective read, ,my example is behind.</span></div><div><font face="arial"><span style="line-height: 23.3240013122559px; white-space: pre-wrap;">#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
#define  FILE_LENGTH 100000000
#define  UNSIGNEDCHAR_PER_BLK 10
int main( int argc, char **argv )
{
        int myid, numprocs;
        double startTime,readTime,newReadTime;
        unsigned char* buf;
        int bufLen;

        MPI_Datatype fileType;
        MPI_File fh;
        MPI_Status status;
        MPI_Init(&argc,&argv);
        MPI_Comm_rank(MPI_COMM_WORLD,&myid);
        MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
        
        bufLen=FILE_LENGTH/numprocs;
        buf=(unsigned char*) malloc(bufLen);
        MPI_File_open(MPI_COMM_WORLD,"g://test.txt",MPI_MODE_RDWR,MPI_INFO_NULL,&fh);

        MPI_Type_vector(bufLen/UNSIGNEDCHAR_PER_BLK,UNSIGNEDCHAR_PER_BLK,numprocs*UNSIGNEDCHAR_PER_BLK,MPI_UNSIGNED_CHAR,&fileType);
        MPI_Type_commit(&fileType);
        MPI_File_set_view(fh, myid*UNSIGNEDCHAR_PER_BLK, MPI_UNSIGNED_CHAR, fileType, "native", MPI_INFO_NULL);

        startTime=MPI_Wtime();

        //non-collective read
    //MPI_File_read(fh,buf,bufLen,MPI_UNSIGNED_CHAR,&status);

        //collective read
        MPI_File_read_all(fh,buf,bufLen,MPI_UNSIGNED_CHAR,&status);

        readTime=MPI_Wtime()-startTime;

        MPI_Allreduce(&readTime, &newReadTime, 1, MPI_DOUBLE, MPI_MAX,MPI_COMM_WORLD);

        if (myid == 0) 
        {
                printf("%d processes read time = %f sec, read bandwidth = %f Mbytes/sec\n",numprocs, newReadTime, FILE_LENGTH/(1024*1024*newReadTime));
        }

        free(buf);

        MPI_File_close(&fh);

        MPI_Finalize();

}</span></font></div><div><font face="arial"><span style="line-height: 23.3240013122559px; white-space: pre-wrap;"><br></span></font></div><div><font face="arial"><span style="line-height: 23.3240013122559px; white-space: pre-wrap;">the result is </span></font></div><div><font face="arial"><span style="line-height: 23.3240013122559px; white-space: pre-wrap;"><div>non-collective read</div><div>4 processes read time = 1.380783 sec, read bandwidth = 69.067633 Mbytes/sec</div><div><br></div><div>collective read</div><div>4 processes read time = 2.256306 sec, read bandwidth = 42.267062 Mbytes/sec</div></span></font></div><div><font face="arial"><span style="line-height: 23.3240013122559px; white-space: pre-wrap;"><br></span></font></div><div>I am interested in collective read/write, mybe I should experiment collective I/O in cluster, thank you for your answer.</div><div><br></div><div>Best Regard,</div><div>Ice.</div><div><br></div><br><br><br><div style="position:relative;zoom:1"></div><div id="divNeteaseMailCard"></div><br><pre><br>At 2016-04-20 01:49:08, "Rob Latham" <robl@mcs.anl.gov> wrote:
>
>
>On 04/19/2016 07:45 AM, ±ù wrote:
>> Hi,
>> I run programs in one computer, In my tests here, the MPI_File_read_all
>> have been slower than MPI_File_read, could you send me a simple routine
>> that collective read is faster than non-collective read?
>
>Need more information.
>
>The collective calls provide two important optimizations:  reduce the 
>number of file system clients and increase the typical request size.
>
>On a single processor, though, it's possible the collective overhead 
>outweighs the benefits.
>
>How much slower are you seeing?  how many MPI processes?  what kind of 
>file view and memory type?
>
>You might want to look at the src/mpi/romio/test/coll_perf.c test and 
>experiment with the collective and non-collective versions (you'll have 
>to modify the test or pass in hints).
>
>==rob
>_______________________________________________
>discuss mailing list     discuss@mpich.org
>To manage subscription options or unsubscribe:
>https://lists.mpich.org/mailman/listinfo/discuss
</pre></div><br><br><span title="neteasefooter"><p> </p></span>