[MPICH2-dev] alignment hints for calculating the file domain.

wangdi wangdi at clusterfs.com
Mon Jul 9 23:32:38 CDT 2007


Hello,

We are trying to improve lustre adio driver currently for mpich2. We 
found that
all the file system  use ADIOI_GEN_WriteStridedColl as their collective 
write API in MPICH2.
In this API, it will calculate the file domains and distribute the I/O 
segment evenly around all the
clients according to the file domain size. And, when calculating the 
file domains, it just divide
the whole i/o area(min, max) by the count of the clients, but did not take
into account the specifics of some file systems, which might be 
sensitive to this file_domain_size.
For example, some file system might need special alignment for better 
performance instead of
this evenly divided domain_size.

So could you export a new API (ADIOI_Calc_file_domains) here, then those 
file systems, which are not
sensitive to the alignment, just call current calc_file_domains 
API(might be renamed as
ADIO_GEN_Calc_file_domains), and for those file systems, which need the 
special alignment could get
a alignment hint before real calculation. Maybe the calc file domain API 
could be changed in this way?


ADIOI_XXX_Calc_file_domains()
{
       int alignment = get_xxx_alignment();
       *fd_size_ptr = alignment;

       ADIOI_GEN_Calc_file_domains(......, fd_size_ptr);

 }

ADIOI_GEN_Calc_file_domains(......, *fd_size)
he
{
     int alignment = *fd_size_ptr;
 
     ........


     fd_size = ((max_end_offset - min_st_offset + 1) + nprocs_for_coll -
               1)/nprocs_for_coll;

     if (alignment != 0) {
            fd_size = ((fd_size + alignmentan - 1) / alignment) * alignment;
     }

     ........


    *fd_size_ptr = fd_size;
 
}



Thanks








-- 
Regards,
Tom Wangdi    
--
Cluster File Systems, Inc
Software Engineer 
http://www.clusterfs.com




More information about the mpich2-dev mailing list