10/27/2010:
Can you pls edit the patches a bit? We need to patch adio/common ad_open.c to change line 234 to this:
if (access_mode & ADIO_WRONLY && fd->file_system != ADIO_PLFS ) {
The problem is that ADIO changes WRONLY to RDWR for the write open so that it can do data sieving which is this optimization that it does if lots of people are doing small writes with holes between them. ADIO does a read of the whole region, does the overwrites in memory, and then does a large write. But we don't want that in PLFS and the RDWR open is really slow in PLFS since we create the index structure. When I did this patch, I dropped write open times on turing with 768 procs from 30 seconds to 6.
Also, we need to figure out where to patch it so that it doesn't try
data sieving on PLFS.
By the way, it seems ugly putting PLFS specific code in common but we have to since they don't pass us the original open flag AND there is already filesystem specific code in there for PVFS2 and NFS and TEST.
12/16/2010:
Turns out there is a way to do this purely in ad_plfs in mpich and the problem is that openmpi is using an old version of ROMIO. blech. See email from Rob Ross to John Bent on Oct 27 2010.
I think we also need to do a similar fix for the Cray MPT because mpich I guess requires that we implement ADIOI_GEN_OpenColl
10/27/2010: Can you pls edit the patches a bit? We need to patch adio/common ad_open.c to change line 234 to this: if (access_mode & ADIO_WRONLY && fd->file_system != ADIO_PLFS ) {
The problem is that ADIO changes WRONLY to RDWR for the write open so that it can do data sieving which is this optimization that it does if lots of people are doing small writes with holes between them. ADIO does a read of the whole region, does the overwrites in memory, and then does a large write. But we don't want that in PLFS and the RDWR open is really slow in PLFS since we create the index structure. When I did this patch, I dropped write open times on turing with 768 procs from 30 seconds to 6.
Also, we need to figure out where to patch it so that it doesn't try data sieving on PLFS.
By the way, it seems ugly putting PLFS specific code in common but we have to since they don't pass us the original open flag AND there is already filesystem specific code in there for PVFS2 and NFS and TEST.
12/16/2010: Turns out there is a way to do this purely in ad_plfs in mpich and the problem is that openmpi is using an old version of ROMIO. blech. See email from Rob Ross to John Bent on Oct 27 2010.
I think we also need to do a similar fix for the Cray MPT because mpich I guess requires that we implement ADIOI_GEN_OpenColl