AMPI #952: update ROMIO to MPICH2-1.4.1p1 33/4933/17
authorMatthias Diener <mdiener@illinois.edu>
Wed, 16 Jan 2019 19:06:52 +0000 (13:06 -0600)
committerRonak Buch <rabuch2@illinois.edu>
Thu, 14 Feb 2019 18:22:29 +0000 (12:22 -0600)
This is the most recent version of ROMIO that
works with AMPI. Newer versions require the
external32 data representation.

Change-Id: I53ad12d4a988b225aaa8a7e9b9a213d36bc3d7cf

691 files changed:
src/libs/ck-libs/ampi/Makefile
src/libs/ck-libs/ampi/romio/.config_params [deleted file]
src/libs/ck-libs/ampi/romio/Makefile.in
src/libs/ck-libs/ampi/romio/README
src/libs/ck-libs/ampi/romio/acconfig.h [deleted file]
src/libs/ck-libs/ampi/romio/aclocal.m4 [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_close.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_flush.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_getsh.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_pset.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_pset.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_rdcoll.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_read.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_setsh.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_tuning.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_tuning.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_wrcoll.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_write.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bglockless/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bglockless/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bglockless/ad_bglockless.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bglockless/ad_bglockless.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_bglockless/ad_bglockless_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_close.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_delete.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_flush.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_read.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_resize.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/ad_gridftp_write.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_gridftp/globus_routines.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_hfs/README [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs.c
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs.h
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_flush.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_hints.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_hfs/ad_hfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_lustre/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/README [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_aggregate.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_rwcontig.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_wrcoll.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_lustre/ad_lustre_wrstr.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs.h
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_done.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_flush.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_getsh.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_iread.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_iwrite.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_setsh.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_wait.c
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_nfs/ad_nfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs.h
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_close.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_done.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_flush.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_hints.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_iread.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_iwrite.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_wait.c
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ntfs/ad_ntfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_panfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs_read.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs_resize.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_panfs/ad_panfs_write.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs.h
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_done.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_flush.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_iread.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_iwrite.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_resize.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_wait.c
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pfs/ad_pfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_piofs/README [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs.h
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_flush.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_resize.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_piofs/ad_piofs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs.h
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_close.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_delete.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_flush.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs/ad_pvfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_aio.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_close.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_common.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_common.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_delete.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_flush.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_io.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_io_dtype.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_io_list.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_read.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_read_list_classic.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_resize.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_write.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_sfs/README [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs.c
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs.h
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_flush.c
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_hints.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_read.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_resize.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_sfs/ad_sfs_write.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_testfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_testfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs.h
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_close.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_delete.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_done.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_flush.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_getsh.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_iread.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_iwrite.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_rdcoll.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_seek.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_setsh.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_wait.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_wrcoll.c
src/libs/ck-libs/ampi/romio/adio/ad_testfs/ad_testfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_ufs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs.c
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs.h
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_fcntl.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_flush.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_hints.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_read.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_resize.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_ufs/ad_ufs_write.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/Makefile.in
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs.h
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_close.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_done.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_fcntl.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_flush.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_hints.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_iread.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_iwrite.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_open.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_rdcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_read.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_resize.c
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_seek.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_wait.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_wrcoll.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/ad_xfs/ad_xfs_write.c
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_close.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_common.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_common.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_delete.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_flush.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_io.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_open.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_read_list.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_resize.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/ad_zoidfs/ad_zoidfs_write_list.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/Makefile.in
src/libs/ck-libs/ampi/romio/adio/common/ad_aggregate.c
src/libs/ck-libs/ampi/romio/adio/common/ad_aggregate_new.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_close.c
src/libs/ck-libs/ampi/romio/adio/common/ad_coll_build_req_new.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_coll_exch_new.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_darray.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_delete.c
src/libs/ck-libs/ampi/romio/adio/common/ad_done.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_done_fake.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_end.c
src/libs/ck-libs/ampi/romio/adio/common/ad_fcntl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_features.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_flush.c
src/libs/ck-libs/ampi/romio/adio/common/ad_fstype.c
src/libs/ck-libs/ampi/romio/adio/common/ad_get_sh_fp.c
src/libs/ck-libs/ampi/romio/adio/common/ad_hints.c
src/libs/ck-libs/ampi/romio/adio/common/ad_init.c
src/libs/ck-libs/ampi/romio/adio/common/ad_io_coll.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_iopen.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_iread.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_iread_fake.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_iwrite.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_iwrite_fake.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_open.c
src/libs/ck-libs/ampi/romio/adio/common/ad_opencoll.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_opencoll_failsafe.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_opencoll_scalable.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_prealloc.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_read.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_read_coll.c
src/libs/ck-libs/ampi/romio/adio/common/ad_read_str.c
src/libs/ck-libs/ampi/romio/adio/common/ad_read_str_naive.c
src/libs/ck-libs/ampi/romio/adio/common/ad_resize.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_seek.c
src/libs/ck-libs/ampi/romio/adio/common/ad_set_sh_fp.c
src/libs/ck-libs/ampi/romio/adio/common/ad_set_view.c
src/libs/ck-libs/ampi/romio/adio/common/ad_subarray.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_wait.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_wait_fake.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_write.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_write_coll.c
src/libs/ck-libs/ampi/romio/adio/common/ad_write_nolock.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/ad_write_str.c
src/libs/ck-libs/ampi/romio/adio/common/ad_write_str_naive.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/adi_close.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/async_list.c
src/libs/ck-libs/ampi/romio/adio/common/byte_offset.c
src/libs/ck-libs/ampi/romio/adio/common/cb_config_list.c
src/libs/ck-libs/ampi/romio/adio/common/eof_offset.c
src/libs/ck-libs/ampi/romio/adio/common/error.c
src/libs/ck-libs/ampi/romio/adio/common/flatten.c
src/libs/ck-libs/ampi/romio/adio/common/gencheck.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/common/get_fp_posn.c
src/libs/ck-libs/ampi/romio/adio/common/greq_fns.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/heap-sort.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/iscontig.c
src/libs/ck-libs/ampi/romio/adio/common/lock.c
src/libs/ck-libs/ampi/romio/adio/common/malloc.c
src/libs/ck-libs/ampi/romio/adio/common/req_malloc.c
src/libs/ck-libs/ampi/romio/adio/common/setfn.c [deleted file]
src/libs/ck-libs/ampi/romio/adio/common/shfp_fname.c
src/libs/ck-libs/ampi/romio/adio/common/status_setb.c
src/libs/ck-libs/ampi/romio/adio/common/strfns.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/common/system_hints.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/include/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/include/BaseIOErrMsgs.msg
src/libs/ck-libs/ampi/romio/adio/include/adio.h
src/libs/ck-libs/ampi/romio/adio/include/adio_cb_config_list.h
src/libs/ck-libs/ampi/romio/adio/include/adio_extern.h
src/libs/ck-libs/ampi/romio/adio/include/adioi.h
src/libs/ck-libs/ampi/romio/adio/include/adioi_errmsg.h
src/libs/ck-libs/ampi/romio/adio/include/adioi_error.h
src/libs/ck-libs/ampi/romio/adio/include/adioi_fs_proto.h
src/libs/ck-libs/ampi/romio/adio/include/heap-sort.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/include/mpio_error.h
src/libs/ck-libs/ampi/romio/adio/include/mpipr.h
src/libs/ck-libs/ampi/romio/adio/include/mpisgi2.h [deleted file]
src/libs/ck-libs/ampi/romio/adio/include/mpiu_greq.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/adio/include/romioconf.h.in
src/libs/ck-libs/ampi/romio/adio/sgi/mpi3.1/mpi.h [deleted file]
src/libs/ck-libs/ampi/romio/adio/sgi/mpi3.1/mpif.h [deleted file]
src/libs/ck-libs/ampi/romio/common/dataloop/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/darray_support.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_blockindexed.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_contig.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_indexed.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_pairtype.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_struct.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_create_vector.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/dataloop_parts.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/romio_dataloop.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/romio_dataloop.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/romio_segment_ops.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/segment.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/segment_ops.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/subarray_support.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/typesize_support.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/common/dataloop/typesize_support.h [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_am.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_atomic.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_attr_alias.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_bugfix.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_cache.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_cc.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_cxx.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_f77.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_f77old.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_fc.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_libs.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_make.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_mpi.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_romio.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_runlog.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_shl.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_subcfg.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/aclocal_util.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/ax_prefix_config_h.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/ax_tls.m4 [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/confdb/config.guess [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/confdb/config.sub [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/confdb/depcomp [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/confdb/install-sh [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/confdb/missing [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/configure
src/libs/ck-libs/ampi/romio/configure.in
src/libs/ck-libs/ampi/romio/configure2.in [deleted file]
src/libs/ck-libs/ampi/romio/doc/Makefile [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/README [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/makepubpage.sh [new file with mode: 0755]
src/libs/ck-libs/ampi/romio/doc/pubs.bib [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/romio.bib [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/source-guide.tex [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/users-guide.pdf [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/doc/users-guide.tex [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/include/mpio.h.in
src/libs/ck-libs/ampi/romio/include/mpiof.h.in
src/libs/ck-libs/ampi/romio/localdefs.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/Makefile.in
src/libs/ck-libs/ampi/romio/mpi-io/close.c
src/libs/ck-libs/ampi/romio/mpi-io/delete.c
src/libs/ck-libs/ampi/romio/mpi-io/file_c2f.c
src/libs/ck-libs/ampi/romio/mpi-io/file_f2c.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/fortran/Makefile.in
src/libs/ck-libs/ampi/romio/mpi-io/fortran/closef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/deletef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/fsyncf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_amodef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_atomf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_bytofff.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_errhf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_extentf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_groupf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_infof.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_posn_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_posnf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_sizef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/get_viewf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iotestf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iowaitf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iread_atf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iread_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/ireadf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iwrite_atf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iwrite_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/iwritef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/openf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/preallocf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/rd_atallbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/rd_atallef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_allbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_allef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_allf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_atallf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_atf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_ordbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_ordef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_ordf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/read_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/readf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/seek_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/seekf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/set_atomf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/set_errhf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/set_infof.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/set_sizef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/set_viewf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/wr_atallbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/wr_atallef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_allbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_allef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_allf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_atallf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_atf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_ordbf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_ordef.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_ordf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/write_shf.c
src/libs/ck-libs/ampi/romio/mpi-io/fortran/writef.c
src/libs/ck-libs/ampi/romio/mpi-io/fsync.c
src/libs/ck-libs/ampi/romio/mpi-io/get_amode.c
src/libs/ck-libs/ampi/romio/mpi-io/get_atom.c
src/libs/ck-libs/ampi/romio/mpi-io/get_bytoff.c
src/libs/ck-libs/ampi/romio/mpi-io/get_errh.c
src/libs/ck-libs/ampi/romio/mpi-io/get_extent.c
src/libs/ck-libs/ampi/romio/mpi-io/get_group.c
src/libs/ck-libs/ampi/romio/mpi-io/get_info.c
src/libs/ck-libs/ampi/romio/mpi-io/get_posn.c
src/libs/ck-libs/ampi/romio/mpi-io/get_posn_sh.c
src/libs/ck-libs/ampi/romio/mpi-io/get_size.c
src/libs/ck-libs/ampi/romio/mpi-io/get_view.c
src/libs/ck-libs/ampi/romio/mpi-io/glue/default/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/default/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/default/mpio_err.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/default/mpio_file.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich1/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich1/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich1/mpio_err.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich1/mpio_file.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich2/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich2/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich2/mpio_err.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/glue/mpich2/mpio_file.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/ioreq_c2f.c
src/libs/ck-libs/ampi/romio/mpi-io/ioreq_f2c.c
src/libs/ck-libs/ampi/romio/mpi-io/iotest.c
src/libs/ck-libs/ampi/romio/mpi-io/iotestall.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iotestany.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iotestsome.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iowait.c
src/libs/ck-libs/ampi/romio/mpi-io/iowaitall.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iowaitany.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iowaitsome.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/iread.c
src/libs/ck-libs/ampi/romio/mpi-io/iread_at.c
src/libs/ck-libs/ampi/romio/mpi-io/iread_sh.c
src/libs/ck-libs/ampi/romio/mpi-io/iwrite.c
src/libs/ck-libs/ampi/romio/mpi-io/iwrite_at.c
src/libs/ck-libs/ampi/romio/mpi-io/iwrite_sh.c
src/libs/ck-libs/ampi/romio/mpi-io/mpich2_fileutil.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/mpioimpl.h
src/libs/ck-libs/ampi/romio/mpi-io/mpioprof.h
src/libs/ck-libs/ampi/romio/mpi-io/mpir-mpioinit.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/mpiu_greq.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/open.c
src/libs/ck-libs/ampi/romio/mpi-io/prealloc.c
src/libs/ck-libs/ampi/romio/mpi-io/rd_atallb.c
src/libs/ck-libs/ampi/romio/mpi-io/rd_atalle.c
src/libs/ck-libs/ampi/romio/mpi-io/read.c
src/libs/ck-libs/ampi/romio/mpi-io/read_all.c
src/libs/ck-libs/ampi/romio/mpi-io/read_allb.c
src/libs/ck-libs/ampi/romio/mpi-io/read_alle.c
src/libs/ck-libs/ampi/romio/mpi-io/read_at.c
src/libs/ck-libs/ampi/romio/mpi-io/read_atall.c
src/libs/ck-libs/ampi/romio/mpi-io/read_ord.c
src/libs/ck-libs/ampi/romio/mpi-io/read_ordb.c
src/libs/ck-libs/ampi/romio/mpi-io/read_orde.c
src/libs/ck-libs/ampi/romio/mpi-io/read_sh.c
src/libs/ck-libs/ampi/romio/mpi-io/register_datarep.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi-io/seek.c
src/libs/ck-libs/ampi/romio/mpi-io/seek_sh.c
src/libs/ck-libs/ampi/romio/mpi-io/set_atom.c
src/libs/ck-libs/ampi/romio/mpi-io/set_errh.c
src/libs/ck-libs/ampi/romio/mpi-io/set_info.c
src/libs/ck-libs/ampi/romio/mpi-io/set_size.c
src/libs/ck-libs/ampi/romio/mpi-io/set_view.c
src/libs/ck-libs/ampi/romio/mpi-io/wr_atallb.c
src/libs/ck-libs/ampi/romio/mpi-io/wr_atalle.c
src/libs/ck-libs/ampi/romio/mpi-io/write.c
src/libs/ck-libs/ampi/romio/mpi-io/write_all.c
src/libs/ck-libs/ampi/romio/mpi-io/write_allb.c
src/libs/ck-libs/ampi/romio/mpi-io/write_alle.c
src/libs/ck-libs/ampi/romio/mpi-io/write_at.c
src/libs/ck-libs/ampi/romio/mpi-io/write_atall.c
src/libs/ck-libs/ampi/romio/mpi-io/write_ord.c
src/libs/ck-libs/ampi/romio/mpi-io/write_ordb.c
src/libs/ck-libs/ampi/romio/mpi-io/write_orde.c
src/libs/ck-libs/ampi/romio/mpi-io/write_sh.c
src/libs/ck-libs/ampi/romio/mpi2-other/array/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi2-other/array/Makefile.in
src/libs/ck-libs/ampi/romio/mpi2-other/array/darray.c
src/libs/ck-libs/ampi/romio/mpi2-other/array/fortran/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi2-other/array/fortran/Makefile.in
src/libs/ck-libs/ampi/romio/mpi2-other/array/fortran/darrayf.c
src/libs/ck-libs/ampi/romio/mpi2-other/array/fortran/subarrayf.c
src/libs/ck-libs/ampi/romio/mpi2-other/array/subarray.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi2-other/info/Makefile.in
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/Makefile.in
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_createf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_deletef.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_dupf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_freef.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_getf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_getnksf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_getnthf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_getvlnf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/fortran/info_setf.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_c2f.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_create.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_delete.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_dup.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_f2c.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_free.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_get.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_getnks.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_getnth.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_getvln.c
src/libs/ck-libs/ampi/romio/mpi2-other/info/info_set.c
src/libs/ck-libs/ampi/romio/test-internal/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test-internal/Makefile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test-internal/file_realms_test.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test-internal/heap_test.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test-internal/io_bounds_test.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/.codingcheck [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/Makefile.in
src/libs/ck-libs/ampi/romio/test/Mfile.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/README
src/libs/ck-libs/ampi/romio/test/aggregation1.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/aggregation2.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/async-multiple.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/async.c
src/libs/ck-libs/ampi/romio/test/atomicity.c
src/libs/ck-libs/ampi/romio/test/big_extents.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/coll_perf.c
src/libs/ck-libs/ampi/romio/test/coll_test.c
src/libs/ck-libs/ampi/romio/test/creat_excl.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/error.c
src/libs/ck-libs/ampi/romio/test/excl.c
src/libs/ck-libs/ampi/romio/test/fcoll_test.f.in
src/libs/ck-libs/ampi/romio/test/file_info.c
src/libs/ck-libs/ampi/romio/test/fmisc.f.in
src/libs/ck-libs/ampi/romio/test/fperf.f.in
src/libs/ck-libs/ampi/romio/test/hindexed.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/i_noncontig.c
src/libs/ck-libs/ampi/romio/test/large_array.c
src/libs/ck-libs/ampi/romio/test/large_file.c.in
src/libs/ck-libs/ampi/romio/test/misc.c.in
src/libs/ck-libs/ampi/romio/test/noncontig.c
src/libs/ck-libs/ampi/romio/test/noncontig_coll.c
src/libs/ck-libs/ampi/romio/test/noncontig_coll2.c
src/libs/ck-libs/ampi/romio/test/ordered_fp.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/perf.c
src/libs/ck-libs/ampi/romio/test/pfcoll_test.f.in
src/libs/ck-libs/ampi/romio/test/psimple.c
src/libs/ck-libs/ampi/romio/test/rtest.in [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/test/runtests.in
src/libs/ck-libs/ampi/romio/test/shared_fp.c
src/libs/ck-libs/ampi/romio/test/simple.c
src/libs/ck-libs/ampi/romio/test/split_coll.c
src/libs/ck-libs/ampi/romio/test/status.c
src/libs/ck-libs/ampi/romio/test/std/async.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/atomicity.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/coll_test.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/error.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/excl.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/fcoll_test.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/file_info.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/fmisc.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/i_noncontig.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/misc.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/noncontig.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/noncontig_coll.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/noncontig_coll2.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/pfcoll_test.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/psimple.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/shared_fp.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/simple.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/split_coll.std [deleted file]
src/libs/ck-libs/ampi/romio/test/std/status.std [deleted file]
src/libs/ck-libs/ampi/romio/util/.state-cache [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/util/nfslock.c [new file with mode: 0644]
src/libs/ck-libs/ampi/romio/util/romioinstall.in
src/libs/ck-libs/ampi/romio/util/tarch

index 3ff1a15af1b5a0693d5d5fe3ba9223a3c17ec7e9..ed1f08d5e11802923a990bd886579cf3ed0034b4 100644 (file)
@@ -17,19 +17,12 @@ DEST=$(AMPI_LIBDIR)/$(AMPI_LIB).a
 DESTF=$(AMPI_LIBDIR)/$(AMPI_LIB)f.a
 COMPATLIB=$(AMPI_LIBDIR)/libampi-compat.a
 ROMIOLIB=$(AMPI_LIBDIR)/libampiromio
-ROMIOLIBSHARED=
 
-AMPI_STATIC_ONLY := $(CMK_NO_BUILD_SHARED)
-
-SHARED_SUF := $(CMK_SHARED_SUF)
-
-ifeq ($(AMPI_STATIC_ONLY),false)
-       ROMIOLIBSHARED=$(CDIR)/lib_so/libampiromio.$(SHARED_SUF)
+ifeq ($(CMK_NO_BUILD_SHARED),false)
+       ROMIOLIBSHARED=$(CDIR)/lib_so/libampiromio.$(CMK_SHARED_SUF)
 endif
 
-USE_ROMIO := $(CMK_AMPI_WITH_ROMIO)
-
-ifeq ($(USE_ROMIO),true)
+ifeq ($(CMK_AMPI_WITH_ROMIO),true)
        ROMIO=$(ROMIOLIB).a
 endif
 
@@ -44,32 +37,27 @@ all: AMPI AMPIF $(COMPATLIB) $(ROMIO)
 # AMPI and AMPIF are order-only dependencies (|), i.e., no up-to-date check
 # is done, in order to prevent ROMIO recompilation when AMPI changes.
 $(ROMIO): | AMPI AMPIF
-       cd romio && ./configure \
-               -mpiincdir=$(CDIR)/include \
-               -mpilib=$(CDIR)/lib/libmoduleampi.a \
-               -mpibindir=$(CDIR)/bin \
-               -cc=$(CDIR)/bin/ampicc \
-               -fc=$(CDIR)/bin/ampif77 \
-               -f90=$(CDIR)/bin/ampif90 \
-               -cflags="$(OPTS)" \
-               -fflags="$(OPTS)" \
-               -noprofile \
-               -mpiolib=$@
-
-       @# Cygwin only supports NTFS
-       case `uname` in CYGWIN*|cygwin*|Cygwin*) \
-               echo -e "#undef UFS\n#undef NFS\n#define ROMIO_NTFS\n" >> romio/adio/include/romioconf.h; \
-               sed -i s,ufs\ nfs,, romio/Makefile; \
-       esac
+       @echo "Building ROMIO"
+       cd romio && \
+               CFLAGS="$(OPTS)" \
+               FFLAGS="$(OPTS)" \
+               F77=$(CDIR)/bin/ampif90 \
+               CC=$(CDIR)/bin/ampicc \
+               ./configure \
+               --disable-aio \
+               --enable-f77=`test -f $(DESTF) && echo yes || echo no` \
+               --srcdir=`pwd`
+
        cp romio/include/mpio.h romio/include/mpiof.h $(CDIR)/include
        $(MAKE) -C romio
+       cp romio/lib/libmpio.a $@
        if [ -n "$(ROMIOLIBSHARED)" ]; then \
                echo "Building dynamic ROMIO library: $(ROMIOLIBSHARED)"; \
                find romio/ -name \*.o -exec $(CHARMC) -o $(ROMIOLIBSHARED) {} + ; \
        fi
        @echo "ROMIO built successfully"
 
-AMPI: $(DEST) 
+AMPI: $(DEST)
        @echo "AMPI built successfully"
 
 AMPIF: $(DESTF)
@@ -93,7 +81,6 @@ headers: $(HEADERS)
        cp $(HEADERS) $(CDIR)/include/
        cp ampi.h $(CDIR)/include/mpi.h
        cp ampif.h $(CDIR)/include/mpif.h
-#      cp mpiCC mpicc mpicxx mpif77 mpif90 $(CDIR)/bin
        cp ampiCC $(CDIR)/bin/ampicc
        cp ampiCC $(CDIR)/bin/ampiCC
        cp ampiCC $(CDIR)/bin/ampicxx
@@ -133,13 +120,13 @@ ampiMisc.o: ampiMisc.C ampiimpl.h $(HEADDEP)
        $(CHARMC) -c ampiMisc.C
 
 mpich-alltoall.o: mpich-alltoall.C $(HEADDEP)
-       $(CHARMC) -c mpich-alltoall.C 
+       $(CHARMC) -c mpich-alltoall.C
 
 ampi.decl.h ampi.def.h: ampi.ci
        $(CHARMC) ampi.ci
 
 ddt.o: ddt.C ddt.h $(HEADDEP)
 
-clean: 
-       -rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
+clean:
+       rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
        - cd romio && $(MAKE) clean
diff --git a/src/libs/ck-libs/ampi/romio/.config_params b/src/libs/ck-libs/ampi/romio/.config_params
deleted file mode 100644 (file)
index 01ac725..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-__sun4_
-__rs6000_
-__paragon_
-__solaris_
-__solaris86_
-__tflop_
-__tflops_
-__hpux_
-__sppux_
-__SX4_
-__sgi_
-__sgi5_
-__IRIX_
-__IRIX32_
-__IRIXN32_
-__IRIX64_
-__alpha_
-__ALPHA_
-__freebsd_
-__netbsd_
-__LINUX_
-__LINUX_ALPHA_
-__CRAY_
-__nfs_
-__ufs_
-__pfs_
-__piofs_
-__pvfs_
-__testfs_
-__xfs_
-__hfs_
-__sfs_
-__mpich_mpi
-__sgi_mpi
-__hp_mpi
-__cray_mpi
-__lam_mpi
index 1e3d879d99d234f3166f7534792a3894da4e715a..0e1a18527c1b2cf02f0fee1f75ba5ce2cc7dbc82 100644 (file)
@@ -6,15 +6,15 @@ AR          = @AR@
 LIBNAME     = @LIBNAME@
 NOF77       = @NOF77@
 NOPROFILE   = @NOPROFILE@
-MPI         = @MPI@
 PREFIX      = @prefix@
-FROM_MPICH  = @FROM_MPICH@
-FROM_MPICH2  = @FROM_MPICH2@
+srcdir      = @srcdir@
 BUILD_MPI_INFO = @BUILD_MPI_INFO@
 BUILD_MPI_ARRAY = @BUILD_MPI_ARRAY@
-DIRS        = mpi-io adio/common
+DIRS        = mpi-io adio/common @GLUE_DIR@
 MPIO_DIRS   = mpi-io
-ALL_DIRS    = mpi-io mpi-io/fortran mpi2-other/info mpi2-other/info/fortran mpi2-other/array mpi2-other/array/fortran adio/common adio/ad_pfs adio/ad_piofs adio/ad_nfs adio/ad_ufs adio/ad_xfs adio/ad_hfs adio/ad_sfs adio/ad_testfs adio/ad_pvfs
+EXTRA_SRC_DIRS = @EXTRA_SRC_DIRS@
+FILE_SYS_DIRS = @FILE_SYS_DIRS@
+ALL_DIRS    = mpi-io mpi-io/fortran mpi2-other/info mpi2-other/info/fortran mpi2-other/array mpi2-other/array/fortran adio/common adio/ad_pfs adio/ad_piofs adio/ad_nfs adio/ad_ufs adio/ad_xfs adio/ad_hfs adio/ad_sfs adio/ad_testfs adio/ad_pvfs adio/ad_pvfs2 adio/ad_panfs adio/ad_gridftp adio/ad_lustre adio/ad_bgl adio/ad_bglockless test test-internal mpi-io/glue/default mpi-io/glue/mpich1 mpi-io/glue/mpich2
 SHELL       = /bin/sh
 
 @VPATH@
@@ -26,13 +26,22 @@ all: mpio
 # use the same library.  This is a work around for a bug in make that 
 # is related to the use of file time stamps in make, but is in fact
 # a bug in the logic of several make implementations, including gnumake
+#
+# The make clean /make profile /make clean handles the rebuilding of
+# the object files with the same names but with different CPP definitions.
+# If weak symbols are supported or profiling is turned off, we don't
+# need to rebuild everything.
+#
+# Eventually, the clean at the top will also be removed, at least for the
+# MPICH builds (which do their own clean if required)
+#      $(MAKE) clean
 mpio:
        $(MAKE) mpiolib
-       @if test "$(NOPROFILE)" = 0 ; then\
-            $(MAKE) profile; \
+       @if [ "$(NOPROFILE)" = 0 ] ; then\
+            $(MAKE) profile || exit 1; \
         fi;\
        $(RANLIB) $(LIBNAME)
-       @if test "$(FROM_MPICH)" = 0 -a "$(FROM_MPICH2)" = 0 ; then \
+       @if [ "$(WITHIN_KNOWN_MPI_IMPL)" = no ] ; then \
            echo " "; \
            echo "Completed build of ROMIO. Check the output for errors."; \
            echo " " ;\
@@ -45,122 +54,86 @@ mpio:
         fi
        @sleep 1
 
+# FIXME: This should invoke the clean targets in each of the Makefiles.
 clean:
-       @-rm -f charmrun work.pc work.pcl
-       @dirs=`echo "$(DIRS)"`; \
-        for x in $(FILE_SYSTEM) ;\
-         do \
-             dirs=`echo "$$dirs" adio/ad_$$x` ;\
-         done ; \
-        if test "$(BUILD_MPI_INFO)" = 1 ; then \
-            dirs=`echo "$$dirs" mpi2-other/info` ;\
-            if test "$(NOF77)" = 0 ; then\
-                dirs=`echo "$$dirs" mpi2-other/info/fortran` ;\
-            fi;\
-        fi; \
-        if test "$(BUILD_MPI_ARRAY)" = 1 ; then \
-            dirs=`echo "$$dirs" mpi2-other/array` ;\
-            if test "$(NOF77)" = 0 ; then\
-                dirs=`echo "$$dirs" mpi2-other/array/fortran` ;\
-            fi;\
-        fi; \
-        if test "$(NOF77)" = 0 ; then\
-            dirs=`echo "$$dirs" mpi-io/fortran` ;\
-        fi;\
-        for dir in $$dirs ;\
+       @-rm -f work.pc work.pcl
+       @for dir in $(DIRS) $(FILE_SYS_DIRS) $(EXTRA_SRC_DIRS) ;\
          do \
             echo " " ;\
             echo cleaning directory $$dir ;\
-            (cd $$dir; rm -f *.o) ;\
+            (cd $$dir && rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg) ;\
          done; \
-         echo " " 
+         echo " " ;\
+         echo cleaning directory test-internal ;\
+         (cd test-internal && $(MAKE) clean);\
+         echo " ";\
+         echo " " ;\
+         echo cleaning directory test ;\
+         (cd test && $(MAKE) clean);\
+         echo " ";
 
 mpiolib:
-       @if test "$(FROM_MPICH)" = 0 -a "$(FROM_MPICH2)" = 0 ; then \
+       @if [ "$(WITHIN_KNOWN_MPI_IMPL)" = no ] ; then \
             echo " " ;\
             echo "deleting previously built library if it exists" ;\
             rm -f $(LIBNAME) ;\
-        fi; \
-        dirs=`echo "$(DIRS)"`; \
-        for x in $(FILE_SYSTEM) ;\
-         do \
-             dirs=`echo "$$dirs" adio/ad_$$x` ;\
-         done ; \
-        if test "$(BUILD_MPI_INFO)" = 1 ; then \
-            dirs=`echo "$$dirs" mpi2-other/info` ;\
-            if test "$(NOF77)" = 0 ; then \
-                dirs=`echo "$$dirs" mpi2-other/info/fortran` ;\
-            fi; \
-        fi; \
-        if test "$(BUILD_MPI_ARRAY)" = 1 ; then \
-            dirs=`echo "$$dirs" mpi2-other/array` ;\
-            if test "$(NOF77)" = 0 ; then \
-                dirs=`echo "$$dirs" mpi2-other/array/fortran` ;\
-            fi; \
-        fi; \
-        if test "$(NOF77)" = 0 ; then \
-            dirs=`echo "$$dirs" mpi-io/fortran` ;\
-        fi; \
-        for dir in $$dirs ;\
+        fi
+       @for dir in $(DIRS) $(FILE_SYS_DIRS) $(EXTRA_SRC_DIRS) ;\
          do \
             echo " " ;\
             echo compiling ROMIO in directory $$dir ;\
            sleep 1;\
-            (cd $$dir && $(MAKE) ;) ;\
+            (cd $$dir && $(MAKE);) || exit 1 ;\
             if [ $$? != 0 ] ; then \
                 echo "Make failed in directory $$dir" ; exit 1 ;\
             fi ;\
          done
 
+# We no longer need to clean before building the profiling interface
 profile: 
        @if [ "@HAVE_WEAK_SYMBOLS@" = 0 ] ; then \
-           dirs=`echo "$(MPIO_DIRS)"`; \
-           if test "$(BUILD_MPI_INFO)" = 1 ; then \
-               dirs=`echo "$$dirs" mpi2-other/info` ;\
-               if test "$(NOF77)" = 0 ; then\
-                   dirs=`echo "$$dirs" mpi2-other/info/fortran` ;\
-               fi;\
-           fi; \
-           if test "$(BUILD_MPI_ARRAY)" = 1 ; then \
-               dirs=`echo "$$dirs" mpi2-other/array` ;\
-               if test "$(NOF77)" = 0 ; then\
-                   dirs=`echo "$$dirs" mpi2-other/array/fortran` ;\
-               fi;\
-           fi; \
-           if test "$(NOF77)" = 0 ; then\
-               dirs=`echo "$$dirs" mpi-io/fortran` ;\
-           fi;\
-           for dir in $$dirs ;\
-            do \
+          for dir in $(MPIO_DIRS) $(EXTRA_SRC_DIRS) ;\
+              do \
                echo " " ;\
                echo building profiling interface in directory $$dir ;\
                sleep 1;\
-               (cd $$dir; \
-                $(MAKE) profile MPIOPROFILE="-DMPIO_BUILD_PROFILING";) ;\
+               (cd $$dir && \
+                $(MAKE) profile MPIOPROFILE="-DMPIO_BUILD_PROFILING";) || exit 1;\
                 if [ $$? != 0 ] ; then \
                     echo "Make failed in directory $$dir" ; exit 1 ;\
                 fi ;\
-            done \
+            done ;\
        fi
 
+# FIXME: This should look at the enabled File systems
+coverage:
+       (cd mpi-io && make coverage)
+       (cd adio/ad_ufs && make coverage)
+       (cd adio/ad_nfs && make coverage)
+
 cleanall:
        @dirs=`echo "$(ALL_DIRS)"`; \
+       echo "cleaning test directory" ;\
+       (cd test && ${MAKE} cleanall ) ;\
         echo cleaning current directory ;\
-        (rm -f config.status Makefile *~ *.log romio.tar*) ;\
+        (rm -f config.status Makefile *~ *.log romio.tar* localdefs) ;\
         for dir in $$dirs ;\
          do \
             echo " " ;\
            if [ ! -d $$dir ] ; then continue ; fi ; \
             echo cleaning directory $$dir ;\
-            (cd $$dir; rm -f *.o Makefile *~) ;\
+            (cd $$dir && rm -f *.o Makefile *~) ;\
          done; \
          echo " " ;\
          echo "cleaning directory include" ;\
-         (cd include; rm -f *.h);\
+         (cd include && rm -f *.h);\
+         echo " " ;\
+         echo "cleaning directory adio/include" ;\
+         (cd adio/include && rm -f romioconf.h);\
          echo " " ;\
          echo "cleaning directory util" ;\
-         (cd util; rm -f romioinstall *~)
-       -rm -rf lib
+         (cd util && rm -f romioinstall *~)
+       -rm -f lib
 
 install:
        $(MAKE) clean
@@ -170,6 +143,8 @@ install:
 uninstall:
        @./util/romioinstall -prefix=$(PREFIX) -uninstall
 
+# FIXME: To avoid problems with noisy make programs, these should be accessed
+# through entries in localdefs .
 romio_lflags:
        @echo '@ROMIO_LFLAGS@'
 
@@ -187,3 +162,28 @@ romio_tfflags:
 
 # distclean the standard form for cleanall
 distclean: cleanall
+
+# Allow dependencies target
+dependencies:
+
+# MPICH2 documentation targets
+mandoc:
+       (cd mpi-io && $(MAKE) mandoc )
+htmldoc:
+       (cd mpi-io && $(MAKE) htmldoc )
+latexdoc:
+       (cd mpi-io && $(MAKE) latexdoc )
+
+
+tags: TAGS
+TAGS:
+       for dir in mpi-io adio/common - ; do \
+               if [ "$$dir" = "-" ] ; then break ; fi ; \
+               (cd $$dir && ${MAKE} TAGS ; ) ; done
+
+# This target is appropriate for autoconf 2.59 (the command line options
+# for selecting the macro directories changes in incompatible ways between
+# autoconf releases).
+${srcdir}/configure: ${srcdir}/configure.in 
+       cd ${srcdir} && autoheader -I confdb
+       cd ${srcdir} && rm -rf autom4te*.cache && autoconf -I confdb 
index 49071468e17b6519a9e1ccee73ff8b81da999c97..42fe329a9fbda326b4767d56d59a3fab2eff3fb8 100644 (file)
@@ -1,8 +1,112 @@
           ROMIO: A High-Performance, Portable MPI-IO Implementation
 
-                      Version 1.2.4, May 2002
+                      Version 2008-03-09
 
-Major Changes in this Version:
+Major Changes in this version:
+------------------------------
+* Fixed performance problems with the darray and subarray datatypes
+  when using MPICH2.
+
+* Better support for building against existing MPICH and MPICH2 versions.
+
+  When building against an existing MPICH installation, use the
+  "--with-mpi=mpich" option to ROMIO configure.  For MPICH2, use the
+  "--with-mpi=mpich2" option.  These will allow ROMIO to take advantage
+  of internal features of these implementations.
+
+* Deprecation of SFS, HFS, and PIOFS implementations.
+
+  These are no longer actively supported, although the code will continue
+  to be distributed for now.
+
+* Initial support for the Panasas PanFS filesystem.
+
+  PanFS allows users to specify the layout of a file at file-creation time.
+  Layout information includes the number of StorageBlades (SB)
+  across which the data is stored, the number of SBs across which a 
+  parity stripe is written, and the number of consecutive stripes that 
+  are placed on the same set of SBs.   The panfs_layout_* hints are only 
+  used if supplied at file-creation time.
+  panfs_layout_type - Specifies the layout of a file:
+                      2 = RAID0
+                      3 = RAID5 Parity Stripes
+  panfs_layout_stripe_unit - The size of the stripe unit in bytes
+  panfs_layout_total_num_comps - The total number of StorageBlades a file
+                                 is striped across.
+  panfs_layout_parity_stripe_width - If the layout type is RAID5 Parity
+                                     Stripes, this hint specifies the 
+                                     number of StorageBlades in a parity
+                                     stripe.
+  panfs_layout_parity_stripe_depth - If the layout type is RAID5 Parity
+                                     Stripes, this hint specifies the
+                                     number of contiguous parity stripes written 
+                                     across the same set of SBs.
+  panfs_layout_visit_policy - If the layout type is RAID5 Parity Stripes, 
+                              the policy used to determine the parity 
+                              stripe a given file offset is written to:
+                              1 = Round Robin
+
+  PanFS supports the "concurrent write" (CW) mode, where groups of cooperating 
+  clients can disable the PanFS consistency mechanisms and use their own 
+  consistency protocol.  Clients participating in concurrent write mode use 
+  application specific information to improve performance while maintaining 
+  file consistency.  All clients accessing the file(s) must enable concurrent 
+  write mode.  If any client does not enable concurrent write mode, then the 
+  PanFS consistency protocol will be invoked.  Once a file is opened in CW mode 
+  on a machine, attempts to open a file in non-CW mode will fail with 
+  EACCES.  If a file is already opened in non-CW mode, attempts to open 
+  the file in CW mode will fail with EACCES.  The following hint is 
+  used to enable concurrent write mode.
+
+  panfs_concurrent_write - If set to 1 at file open time, the file 
+                           is opened using the PanFS concurrent write 
+                           mode flag.  Concurrent write mode is not a
+                           persistent attribute of the file.
+
+  Below is an example PanFS layout using the following parameters:
+  - panfs_layout_type                = 3
+  - panfs_layout_total_num_comps     = 100
+  - panfs_layout_parity_stripe_width = 10
+  - panfs_layout_parity_stripe_depth = 8
+  - panfs_layout_visit_policy        = 1
+
+   Parity Stripe Group 1     Parity Stripe Group 2  . . . Parity Stripe Group 10
+  ----------------------    ----------------------        --------------------
+   SB1    SB2  ... SB10     SB11    SB12 ...  SB20  ...   SB91   SB92 ... SB100
+  -----------------------   -----------------------       ---------------------
+   D1     D2   ...  D10      D91    D92  ...  D100        D181   D182  ... D190
+   D11    D12       D20      D101   D102      D110        D191   D192      D193
+   D21    D22       D30      . . .                        . . .
+   D31    D32       D40
+   D41    D42       D50
+   D51    D52       D60
+   D61    D62       D70
+   D71    D72       D80
+   D81    D82       D90      D171   D172      D180        D261   D262   D270
+   D271   D272      D273     . . .                        . . .
+   ...
+
+* Initial support for the Globus GridFTP filesystem.  Work contributed by Troy
+  Baer (troy@osc.edu).  
+
+Major Changes in Version 1.2.5:
+------------------------------
+
+* Initial support for MPICH-2
+
+* fix for a bug in which ROMIO would get confused for some permutations
+  of the aggregator list
+
+* direct io on IRIX's XFS should work now
+
+* fixed an issue with the Fortran bindings that would cause them to fail
+   when some compilers tried to build them.
+
+* Initial support for deferred opens
+
+Major Changes in Version 1.2.4:
 ------------------------------
 * Added section describing ROMIO MPI_FILE_SYNC and MPI_FILE_CLOSE behavior to 
   User's Guide
@@ -246,10 +350,11 @@ Using ROMIO on NFS
 
 To use ROMIO on NFS, file locking with fcntl must work correctly on
 the NFS installation. On some installations, fcntl locks don't work.
-To get them to work, you need to use Version 3 of NFS and
-have the system administrator mount the NFS file system with the 
-"noac" option (no attribute caching). Turning off attribute caching 
-may reduce performance, but it is necessary for correct behavior.
+To get them to work, you need to use Version 3 of NFS, ensure that the
+lockd daemon is running on all the machines, and have the system
+administrator mount the NFS file system with the "noac" option (no
+attribute caching). Turning off attribute caching may reduce
+performance, but it is necessary for correct behavior.
 
 The following are some instructions we received from Ian Wells of HP
 for setting the noac option on NFS. We have not tried them
diff --git a/src/libs/ck-libs/ampi/romio/acconfig.h b/src/libs/ck-libs/ampi/romio/acconfig.h
deleted file mode 100644 (file)
index f1a335f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*  $Id$
- *
- *  (C) 2001 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#undef AIO_HANDLE_IN_AIOCB
-#undef AIO_PRIORITY_DEFAULT
-#undef AIO_SIGNOTIFY_NONE
-#undef AIO_SUN
-#undef FREEBSD
-#undef HAVE_LONG_LONG_64
-#undef HAVE_MOUNT_NFS
-#undef HAVE_MPI_COMBINERS
-#undef HAVE_MPI_DARRAY_SUBARRAY
-#undef HAVE_MPI_INFO
-#undef HAVE_MPI_LONG_LONG_INT
-#undef HAVE_PRAGMA_CRI_DUP
-#undef HAVE_PRAGMA_HP_SEC_DEF
-#undef HAVE_PRAGMA_WEAK
-#undef HAVE_PREAD64
-#undef HAVE_STATUS_SET_BYTES
-#undef HAVE_STRERROR
-#undef HAVE_SYSERRLIST
-#undef HAVE_WEAK_SYMBOLS
-#undef HFS
-#undef HPUX
-#undef INT_LT_POINTER
-#undef IRIX
-#undef LINUX
-#undef MPICH
-#undef MPIHP
-#undef MPILAM
-#undef MPISGI
-#undef MPI_OFFSET_IS_INT
-#undef NEEDS_MPI_TEST
-#undef NFS
-#undef NO_AIO
-#undef NO_FD_IN_AIOCB
-#undef NO_MPI_SGI_type_is_contig
-#undef PARAGON
-#undef PFS
-#undef PIOFS
-#undef PRINT_ERR_MSG
-#undef ROMIO_PVFS
-#undef ROMIO_TESTFS
-#undef SFS
-#undef SOLARIS
-#undef SPPUX
-#undef SX4
-#undef UFS
-#undef XFS
-#undef NEEDS_AIOCB_T
diff --git a/src/libs/ck-libs/ampi/romio/aclocal.m4 b/src/libs/ck-libs/ampi/romio/aclocal.m4
deleted file mode 100644 (file)
index b2d6401..0000000
+++ /dev/null
@@ -1,1254 +0,0 @@
-dnl
-dnl This files contains additional macros for using autoconf to 
-dnl build configure scripts.
-dnl
-dnl Almost all of this file is taken from the aclocal.m4 of MPICH
-dnl
-dnl Get the format of Fortran names.  Uses F77, FFLAGS, and sets WDEF.
-dnl If the test fails, sets NOF77 to 1, HAVE_FORTRAN to 0.
-dnl
-dnl
-define(PAC_GET_FORTNAMES,[
-   rm -f confftest.f confftest.o
-   cat > confftest.f <<EOF
-       subroutine mpir_init_fop( a )
-       integer a
-       a = 1
-       return
-       end
-EOF
-   $F77 $FFLAGS -c confftest.f > /dev/null 2>&1
-   if test ! -s confftest.o ; then
-        print_error "Unable to test Fortran compiler"
-        print_error "(compiling a test program failed to produce an "
-        print_error "object file)."
-       NOF77=1
-   elif test -z "$FORTRANNAMES" ; then
-    if test $arch_CRAY ; then
-     # Cray doesn't accept -a ...
-     nameform1=`strings confftest.o | grep mpir_init_fop_  | head -1`
-     nameform2=`strings confftest.o | grep MPIR_INIT_FOP   | head -1`
-     nameform3=`strings confftest.o | grep mpir_init_fop   | head -1`
-     nameform4=`strings confftest.o | grep mpir_init_fop__ | head -1`
-    else
-     nameform1=`strings -a confftest.o | grep mpir_init_fop_  | head -1`
-     nameform2=`strings -a confftest.o | grep MPIR_INIT_FOP   | head -1`
-     nameform3=`strings -a confftest.o | grep mpir_init_fop   | head -1`
-     nameform4=`strings -a confftest.o | grep mpir_init_fop__ | head -1`
-    fi
-    rm -f confftest.f confftest.o
-    if test -n "$nameform4" ; then
-       echo "Fortran externals are lower case and have two trailing underscores"
-       FORTRANNAMES="FORTRANDOUBLEUNDERSCORE"
-    elif test -n "$nameform1" ; then
-        # We don't set this in CFLAGS; it is a default case
-        echo "Fortran externals have a trailing underscore and are lowercase"
-       FORTRANNAMES="FORTRANUNDERSCORE"
-    elif test -n "$nameform2" ; then
-       echo "Fortran externals are uppercase"     
-       FORTRANNAMES="FORTRANCAPS" 
-    elif test -n "$nameform3" ; then
-       echo "Fortran externals are lower case"
-       FORTRANNAMES="FORTRANNOUNDERSCORE"
-    else
-       print_error "Unable to determine the form of Fortran external names"
-       print_error "Make sure that the compiler $F77 can be run on this system"
-       print_error "Turning off Fortran (-nof77 being assumed)."
-       NOF77=1
-    fi
-    fi
-    if test -n "$FORTRANNAMES" ; then
-        WDEF="-D$FORTRANNAMES"
-    fi
-    ])dnl
-dnl
-dnl
-dnl
-dnl PAC_GETWD(varname [, filename ] )
-dnl
-dnl This is from the aclocal.m4 of MPICH. 
-dnl Set varname to current directory.  Use filename (relative to current
-dnl directory) if provided to double check.
-dnl
-dnl Need a way to use "automounter fix" for this.
-dnl
-define(PAC_GETWD,[
-$1=$PWD
-if test "${$1}" != "" -a -d "${$1}" ; then 
-    if test -r ${$1}/.foo$$ ; then
-        /bin/rm -f ${$1}/.foo$$
-        /bin/rm -f .foo$$
-    fi
-    if test -r ${$1}/.foo$$ -o -r .foo$$ ; then
-        $1=
-    else
-        echo "test" > ${$1}/.foo$$
-        if test ! -r .foo$$ ; then
-            /bin/rm -f ${$1}/.foo$$
-            $1=
-        else
-            /bin/rm -f ${$1}/.foo$$
-        fi
-    fi
-fi
-if test "${$1}" = "" ; then
-    $1=`pwd | sed -e 's%/tmp_mnt/%/%g'`
-fi
-dnl
-dnl First, test the PWD is sensible
-ifelse($2,,,
-if test ! -r ${$1}/$2 ; then
-    dnl PWD must be messed up
-    $1=`pwd`
-    if test ! -r ${$1}/$2 ; then
-        print_error "Cannot determine the root directory!" 
-        exit 1
-    fi
-    $1=`pwd | sed -e 's%/tmp_mnt/%/%g'`
-    if test ! -d ${$1} ; then 
-        print_error "Warning: your default path uses the automounter; this may"
-        print_error "cause some problems if you use other NFS-connected systems.
-"
-        $1=`pwd`
-    fi
-fi)
-if test -z "${$1}" ; then
-    $1=`pwd | sed -e 's%/tmp_mnt/%/%g'`
-    if test ! -d ${$1} ; then 
-        print_error "Warning: your default path uses the automounter; this may"
-        print_error "cause some problems if you use other NFS-connected systems.
-"
-        $1=`pwd`
-    fi
-fi
-])
-dnl
-dnl
-dnl PAC_GET_TYPE_SIZE(typename,var_for_size)
-dnl
-dnl sets var_for_size to the size.  Ignores if the size cannot be determined
-dnl (see aclocal.m4 in MPICH)
-dnl
-define(PAC_GET_TYPE_SIZE,
-[Pac_name="$1"
- Pac_varname=`echo "$Pac_name" | sed -e 's/ /_/g' -e 's/\*/star/g'`
-eval Pac_testval=\$"${Pac_varname}_len"
-if test -z "$Pac_testval" ; then
-   changequote(<<,>>)
-   define(<<AC_TYPE_NAME>>,translit(CROSS_SIZEOF_$1,[a-z *],[A-Z_P]))dnl
-   changequote([,])
-   eval Pac_testval=\$"AC_TYPE_NAME"
-fi
-if test -n "$Pac_testval" ; then
-    Pac_CV_NAME=$Pac_testval
-else
-AC_MSG_CHECKING([for size of $1])
-dnl Check for existing size or for CROSS_SIZEOF_name
-/bin/rm -f conftestval
-AC_TEST_PROGRAM([#include <stdio.h>
-main() { 
-  FILE *f=fopen("conftestval","w");
-  if (!f) exit(1);
-  fprintf( f, "%d\n", sizeof($1));
-  exit(0);
-}],Pac_CV_NAME=`cat conftestval`,Pac_CV_NAME="")
-/bin/rm -f conftestval
-if test -n "$Pac_CV_NAME" -a "$Pac_CV_NAME" != 0 ; then
-    AC_MSG_RESULT($Pac_CV_NAME)
-    eval ${Pac_varname}_len=$Pac_CV_NAME
-else
-    AC_MSG_RESULT(unavailable)
-fi
-fi
-$2=$Pac_CV_NAME
-])dnl
-dnl
-dnl
-dnl
-define(PAC_INT_LT_POINTER,[
-if test -z "$intsize" ; then
-    PAC_GET_TYPE_SIZE(int,intsize)
-fi
-if test -z "$pointersize" ; then
-    PAC_GET_TYPE_SIZE(void *,pointersize)
-fi
-AC_MSG_CHECKING([for int large enough for pointers])
-if test -n "$pointersize" -a -n "$intsize" ; then
-    if test $pointersize -le $intsize ; then
-       AC_MSG_RESULT(yes)
-    else
-       AC_DEFINE(INT_LT_POINTER,,[Define if int smaller than pointer])
-       AC_MSG_RESULT(no)
-    fi
-else
-    AC_MSG_RESULT(cannot determine; assuming it is;)
-    echo "use '-intsize' and '-ptrsize' to indicate otherwise"
-fi
-])dnl
-dnl
-dnl
-dnl Check whether to use -n, \c, or newline-tab to separate
-dnl checking messages from result messages.
-dnl from MPICH
-define(AC_PROG_ECHO_N,
-ac_echo_n=yes
-[if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-ac_echo_test=`echo foo 1>&1`
-if test -z "$ac_echo_test" ; then
-     print_error "Your sh shell does not handle the output redirection"
-     print_error "1>&1 correctly.  Configure will work around this problem,"
-     print_error "but you should report the problem to your vendor."
-fi
-])dnl
-dnl AC_MSG_CHECKING(FEATURE-DESCRIPTION)
-define(AC_FD_MSG,1)dnl
-define(AC_MSG_CHECKING,[dnl
-if test -z "$ac_echo_n" ; then
-AC_PROG_ECHO_N
-fi
-if test -z "$ac_echo_test" -a AC_FD_MSG = 1 ; then
-echo $ac_n "checking $1""... $ac_c"
-else
-echo $ac_n "checking $1""... $ac_c" 1>&AC_FD_MSG
-fi])dnl
-dnl
-dnl AC_MSG(msg)
-dnl generates "msg..." (no newline)
-define(AC_MSG,[dnl
-if test -z "$ac_echo_n" ; then
-AC_PROG_ECHO_N
-fi
-if test -z "$ac_echo_test" -a AC_FD_MSG = 1 ; then
-echo $ac_n "$1""... $ac_c"
-else
-echo $ac_n "$1""... $ac_c" 1>&AC_FD_MSG
-fi])dnl
-dnl
-dnl AC_CHECKING(FEATURE-DESCRIPTION)
-define(AC_CHECKING,dnl
-[echo "checking $1" 1>&AC_FD_MSG])dnl
-dnl
-dnl AC_MSG_RESULT(RESULT-DESCRIPTION)
-define(AC_MSG_RESULT,dnl
-if test -z "$ac_echo_test" -a AC_FD_MSG = 1 ; then
-[echo "$ac_t""$1"]
-else
-[echo "$ac_t""$1" 1>&AC_FD_MSG]
-fi)dnl
-dnl
-define(PAC_GET_SPECIAL_SYSTEM_INFO,[
-#
-if test -n "$arch_IRIX"; then
-   AC_MSG_CHECKING(for IRIX OS version)
-   dnl This block of code replaces a generic "IRIX" arch value with
-   dnl  IRIX_<version>_<chip>
-   dnl  For example
-   dnl  IRIX_5_4400 (IRIX 5.x, using MIPS 4400)
-   osversion=`uname -r | sed 's/\..*//'`
-   dnl Note that we need to allow brackets here, so we briefly turn off 
-   dnl the macro quotes
-   changequote(,)dnl
-   dnl Get the second field (looking for 6.1)
-   osvminor=`uname -r | sed 's/[0-9]\.\([0-9]*\)\..*/\1/'`
-   AC_MSG_RESULT($osversion)
-   dnl Get SGI processor count by quick hack
-   AC_MSG_CHECKING(for IRIX cpucount)
-   cpucount=`hinv | grep '[0-9]* [0-9]* MHZ IP[0-9]* Proc' | cut -f 1 -d' '`
-   if test "$cpucount" = "" ; then
-     cpucount=`hinv | grep 'Processor [0-9]*:' | wc -l | sed -e 's/ //g'`
-   fi
-   changequote([,])dnl
-   if test "$cpucount" = "" ; then
-     print_error "Could not determine cpucount."
-     print_error "Please send "
-     hinv
-     print_error "to romio-maint@mcs.anl.gov"
-     exit 1
-   fi
-   AC_MSG_RESULT($cpucount)
-   dnl
-   AC_MSG_CHECKING(for IRIX cpumodel)
-   dnl The tail -1 is necessary for multiple processor SGI boxes
-   dnl We might use this to detect SGI multiprocessors and recommend
-   dnl -comm=shared
-   cputype=`hinv -t cpu | tail -1 | cut -f 3 -d' '`
-   if test -z "$cputype" ; then
-        print_error "Could not get cputype from hinv -t cpu command."
-        print_error "Please send "
-        hinv -t cpu 2>&1
-        hinv -t cpu | cut -f 3 -d' ' 2>&1
-        print_error "to romio-maint@mcs.anl.gov" 
-        exit 1
-   fi
-   AC_MSG_RESULT($cputype)
-   dnl echo "checking for osversion and cputype"
-   dnl cputype may contain R4400, R2000A/R3000, or something else.  
-   dnl We may eventually need to look at it.
-   if test -z "$osversion" ; then
-        print_error "Could not determine OS version.  Please send" 
-        print_error " " 
-        uname -a
-        print_error "to romio-maint@mcs.anl.gov" 
-        exit 1
-   elif test $osversion = 4 ; then
-        true
-   elif test $osversion = 5 ; then
-        true
-   elif test $osversion = 6 ; then
-        true
-   else 
-       print_error "Could not recognize the version of IRIX (got $osversion)"
-       print_error "ROMIO knows about versions 4, 5 and 6; the version being"
-       print_error "returned from uname -r is $osversion."
-       print_error "Please send"
-       uname -a 2>&1
-       hinv 2>&1
-       print_error "to romio-maint@mcs.anl.gov"
-       exit 1
-   fi
-   AC_MSG_CHECKING(for cputype)
-   OLD_ARCH=IRIX
-   IRIXARCH="$ARCH_$osversion"
-   dnl Now, handle the chip set
-   changequote(,)dnl
-   cputype=`echo $cputype | sed -e 's%.*/%%' -e 's/R//' | tr -d "[A-Z]"`
-   changequote([,])dnl
-   case $cputype in 
-        3000) ;;
-        4000) ;;
-        4400) ;;
-        4600) ;;
-        5000) ;;
-        8000) ;;
-        10000);;
-       12000);;
-        *)
-        print_error "Unexpected IRIX/MIPS chipset $cputype.  Please send the output"
-        print_error " "
-        uname -a 2>&1
-        hinv 2>&1 
-        print_error " " 
-        print_error "to romio-maint@mcs.anl.gov" 
-        print_error "ROMIO will continue and assume that the cputype is"
-        print_error "compatible with a MIPS 4400 processor."
-        print_error " " 
-        cputype=4400
-        ;;
-   esac
-   AC_MSG_RESULT($cputype)
-   IRIXARCH="$IRIXARCH_$cputype"
-   echo "IRIX-specific architecture is $IRIXARCH"
-fi
-])dnl
-dnl
-dnl
-dnl On an SGI check whether to link 32 bit objects or 64 bit objects
-dnl for the MPI-2 datatype accessor functions
-dnl
-define(PAC_CHECK_SGI_3264,[
-AC_MSG_CHECKING(for 32-bit or 64-bit objects)
-cat <<EOF >bittest.c
-main()
-{
-  int i;
-  i = 0;
-}
-EOF
-$CC $CFLAGS -c bittest.c > /dev/null 2>&1
-if test $MIPS = 4 ; then
-    testlink='$CC $CFLAGS -o bittest bittest.o adio/sgi/mpi2/mips4.64/get_contents.o $MPI_LIB >/dev/null 2>&1'
-    if eval $testlink ; then
-       BITS=64
-    else
-        testlink='$CC $CFLAGS -o bittest bittest.o adio/sgi/mpi2/mips4.32/get_contents.o $MPI_LIB >/dev/null 2>&1'
-        if eval $testlink ; then
-           BITS=32
-        else
-            echo "Error: Can't link with either 32-bit or 64-bit"
-            echo "Send email to romio-maint@mcs.anl.gov"
-            exit 1
-        fi
-    fi
-else
-    testlink='$CC $CFLAGS -o bittest bittest.o adio/sgi/mpi2/mips3.64/get_contents.o $MPI_LIB >/dev/null 2>&1'
-    if eval $testlink ; then
-       BITS=64
-    else
-        testlink='$CC $CFLAGS -o bittest bittest.o adio/sgi/mpi2/mips3.32/get_contents.o $MPI_LIB >/dev/null 2>&1'
-        if eval $testlink ; then
-           BITS=32
-        else
-            echo "Error: Can't link with either 32-bit or 64-bit"
-            echo "Send email to romio-maint@mcs.anl.gov"
-            exit 1
-        fi
-    fi
-fi
-rm -f bittest*
-AC_MSG_RESULT($BITS bit)
-])
-dnl
-dnl
-dnl
-define(PAC_TEST_MPI,[
-  AC_MSG_CHECKING(if a simple MPI program compiles and links)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     int main(int argc, char **argv)
-     {
-         MPI_Init(&argc,&argv);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test ! -x conftest ; then
-      echo " "
-      print_error "Unable to compile a simple MPI program"
-      print_error "Use the -mpi, -mpiincdir, and -mpilib options to configure to specify the"
-      print_error "MPI implementation, the include path for mpi.h, and the MPI library to link"
-      rm -f conftest mpitest.c
-      exit 1
-  else
-      rm -f conftest mpitest.c
-  fi
-AC_MSG_RESULT(yes)
-])dnl
-dnl
-dnl
-dnl
-define(PAC_NEEDS_FINT,[
-  AC_MSG_CHECKING(if MPI_Fint is defined in the MPI implementation)
-  cat > mpitest1.c <<EOF
-#include "mpi.h"
-     main()
-     {
-         MPI_Fint i;
-         i = 0;
-     }
-EOF
-  rm -f mpitest1.o
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -c mpitest1.c > /dev/null 2>&1
-  if test ! -s mpitest1.o ; then
-      NEEDS_MPI_FINT="#define NEEDS_MPI_FINT"
-      CFLAGS="$CFLAGS -DNEEDS_MPI_FINT"
-      AC_MSG_RESULT(no)
-      rm -f mpitest1.o mpitest1.c
-  else
-      NEEDS_MPI_FINT=""
-      AC_MSG_RESULT(yes)
-      rm -f mpitest1.o mpitest1.c
-  fi
-])dnl
-dnl
-dnl
-dnl
-define(PAC_LONG_64,[
-if test -z "$longsize" ; then
-    PAC_GET_TYPE_SIZE(long,longsize)
-fi
-if test -n "$longsize" ; then
-   if test $longsize = 8 ; then
-       AC_DEFINE(HAVE_LONG_64,,[Define if long is 64 bits])
-   fi
-else
-   echo "assuming size of long is NOT 8 bytes; use '-longsize' to indicate otherwise"
-fi
-])dnl
-dnl
-dnl
-define(PAC_MPI_LONG_LONG_INT,[
-  AC_MSG_CHECKING(if MPI_LONG_LONG_INT is defined in mpi.h)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-         long long i;   
-         MPI_Init(&argc,&argv);
-         MPI_Send(&i, 1, MPI_LONG_LONG_INT, 0, 0, MPI_COMM_WORLD);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_MPI_LONG_LONG_INT,,[Define if mpi has long long it])
-  else
-      AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl Check that the compile accepts ANSI prototypes. 
-dnl PAC_CHECK_CC_PROTOTYPES()
-dnl
-define(PAC_CHECK_CC_PROTOTYPES,[
-AC_MSG_CHECKING(that the compiler $CC accepts ANSI prototypes)
-AC_COMPILE_CHECK(,[int f(double a){return 0;}],,eval "ac_cv_ccworks=yes",eval "ac_cv_ccworks=no")
-AC_MSG_RESULT($ac_cv_ccworks)
-if test $ac_cv_ccworks = "yes" ; then
-   AC_DEFINE(HAVE_PROTOTYPES,,[Define if C compiler supports prototypes])
-fi
-])dnl
-dnl
-dnl
-dnl PAC_TEST_LONG_LONG()
-dnl
-dnl tests if the compiler prints long long correctly and whether to use
-dnl %ld or %lld. Called from within PAC_LONG_LONG_64.
-dnl
-define(PAC_TEST_LONG_LONG,
-[AC_MSG_CHECKING([if the compiler prints long longs correctly with %lld])
-rm -f conftestll
-AC_TEST_PROGRAM([#include <stdio.h>
-main() {
-  long long i=8; 
-  FILE *f=fopen("conftestll","w");
-  if (!f) exit(1);
-  fprintf( f, "%lld\n", i);
-  exit(0);
-}],Pac_CV_NAME=`cat conftestll`,Pac_CV_NAME="")
-rm -f conftestll
-if test "$Pac_CV_NAME" = 8 ; then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_LONG_LONG_64,,[Define if have 64 bit long long])
-    DEFINE_MPI_OFFSET="typedef long long MPI_Offset;"
-    FORTRAN_MPI_OFFSET="integer*8"
-    echo "defining MPI_Offset as long long in C and integer*8 in Fortran"
-    LL="\%lld"
-else
-    AC_MSG_RESULT(no)
-    AC_MSG_CHECKING([if the compiler prints long longs correctly with %ld])
-    AC_TEST_PROGRAM([#include <stdio.h>
-    main() {
-      long long i=8; 
-      FILE *f=fopen("conftestll","w");
-      if (!f) exit(1);
-      fprintf( f, "%ld\n", i);
-      exit(0);
-    }],Pac_CV_NAME=`cat conftestll`,Pac_CV_NAME="")
-    rm -f conftestll
-    if test "$Pac_CV_NAME" = 8 ; then
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_LONG_LONG_64,,[Define if long long is 64 bits])
-       DEFINE_MPI_OFFSET="typedef long long MPI_Offset;"
-       FORTRAN_MPI_OFFSET="integer*8"
-       echo "defining MPI_Offset as long long in C and integer*8 in Fortran"
-       LL="\%ld"
-    else
-       AC_MSG_RESULT(no!!)
-       echo "the compiler doesn't print long longs correctly!"
-       echo "defining MPI_Offset as long in C and integer in Fortran" 
-       DEFINE_MPI_OFFSET="typedef long MPI_Offset;"
-       FORTRAN_MPI_OFFSET="integer"
-       LL="\%ld"
-       MPI_OFFSET_KIND1="!"
-       MPI_OFFSET_KIND2="!"
-    fi
-fi
-])dnl
-dnl
-dnl
-dnl PAC_LONG_LONG_64: check if there is a 64-bit long long
-dnl
-define(PAC_LONG_LONG_64,[
-if test -n "$longlongsize" ; then
-    if test "$longlongsize" = 8 ; then
-       echo "defining MPI_Offset as long long in C and integer*8 in Fortran" 
-       AC_DEFINE(HAVE_LONG_LONG_64,,[Define if long long is 64 bits])
-       DEFINE_MPI_OFFSET="typedef long long MPI_Offset;"
-       FORTRAN_MPI_OFFSET="integer*8"
-       LL="\%lld"
-    elif test "$longlongsize" = "int" ; then  # a hack to set MPI_Offset as int
-       echo "defining MPI_Offset as int in C and integer in Fortran"
-       DEFINE_MPI_OFFSET="typedef int MPI_Offset;"
-       FORTRAN_MPI_OFFSET="integer"
-       AC_DEFINE(MPI_OFFSET_IS_INT,,[Define if MPI_Offset is int])
-       LL="\%d"
-       MPI_OFFSET_KIND1="!"
-       MPI_OFFSET_KIND2="!"
-    else 
-       echo "defining MPI_Offset as long in C and integer in Fortran" 
-       DEFINE_MPI_OFFSET="typedef long MPI_Offset;"
-       FORTRAN_MPI_OFFSET="integer"
-       LL="\%ld"
-       MPI_OFFSET_KIND1="!"
-       MPI_OFFSET_KIND2="!"
-    fi
-else
-   PAC_GET_TYPE_SIZE(long long, longlongsize)
-   if test -n "$longlongsize" ; then
-      if test "$longlongsize" = 8 ; then
-         PAC_TEST_LONG_LONG()
-      else
-         echo "defining MPI_Offset as long in C and integer in Fortran" 
-         DEFINE_MPI_OFFSET="typedef long MPI_Offset;"
-         FORTRAN_MPI_OFFSET="integer"
-         LL="\%ld"
-         MPI_OFFSET_KIND1="!"
-         MPI_OFFSET_KIND2="!"
-      fi
-   else 
-dnl   check if longlong is not supported or only its size cannot be determined
-dnl   because the program cannot be run.
-      rm -f ltest.c
-      cat > ltest.c <<EOF
-        main()
-        {
-           long long i=8;
-           return 0;
-        }
-EOF
-      rm -f conftest
-      $CC $USER_CFLAGS -o conftest ltest.c > /dev/null 2>&1
-      if test -x conftest ; then
-         echo "assuming size of long long is 8bytes; use '-longlongsize' to indicate otherwise"
-         rm -f conftest ltest.c
-         echo "defining MPI_Offset as long long in C and integer*8 in Fortran" 
-         AC_DEFINE(HAVE_LONG_LONG_64,,[Define if long long is 64 bits])
-         DEFINE_MPI_OFFSET="typedef long long MPI_Offset;"
-         FORTRAN_MPI_OFFSET="integer*8"
-         LL="\%lld"
-      else 
-         echo "assuming long long is not available; use '-longlongsize' to indicate otherwise"
-         echo "defining MPI_Offset as long in C and integer in Fortran" 
-         DEFINE_MPI_OFFSET="typedef long MPI_Offset;"
-         FORTRAN_MPI_OFFSET="integer"
-         LL="\%ld"
-         MPI_OFFSET_KIND1="!"
-         MPI_OFFSET_KIND2="!"
-      fi
-   fi
-fi
-])dnl
-dnl
-dnl
-define(PAC_MPI_INFO,[
-  AC_MSG_CHECKING(if MPI_Info functions are defined in the MPI implementation)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-         MPI_Info info;
-         MPI_Init(&argc,&argv);
-         MPI_Info_create(&info);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_MPI_INFO,,[Define if MPI_Info available])
-      HAVE_MPI_INFO="#define HAVE_MPI_INFO"
-      MPI_FINFO1="!"
-      MPI_FINFO2="!"
-      MPI_FINFO3="!"
-      MPI_FINFO4="!"
-  else
-      AC_MSG_RESULT(no)
-      BUILD_MPI_INFO=1
-      MPI_FINFO1="      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL"
-      MPI_FINFO2="      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)"
-      MPI_FINFO3="      INTEGER MPI_INFO_NULL"
-      MPI_FINFO4="      PARAMETER (MPI_INFO_NULL=0)"
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-define(PAC_MPI_DARRAY_SUBARRAY,[
-  AC_MSG_CHECKING(if darray and subarray constructors are defined in the MPI implementation)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-         int i=MPI_DISTRIBUTE_CYCLIC;
-         MPI_Datatype t;
-         MPI_Init(&argc,&argv);
-         MPI_Type_create_darray(i, i, i, &i, &i, &i, &i, i, MPI_INT, &t);
-         MPI_Type_create_subarray(i, &i, &i, &i, i, MPI_INT, &t);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY,,[Define if MPI Darray available])
-      HAVE_MPI_DARRAY_SUBARRAY="#define HAVE_MPI_DARRAY_SUBARRAY"
-      MPI_FARRAY1="!"
-      MPI_FARRAY2="!"
-      MPI_FARRAY3="!"
-      MPI_FARRAY4="!"
-      MPI_FARRAY5="!"
-      MPI_FARRAY6="!"
-      MPI_FARRAY7="!"
-  else
-      AC_MSG_RESULT(no)
-      BUILD_MPI_ARRAY=1
-      MPI_FARRAY1="      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN"
-      MPI_FARRAY2="      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)"
-      MPI_FARRAY3="      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC"
-      MPI_FARRAY4="      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG"
-      MPI_FARRAY5="      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)"
-      MPI_FARRAY6="      PARAMETER (MPI_DISTRIBUTE_NONE=123)"
-      MPI_FARRAY7="      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)"
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-define(PAC_CHECK_MPI_SGI_INFO_NULL,[
-  AC_MSG_CHECKING(if MPI_INFO_NULL is defined in mpi.h)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-       int i;
-       i = MPI_INFO_NULL;
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      cp adio/sgi/mpi3.1/*.h include
-  else
-      AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-dnl
-define(PAC_CHECK_MPIOF_H,[
-  AC_MSG_CHECKING(if mpiof.h is included in mpif.h)
-  rm -f mpitest.f
-  cat > mpitest.f <<EOF
-      program main
-      implicit none
-      include 'mpif.h'
-      integer i
-      i = MPI_MODE_RDWR
-      stop
-      end
-EOF
-  rm -f conftest
-  $F77 $FFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.f $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      MPIOF_H_INCLUDED=1
-  else
-      AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.f
-])dnl
-dnl
-dnl
-dnl check if pread64 is defined in IRIX. needed on IRIX 6.5
-dnl
-define(PAC_HAVE_PREAD64,[
-  AC_MSG_CHECKING(if pread64 is defined)
-  rm -f conftest.c
-  cat > conftest.c <<EOF
-#include <unistd.h>
-     main()
-     {
-         int fd=0, buf=0, i=0;
-         off64_t off=0;
-         pread64(fd, &buf, i, off);
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -o conftest conftest.c > /dev/null 2>&1
-  if test -x conftest ; then
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_PREAD64,,[Define if pread64 available])
-  else
-      AC_MSG_RESULT(no)
-  fi
-rm -f conftest conftest.c
-])dnl
-dnl
-dnl
-define(PAC_TEST_MPI_SGI_type_is_contig,[
-  AC_MSG_CHECKING(if MPI_SGI_type_is_contig is defined)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-         MPI_Datatype type;
-         int i;
-
-         MPI_Init(&argc,&argv);
-         i = MPI_SGI_type_is_contig(type);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-  else
-     AC_MSG_RESULT(no)
-     AC_DEFINE(NO_MPI_SGI_type_is_contig,,[Define if no MPI type is contig])
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-dnl
-define(PAC_TEST_MPI_COMBINERS,[
-  AC_MSG_CHECKING(if MPI-2 combiners are defined in mpi.h)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-         int i;
-
-         MPI_Init(&argc,&argv);
-         i = MPI_COMBINER_STRUCT;
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-     AC_DEFINE(HAVE_MPI_COMBINERS,,[Define if MPI combiners available])
-  else
-     AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-dnl PAC_MPI_OFFSET_KIND()
-dnl
-dnl tries to determine the Fortran 90 kind parameter for 8-byte integers
-dnl
-define(PAC_MPI_OFFSET_KIND,
-[AC_MSG_CHECKING([for Fortran 90 KIND parameter for 8-byte integers])
-rm -f kind.f kind.o kind
-cat <<EOF > kind.f
-      program main
-      integer i
-      i = selected_int_kind(16)
-      open(8, file="k.out", form="formatted")
-      write (8,*) i
-      close(8)
-      stop
-      end
-EOF
-if test -z "$F90" ; then
-   F90=f90
-fi
-KINDVAL=""
-if $F90 -o kind kind.f >/dev/null 2>&1 ; then
-    ./kind >/dev/null 2>&1
-    if test -s k.out ; then 
-        KINDVAL=`cat k.out`
-    fi
-fi
-rm -f kind k.out kind.f kind.o k.out
-if test -n "$KINDVAL" -a "$KINDVAL" != "-1" ; then
-   AC_MSG_RESULT($KINDVAL)
-   MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
-   MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=$KINDVAL)"
-else
-    AC_MSG_RESULT(unavailable)
-fi
-])dnl
-dnl
-dnl
-define(PAC_TEST_MPI_HAVE_OFFSET_KIND,[
-  AC_MSG_CHECKING(if MPI_OFFSET_KIND is defined in mpif.h)
-  rm -f mpitest.f
-  cat > mpitest.f <<EOF
-      program main
-      implicit none
-      include 'mpif.h'
-      integer i
-      i = MPI_OFFSET_KIND
-      stop
-      end
-EOF
-  rm -f conftest
-  $F77 $FFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.f $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-     MPI_OFFSET_KIND1="!"
-     MPI_OFFSET_KIND2="!"
-  else
-     AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.f
-])dnl
-dnl
-dnl
-dnl PAC_GET_XFS_MEMALIGN
-dnl 
-dnl
-define(PAC_GET_XFS_MEMALIGN,
-[AC_MSG_CHECKING([for memory alignment needed for direct I/O])
-/bin/rm -f memalignval
-/bin/rm -f /tmp/romio_tmp.bin
-AC_TEST_PROGRAM([#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdio.h>
-main() { 
-  struct dioattr st;
-  int fd = open("/tmp/romio_tmp.bin", O_RDWR | O_CREAT, 0644);
-  FILE *f=fopen("memalignval","w");
-  if (fd == -1) exit(1);
-  if (!f) exit(1);
-  fcntl(fd, F_DIOINFO, &st);
-  fprintf( f, "%u\n", st.d_mem);
-  exit(0);
-}],Pac_CV_NAME=`cat memalignval`,Pac_CV_NAME="")
-/bin/rm -f memalignval
-/bin/rm -f /tmp/romio_tmp.bin
-if test -n "$Pac_CV_NAME" -a "$Pac_CV_NAME" != 0 ; then
-    AC_MSG_RESULT($Pac_CV_NAME)
-    CFLAGS="$CFLAGS -DXFS_MEMALIGN=$Pac_CV_NAME"
-else
-    AC_MSG_RESULT(unavailable, assuming 128)
-    CFLAGS="$CFLAGS -DXFS_MEMALIGN=128"
-fi
-])dnl
-dnl
-dnl
-dnl Look for a style of VPATH.  Known forms are
-dnl VPATH = .:dir
-dnl .PATH: . dir
-dnl
-dnl Defines VPATH or .PATH with . $(srcdir)
-dnl Requires that vpath work with implicit targets
-dnl NEED TO DO: Check that $< works on explicit targets.
-dnl
-define(PAC_MAKE_VPATH,[
-AC_SUBST(VPATH)
-AC_MSG_CHECKING(for virtual path format)
-rm -rf conftest*
-mkdir conftestdir
-cat >conftestdir/a.c <<EOF
-A sample file
-EOF
-cat > conftest <<EOF
-all: a.o
-VPATH=.:conftestdir
-.c.o:
-       @echo \$<
-EOF
-ac_out=`$MAKE -f conftest 2>&1 | grep 'conftestdir/a.c'`
-if test -n "$ac_out" ; then 
-    AC_MSG_RESULT(VPATH)
-    VPATH='VPATH=.:$(srcdir)'
-else
-    rm -f conftest
-    cat > conftest <<EOF
-all: a.o
-.PATH: . conftestdir
-.c.o:
-       @echo \$<
-EOF
-    ac_out=`$MAKE -f conftest 2>&1 | grep 'conftestdir/a.c'`
-    if test -n "$ac_out" ; then 
-        AC_MSG_RESULT(.PATH)
-        VPATH='.PATH: . $(srcdir)'
-    else
-       AC_MSG_RESULT(neither VPATH nor .PATH works)
-    fi
-fi
-rm -rf conftest*
-])dnl
-dnl
-dnl
-dnl There is a bug in AC_PREPARE that sets the srcdir incorrectly (it
-dnl is correct in configure, but it puts an absolute path into config.status,
-dnl which is a big problem for scripts like mpireconfig that are wrappers
-dnl around config.status).  The bug is in not recognizing that ./ and .//
-dnl are the same  directory as . (in fact, ./[/]* is the same).
-dnl
-define(PAC_FIXUP_SRCDIR,[
-# Find the source files, if location was not specified.
-if test "$srcdirdefaulted" = "yes" ; then
-  srcdir=""
-  # Try the directory containing this script, then `..'.
-  prog=[$]0
-changequote(,)dnl
-  confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
-  # Remove all trailing /'s 
-  confdir=`echo $confdir|sed 's%[/*]$%%'`
-changequote([,])dnl
-  test "X$confdir" = "X$prog" && confdir=.
-  srcdir=$confdir
-  if test ! -r $srcdir/$unique_file; then
-    srcdir=..
-  fi
-fi
-if test ! -r $srcdir/$unique_file; then
-  if test x$srcdirdefaulted = xyes; then
-    echo "configure: Cannot find sources in \`${confdir}' or \`..'." 1>&2
-  else
-    echo "configure: Cannot find sources in \`${srcdir}'." 1>&2
-  fi
-  exit 1
-fi
-# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
-# (and preserve ./ and .//)
-# But we can't avoid them for `..', to make subdirectories work.
-case $srcdir in
-  .|./|.//|/*|~*) ;;
-  *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
-esac
-])
-dnl
-dnl
-dnl AC_TRY_LINK(INCLUDES, FUNCTION-BODY,
-dnl             ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
-define(AC_TRY_LINK,
-if test -z "$ac_ext" ; then 
-    ac_ext=c
-fi
-[cat > conftest.$ac_ext <<EOF
-dnl This sometimes fails to find confdefs.h, for some reason.
-dnl [#]line __oline__ "[$]0"
-dnl [#]line __oline__ "configure"
-#include "confdefs.h"
-[$1]
-int main() { return 0; }
-int t() {
-[$2]
-; return 0; }
-EOF
-rm -f conftest.out
-if test -z "$ac_link" ; then
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >conftest.out 2>&1'
-fi
-if eval $ac_link; then
-  ifelse([$3], , :, [rm -rf conftest*
-  $3])
-else
-  if test -s conftest.out ; then cat conftest.out >> config.log ; fi
-ifelse([$4], , , [rm -rf conftest*
-  $4
-])dnl
-fi
-rm -f conftest*]
-)dnl
-dnl
-dnl
-define(PAC_HAVE_MOUNT_NFS,[
-  AC_MSG_CHECKING([if MOUNT_NFS is defined in the include files])
-  rm -f conftest.c
-  cat > conftest.c <<EOF
-#include <sys/param.h>
-#include <sys/mount.h>
-     main()
-     {
-         int i=MOUNT_NFS;
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -o conftest conftest.c > /dev/null 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-     AC_DEFINE(HAVE_MOUNT_NFS,,[Define if MOUNT_NFS defined])
-  else
-     AC_MSG_RESULT(no)
-  fi
-  rm -f conftest conftest.c
-])dnl
-dnl
-dnl
-dnl PAC_MPI_OFFSET_KIND_4BYTE()
-dnl
-dnl tries to determine the Fortran 90 kind parameter for 4-byte integers
-dnl
-define(PAC_MPI_OFFSET_KIND_4BYTE,
-[AC_MSG_CHECKING([for Fortran 90 KIND parameter for 4-byte integers])
-rm -f kind.f kind.o kind
-cat <<EOF > kind.f
-      program main
-      integer i
-      i = selected_int_kind(8)
-      open(8, file="k.out", form="formatted")
-      write (8,*) i
-      close(8)
-      stop
-      end
-EOF
-if test -z "$F90" ; then
-   F90=f90
-fi
-KINDVAL=""
-if $F90 -o kind kind.f >/dev/null 2>&1 ; then
-    ./kind >/dev/null 2>&1
-    if test -s k.out ; then 
-        KINDVAL=`cat k.out`
-    fi
-fi
-rm -f kind k.out kind.f kind.o
-if test -n "$KINDVAL" -a "$KINDVAL" != "-1" ; then
-   AC_MSG_RESULT($KINDVAL)
-   MPI_OFFSET_KIND1="      INTEGER MPI_OFFSET_KIND"
-   MPI_OFFSET_KIND2="      PARAMETER (MPI_OFFSET_KIND=$KINDVAL)"
-else
-    AC_MSG_RESULT(unavailable)
-fi
-])dnl
-dnl
-dnl
-define(PAC_FUNC_STRERROR,[
-  AC_MSG_CHECKING([for strerror()])
-  rm -f conftest.c
-  cat > conftest.c <<EOF
-#include <string.h>
-     main()
-     {
-        char *s = strerror(5);
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -o conftest conftest.c >> config.log 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-     AC_DEFINE(HAVE_STRERROR,,[Define if strerror available])
-  else
-     AC_MSG_RESULT(no)
-     AC_MSG_CHECKING([for sys_errlist])
-     rm -f conftest.c
-changequote(,)
-     cat > conftest.c <<EOF
-#include <stdio.h>
-        main()
-        {
-           extern char *sys_errlist[];
-          printf("%s\n", sys_errlist[34]);
-        }
-EOF
-changequote([,])
-     rm -f conftest
-     $CC $USER_CFLAGS -o conftest conftest.c > config.log 2>&1
-     if test -x conftest ; then
-        AC_MSG_RESULT(yes)
-        AC_DEFINE(HAVE_SYSERRLIST,,[Define if syserrlist available])
-     else
-        AC_MSG_RESULT(no)
-     fi
-  fi
-  rm -f conftest conftest.c
-])dnl
-dnl
-dnl
-dnl
-define(PAC_C_INLINE,[
-AC_MSG_CHECKING([for inline])
-if eval "test \"`echo '$''{'pac_cv_c_inline'+set}'`\" = set"; then
-   AC_MSG_RESULT([(cached)])
-else
-  AC_COMPILE_CHECK(,[inline int a( int b ){return b+1;}],[int a;],
-pac_cv_c_inline="yes",pac_cv_c_inline="no")
-fi
-AC_MSG_RESULT($pac_cv_c_inline)
-if test "$pac_cv_c_inline" = "no" ; then
-    AC_DEFINE(inline,,[Define if inline is not supported])
-fi
-])dnl
-define(AC_MSG_WARN,[AC_MSG_RESULT([Warning: $1])])
-dnl
-dnl PAC_CHECK_HEADER(HEADER-FILE, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND],
-dnl PRE-REQ-HEADERS )
-dnl
-dnl BUG: AIX 4.1 can't handle a \055 (octal for -) in a tr string (sometimes;
-dnl it works from the shell but not within a file)
-dnl I've removed that and hoped that no header will include a - in the
-dnl name
-dnl
-dnl This can fail if the header needs OTHER headers for the compile
-dnl to succeed.  Those headers should be specified in the "pre-req-headers"
-dnl For example 
-dnl PAC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H),,
-dnl                  [#include <sys/types.h>])
-dnl
-define(PAC_CHECK_HEADER,dnl
-[dnl Do the transliteration at runtime so arg 1 can be a shell variable.
-changequote(,)dnl
-ac_safe=`echo "$1" | tr '[a-z]./' '[A-Z]__'`
-changequote([,])dnl
-AC_MSG_CHECKING([for $1])
-dnl AC_CACHE_VAL(ac_cv_header_$ac_safe,[dnl
-AC_COMPILE_CHECK(,[$4]
-[#include <$1>],main();,eval "ac_cv_header_$ac_safe=yes",
-  eval "ac_cv_header_$ac_safe=no")dnl])dnl
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  AC_MSG_RESULT(yes)
-  ifelse([$2], , :, [$2])
-else
-  AC_MSG_RESULT(no)
-ifelse([$3], , , [$3
-])dnl
-fi
-])dnl
-dnl
-dnl PAC_CHECK_HEADERS(HEADER-FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-define(PAC_CHECK_HEADERS,[for ac_hdr in $1
-do
-PAC_CHECK_HEADER($ac_hdr,
-[changequote(, )dnl
-  ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./' '[A-Z]__'`
-changequote([, ])dnl
-  AC_DEFINE($ac_tr_hdr) $2], $3)dnl
-done
-])dnl
-dnl
-define(PAC_TEST_MPIR_STATUS_SET_BYTES,[
-  AC_MSG_CHECKING(if MPIR_Status_set_bytes is defined)
-  rm -f mpitest.c
-  cat > mpitest.c <<EOF
-#include "mpi.h"
-     main(int argc, char **argv)
-     {
-        MPI_Status status;
-         MPI_Datatype type;
-        int err;
-
-         MPI_Init(&argc,&argv);
-         MPIR_Status_set_bytes(status,type,err);
-         MPI_Finalize(); 
-     }
-EOF
-  rm -f conftest
-  $CC $USER_CFLAGS -I$MPI_INCLUDE_DIR -o conftest mpitest.c $MPI_LIB > /dev/null 2>&1
-  if test -x conftest ; then
-     AC_MSG_RESULT(yes)
-     AC_DEFINE(HAVE_STATUS_SET_BYTES,,[Define if status set bytes available])
-  else
-     AC_MSG_RESULT(no)
-  fi
-  rm -f conftest mpitest.c
-])dnl
-dnl
-dnl
-dnl
-
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/.state-cache b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/.state-cache
new file mode 100644 (file)
index 0000000..efed268
--- /dev/null
@@ -0,0 +1,61 @@
+<dir>
+<file name="ad_bgl_getsh.c" info="1205187069"/>
+<file name="ad_bgl_fcntl.c" info="1217730774"/>
+<file name="ad_bgl_tuning.c" info="1302115135"/>
+<file name="ad_bgl_pset.h" info="1302115135"/>
+<file name="ad_bgl_aggrs.c" info="1305319836"/>
+<file name="ad_bgl_wrcoll.c" info="1297714801"/>
+<file name="ad_bgl_aggrs.h" info="1241801503"/>
+<file name="ad_bgl_pset.c" info="1205187069"/>
+<file name="ad_bgl_setsh.c" info="1205187069"/>
+<file name="ad_bgl_flush.c" info="1220655075"/>
+<file name="ad_bgl_close.c" info="1217730774"/>
+<file name="ad_bgl.h" info="1220655075"/>
+<file name="ad_bgl_rdcoll.c" info="1302115135"/>
+<file name="ad_bgl_read.c" info="1274813953"/>
+<file name="ad_bgl_open.c" info="1302115135"/>
+<file name="ad_bgl_tuning.h" info="1302115135"/>
+<file name="ad_bgl_write.c" info="1274813953"/>
+<file name="ad_bgl_hints.c" info="1302115135"/>
+<file name="ad_bgl.c" info="1220655075"/>
+</dir>
+<data>
+<fileinfo name="ad_bgl_getsh.c">
+</fileinfo>
+<fileinfo name="ad_bgl_fcntl.c">
+</fileinfo>
+<fileinfo name="ad_bgl_tuning.c">
+</fileinfo>
+<fileinfo name="ad_bgl_pset.h">
+</fileinfo>
+<fileinfo name="ad_bgl_aggrs.c">
+</fileinfo>
+<fileinfo name="ad_bgl_wrcoll.c">
+</fileinfo>
+<fileinfo name="ad_bgl_aggrs.h">
+</fileinfo>
+<fileinfo name="ad_bgl_pset.c">
+</fileinfo>
+<fileinfo name="ad_bgl_setsh.c">
+</fileinfo>
+<fileinfo name="ad_bgl_flush.c">
+</fileinfo>
+<fileinfo name="ad_bgl_close.c">
+</fileinfo>
+<fileinfo name="ad_bgl.h">
+</fileinfo>
+<fileinfo name="ad_bgl_rdcoll.c">
+</fileinfo>
+<fileinfo name="ad_bgl_read.c">
+</fileinfo>
+<fileinfo name="ad_bgl_open.c">
+</fileinfo>
+<fileinfo name="ad_bgl_tuning.h">
+</fileinfo>
+<fileinfo name="ad_bgl_write.c">
+</fileinfo>
+<fileinfo name="ad_bgl_hints.c">
+</fileinfo>
+<fileinfo name="ad_bgl.c">
+</fileinfo>
+</data>
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/Makefile.in b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/Makefile.in
new file mode 100644 (file)
index 0000000..158dcf9
--- /dev/null
@@ -0,0 +1,47 @@
+CC          = @CC@
+AR          = @AR@
+LIBNAME     = @LIBNAME@
+srcdir      = @srcdir@
+CC_SHL      = @CC_SHL@
+SHLIBNAME   = @SHLIBNAME@
+
+INCLUDES = -I@MPI_INCLUDE_DIR@ -I${srcdir}/../include -I../include -I../../include  -I${srcdir}/../../../../include -I../../../../include @CPPFLAGS@
+CFLAGS      = @CFLAGS@ $(INCLUDES) -DBGL_OPTIM_STEP1_2=1 -DBGL_OPTIM_STEP1_1=1
+
+C_COMPILE_SHL = $(CC_SHL) @CFLAGS@ $(INCLUDES)
+
+@VPATH@
+
+AD_BGL_OBJECTS = \
+      ad_bgl_open.o ad_bgl_close.o \
+      ad_bgl_fcntl.o ad_bgl_flush.o \
+      ad_bgl_read.o ad_bgl_write.o ad_bgl_getsh.o ad_bgl_setsh.o \
+      ad_bgl.o ad_bgl_aggrs.o ad_bgl_pset.o ad_bgl_hints.o \
+      ad_bgl_rdcoll.o ad_bgl_wrcoll.o ad_bgl_tuning.o
+
+default: $(LIBNAME)
+       @if [ "@ENABLE_SHLIB@" != "none" ] ; then \
+           $(MAKE) $(SHLIBNAME).la ;\
+       fi
+
+.SUFFIXES: $(SUFFIXES) .p .lo
+
+.c.o:
+       $(CC) $(CFLAGS) -c $<
+.c.lo:
+       $(C_COMPILE_SHL) $(CFLAGS) -c $<
+       @mv -f $*.o $*.lo
+
+$(LIBNAME): $(AD_BGL_OBJECTS)
+       $(AR) $(LIBNAME) $(AD_BGL_OBJECTS)
+
+AD_BGL_LOOBJECTS=$(AD_BGL_OBJECTS:.o=.lo)
+$(SHLIBNAME).la: $(AD_BGL_LOOBJECTS)
+       $(AR) $(SHLIBNAME).la $(AD_BGL_LOOBJECTS)
+
+coverage:
+       -@for file in  ${AD_BGL_OBJECTS:.o=.c} ; do \
+               gcov -b -f $$file ; done
+
+clean:
+       @rm -f *.o *.lo
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.c
new file mode 100644 (file)
index 0000000..e17cf31
--- /dev/null
@@ -0,0 +1,60 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl.c
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 2001 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+
+/* adioi.h has the ADIOI_Fns_struct define */
+#include "adioi.h"
+
+struct ADIOI_Fns_struct ADIO_BGL_operations = {
+    ADIOI_BGL_Open, /* Open */
+    ADIOI_GEN_OpenColl, /* Collective open */
+    ADIOI_BGL_ReadContig, /* ReadContig */
+    ADIOI_BGL_WriteContig, /* WriteContig */
+#if BGL_OPTIM_STEP1_2
+    ADIOI_BGL_ReadStridedColl, /* ReadStridedColl */
+    ADIOI_BGL_WriteStridedColl, /* WriteStridedColl */
+#else
+    ADIOI_GEN_ReadStridedColl, /* ReadStridedColl */
+    ADIOI_GEN_WriteStridedColl, /* WriteStridedColl */
+#endif
+    ADIOI_GEN_SeekIndividual, /* SeekIndividual */
+    ADIOI_BGL_Fcntl, /* Fcntl */
+#if BGL_OPTIM_STEP1_1
+    ADIOI_BGL_SetInfo, /* SetInfo */
+#else
+    ADIOI_GEN_SetInfo, /* SetInfo */
+#endif
+    ADIOI_BGL_ReadStrided, /* ReadStrided */
+    ADIOI_BGL_WriteStrided, /* WriteStrided */
+    ADIOI_BGL_Close, /* Close */
+#ifdef ROMIO_HAVE_WORKING_AIO
+#warning Consider BG support for NFS before enabling this.
+    ADIOI_GEN_IreadContig, /* IreadContig */
+    ADIOI_GEN_IwriteContig, /* IwriteContig */
+#else
+    ADIOI_FAKE_IreadContig, /* IreadContig */
+    ADIOI_FAKE_IwriteContig, /* IwriteContig */
+#endif
+    ADIOI_GEN_IODone, /* ReadDone */
+    ADIOI_GEN_IODone, /* WriteDone */
+    ADIOI_GEN_IOComplete, /* ReadComplete */
+    ADIOI_GEN_IOComplete, /* WriteComplete */
+    ADIOI_GEN_IreadStrided, /* IreadStrided */
+    ADIOI_GEN_IwriteStrided, /* IwriteStrided */
+    ADIOI_BGL_Flush, /* Flush */
+    ADIOI_GEN_Resize, /* Resize */
+    ADIOI_GEN_Delete, /* Delete */
+    ADIOI_GEN_Feature, /* Features */
+};
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.h b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl.h
new file mode 100644 (file)
index 0000000..89d247b
--- /dev/null
@@ -0,0 +1,97 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl.h
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#ifndef AD_BGL_INCLUDE
+#define AD_BGL_INCLUDE
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include "adio.h"
+
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#ifdef HAVE_AIO_H
+#include <aio.h>
+#endif
+
+#if 0 
+int ADIOI_BGL_aio(ADIO_File fd, void *buf, int len, ADIO_Offset offset,
+                 int wr, void *handle);
+#endif
+
+void ADIOI_BGL_Open(ADIO_File fd, int *error_code);
+
+void ADIOI_BGL_Close(ADIO_File fd, int *error_code);
+
+void ADIOI_BGL_ReadContig(ADIO_File fd, void *buf, int count, 
+                      MPI_Datatype datatype, int file_ptr_type,
+                     ADIO_Offset offset, ADIO_Status *status, int
+                    *error_code);
+void ADIOI_BGL_WriteContig(ADIO_File fd, void *buf, int count, 
+                      MPI_Datatype datatype, int file_ptr_type,
+                      ADIO_Offset offset, ADIO_Status *status, int
+                     *error_code);   
+#if 0
+void ADIOI_BGL_IwriteContig(ADIO_File fd, void *buf, int count, 
+                      MPI_Datatype datatype, int file_ptr_type,
+                      ADIO_Offset offset, ADIO_Request *request, int
+                     *error_code);   
+void ADIOI_BGL_IreadContig(ADIO_File fd, void *buf, int count, 
+                      MPI_Datatype datatype, int file_ptr_type,
+                      ADIO_Offset offset, ADIO_Request *request, int
+                     *error_code);   
+int ADIOI_BGL_ReadDone(ADIO_Request *request, ADIO_Status *status, int
+                      *error_code);
+int ADIOI_BGL_WriteDone(ADIO_Request *request, ADIO_Status *status, int
+                      *error_code);
+void ADIOI_BGL_ReadComplete(ADIO_Request *request, ADIO_Status *status, int
+                      *error_code); 
+void ADIOI_BGL_WriteComplete(ADIO_Request *request, ADIO_Status *status,
+                       int *error_code); 
+#endif
+void ADIOI_BGL_Fcntl(ADIO_File fd, int flag, ADIO_Fcntl_t *fcntl_struct, int
+               *error_code); 
+void ADIOI_BGL_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code);
+
+void ADIOI_BGL_WriteStrided(ADIO_File fd, void *buf, int count,
+                      MPI_Datatype datatype, int file_ptr_type,
+                      ADIO_Offset offset, ADIO_Status *status, int
+                      *error_code);
+void ADIOI_BGL_ReadStrided(ADIO_File fd, void *buf, int count,
+                      MPI_Datatype datatype, int file_ptr_type,
+                      ADIO_Offset offset, ADIO_Status *status, int
+                      *error_code);
+
+void ADIOI_BGL_ReadStridedColl(ADIO_File fd, void *buf, int count,
+                               MPI_Datatype datatype, int file_ptr_type,
+                               ADIO_Offset offset, ADIO_Status *status, int
+                               *error_code);
+
+void ADIOI_BGL_WriteStridedColl(ADIO_File fd, void *buf, int count,
+                       MPI_Datatype datatype, int file_ptr_type,
+                       ADIO_Offset offset, ADIO_Status *status, int
+                       *error_code);
+
+void ADIOI_BGL_Get_shared_fp(ADIO_File fd, int size, ADIO_Offset *shared_fp, int *error_code);
+void ADIOI_BGL_Set_shared_fp(ADIO_File fd, ADIO_Offset offset, int *error_code);
+
+void ADIOI_BGL_Flush(ADIO_File fd, int *error_code);
+
+#include "ad_bgl_tuning.h"
+
+
+#endif
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.c
new file mode 100644 (file)
index 0000000..cbfbb23
--- /dev/null
@@ -0,0 +1,966 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_aggrs.c
+ * \brief The externally used function from this file is is declared in ad_bgl_aggrs.h
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997-2001 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "adio.h"
+#include "adio_cb_config_list.h"
+#include "ad_bgl.h"
+#include "ad_bgl_pset.h"
+#include "ad_bgl_aggrs.h"
+#ifdef AGGREGATION_PROFILE
+#include "mpe.h"
+#endif
+
+#ifdef USE_DBG_LOGGING
+  #define AGG_DEBUG 1
+#endif
+
+
+
+static int aggrsInPsetSize=0;
+static int *aggrsInPset=NULL;
+
+/* Comments copied from common:
+ * This file contains four functions:
+ *
+ * ADIOI_Calc_aggregator()
+ * ADIOI_Calc_file_domains()
+ * ADIOI_Calc_my_req()
+ * ADIOI_Calc_others_req()
+ *
+ * The last three of these were originally in ad_read_coll.c, but they are
+ * also shared with ad_write_coll.c.  I felt that they were better kept with
+ * the rest of the shared aggregation code.  
+ */
+
+/* Discussion of values available from above:
+ *
+ * ADIO_Offset st_offsets[0..nprocs-1]
+ * ADIO_Offset end_offsets[0..nprocs-1]
+ *    These contain a list of start and end offsets for each process in 
+ *    the communicator.  For example, an access at loc 10, size 10 would
+ *    have a start offset of 10 and end offset of 19.
+ * int nprocs
+ *    number of processors in the collective I/O communicator
+ * ADIO_Offset min_st_offset
+ * ADIO_Offset fd_start[0..nprocs_for_coll-1]
+ *    starting location of "file domain"; region that a given process will
+ *    perform aggregation for (i.e. actually do I/O)
+ * ADIO_Offset fd_end[0..nprocs_for_coll-1]
+ *    start + size - 1 roughly, but it can be less, or 0, in the case of 
+ *    uneven distributions
+ */
+
+/* forward declaration */
+static void 
+ADIOI_BGL_compute_agg_ranklist_serial ( ADIO_File fd, 
+                                       const ADIOI_BGL_ConfInfo_t *confInfo, 
+                                       ADIOI_BGL_ProcInfo_t *all_procInfo,
+                                       int *aggrsInPset );
+
+/*
+ * Compute the aggregator-related parameters that are required in 2-phase collective IO of ADIO.
+ * The parameters are 
+ *     . the number of aggregators (proxies) : fd->hints->cb_nodes
+ *     . the ranks of the aggregators :        fd->hints->ranklist
+ * By compute these two parameters in a BGL-PSET-aware way, the default 2-phase collective IO of 
+ *     ADIO can work more efficiently.
+ */
+int 
+ADIOI_BGL_gen_agg_ranklist(ADIO_File fd, int n_aggrs_per_pset) 
+{
+    int r, s;
+    ADIOI_BGL_ProcInfo_t  *procInfo, *all_procInfo;
+    ADIOI_BGL_ConfInfo_t  *confInfo;
+
+    MPI_Comm_size( fd->comm, &s );
+    MPI_Comm_rank( fd->comm, &r );
+
+  /* Collect individual BGL personality information */
+    confInfo = ADIOI_BGL_ConfInfo_new ();
+    procInfo = ADIOI_BGL_ProcInfo_new ();
+    ADIOI_BGL_persInfo_init( confInfo, procInfo, s, r, n_aggrs_per_pset );
+
+  /* Gather BGL personality infomation onto process 0 */
+    // if (r == 0) 
+    all_procInfo  = ADIOI_BGL_ProcInfo_new_n  (s);
+    if(s > aggrsInPsetSize)
+    {
+      if(aggrsInPset) ADIOI_Free(aggrsInPset);
+      aggrsInPset   = (int *) ADIOI_Malloc (s *sizeof(int));
+      aggrsInPsetSize = s;
+    }
+
+
+    MPI_Gather( (void *)procInfo,     sizeof(ADIOI_BGL_ProcInfo_t), MPI_BYTE, 
+               (void *)all_procInfo, sizeof(ADIOI_BGL_ProcInfo_t), MPI_BYTE, 
+               0, 
+               fd->comm );
+
+  /* Compute a list of the ranks of chosen IO proxy CN on process 0 */
+    if (r == 0) { 
+       ADIOI_BGL_compute_agg_ranklist_serial (fd, confInfo, all_procInfo, aggrsInPset);    
+       // ADIOI_BGL_ProcInfo_free (all_procInfo);
+    }
+    ADIOI_BGL_ProcInfo_free (all_procInfo);
+
+  /* Send the info of IO proxy CN to all processes and keep the info in fd->hints struct.
+     Declared in adio_cb_config_list.h */
+    ADIOI_cb_bcast_rank_map(fd);               
+
+  /* Broadcast the BGL-GPFS related file domain info */
+    MPI_Bcast( (void *)aggrsInPset, 
+               fd->hints->cb_nodes * sizeof(int), MPI_BYTE, 
+               0, 
+               fd->comm );
+    
+    ADIOI_BGL_persInfo_free( confInfo, procInfo );
+    return 0;
+}
+
+/*  
+ * the purpose of abstracting out this routine is to make it easy for trying different proxy-selection criteria. 
+ */
+static int 
+ADIOI_BGL_select_agg_in_pset (const ADIOI_BGL_ConfInfo_t *confInfo,
+                             ADIOI_BGL_ProcInfo_t *pset_procInfo, 
+                             int nCN_in_pset, 
+                             int *tmp_ranklist)
+{
+/* first implementation, based on their rank order. */
+
+    int i, j, k; 
+
+    /* The number of aggregators in the PSET is proportional to the CNs in the PSET */
+    int nAggrs = nCN_in_pset * confInfo->aggRatio;     
+    if (nAggrs < ADIOI_BGL_NAGG_PSET_MIN) nAggrs = ADIOI_BGL_NAGG_PSET_MIN;
+
+    /* for not virtual-node-mode, pick aggregators in this PSET based on the order of the global rank */
+    if (!confInfo->isVNM) 
+    {
+       for (i=0; i<nAggrs; i++) tmp_ranklist[i] = pset_procInfo[i].rank;
+    }
+
+    /* for virtual-node-mode, first pick aggregators among CPU-0 */
+    else 
+    {
+       /* Try to pick from CPU-0 first, then CPU-1, then ... CPU-n */
+      j = 0;
+      for (k=0; k < confInfo->cpuidSize; k++){
+         for (i=0; i< nCN_in_pset ; i++) {
+           if (pset_procInfo[i].cpuid == k) 
+             tmp_ranklist[j++] = pset_procInfo[i].rank;
+           if ( j >= nAggrs) break;
+         }
+       if ( j >= nAggrs) break;
+      }
+    }
+
+    return nAggrs;
+}
+
+/* 
+ * Pick IO aggregators based on the under PSET organization and stores the ranks of the proxy CNs in tmp_ranklist.
+ * The first order of tmp_ranklist is : PSET number
+ * The secondary order of the list is determined in ADIOI_BGL_select_agg_in_pset() and thus adjustable.
+ */
+static int 
+ADIOI_BGL_compute_agg_ranklist_serial_do (const ADIOI_BGL_ConfInfo_t *confInfo, 
+                                         ADIOI_BGL_ProcInfo_t       *all_procInfo, 
+                                         int *aggrsInPset, 
+                                         int *tmp_ranklist)
+{
+    int i, j;
+
+    /* a list of the numbers of all the PSETS */
+    int *psetNumList = (int *) ADIOI_Malloc ( confInfo->nProcs * sizeof(int) );
+
+  /* sweep through all processes' records, collect the numbers of all the PSETS. 
+   * The reason for not doing MIN, MAX is that the owned PSETs may not have contiguous numbers */
+    int n_psets=0;
+    for (i=0; i<confInfo->nProcs; i++) {
+
+       ADIOI_BGL_ProcInfo_t *info_p = all_procInfo+i;
+
+       int exist = 0;
+       for (j=n_psets-1; j>=0; j--) 
+           if (info_p->psetNum == psetNumList[j]) { exist=1; break; }
+
+       if (!exist) {
+           psetNumList [n_psets] = info_p->psetNum;
+           n_psets ++;
+       }
+    }
+
+  /* bucket sort:  put the CN nodes into ordered buckets, each of which represents a PSET */
+
+    /* bucket space for bucket sort */
+    ADIOI_BGL_ProcInfo_t *sorted_procInfo = ADIOI_BGL_ProcInfo_new_n ( n_psets * confInfo->virtualPsetSize );
+    int *PsetIdx = (int *) ADIOI_Malloc ( n_psets * sizeof(int) );
+    AD_BGL_assert ( (PsetIdx != NULL) );
+
+    /* initialize bucket pointer */
+    for (i=0; i<n_psets; i++) {
+        PsetIdx[i] = i*confInfo->virtualPsetSize;
+    }
+
+    /* sort */
+    for (i=0; i<confInfo->nProcs; i++) {
+        int pset_id = all_procInfo[i].psetNum;
+
+       for (j=n_psets-1; j>=0; j--) if (pset_id == psetNumList[j]) break;
+       AD_BGL_assert ( (j >= 0) );                             /* got to find a PSET bucket */
+
+        sorted_procInfo[ PsetIdx[j] ++ ] = all_procInfo[i];
+    }
+
+    ADIOI_Free(psetNumList);
+
+  /* select a number of CN aggregators from each Pset */
+    int naggs = 0;
+    for (i=0; i<n_psets; i++) {
+
+       /* the number of CN in this PSET -- may not be a full PSET */
+        int nCN_in_pset = PsetIdx[i] - i*confInfo->virtualPsetSize;    
+
+       /* select aggregators and put them into tmp_ranklist contiguously. */
+       int local_naggs = ADIOI_BGL_select_agg_in_pset( confInfo, 
+                                     sorted_procInfo + i*confInfo->virtualPsetSize, 
+                                     nCN_in_pset, 
+                                     tmp_ranklist + naggs);
+       aggrsInPset[i+1] = local_naggs;
+
+        naggs += local_naggs;
+    }
+        aggrsInPset[0] = n_psets;
+
+  /* leave */
+    ADIOI_Free ( PsetIdx );
+    ADIOI_BGL_ProcInfo_free ( sorted_procInfo );
+    return naggs;
+}
+
+/* 
+ * compute aggregators ranklist and put it into fd->hints struct
+ */ 
+static void 
+ADIOI_BGL_compute_agg_ranklist_serial ( ADIO_File fd, 
+                                       const ADIOI_BGL_ConfInfo_t *confInfo, 
+                                       ADIOI_BGL_ProcInfo_t *all_procInfo,
+                                       int *aggrsInPset )
+{
+#   if AGG_DEBUG
+    int i; 
+#   endif
+    int naggs; 
+    int *tmp_ranklist;
+
+  /* compute the ranklist of IO aggregators and put into tmp_ranklist */
+    tmp_ranklist = (int *) ADIOI_Malloc (confInfo->nProcs * sizeof(int));
+
+#   if AGG_DEBUG
+    for (i=0; i<confInfo->nProcs; i++) {
+      DBG_FPRINTF(stderr, "\tcpuid %1d, rank = %6d\n", all_procInfo[i].cpuid, all_procInfo[i].rank );
+    }
+#   endif
+
+    naggs = 
+    ADIOI_BGL_compute_agg_ranklist_serial_do (confInfo, all_procInfo, aggrsInPset, tmp_ranklist);
+
+#   define VERIFY 0
+#   if VERIFY
+    DBG_FPRINTF(stderr, "\tconfInfo = %3d,%3d,%3d,%3d,%3d,%3d,%.4f; naggs = %d\n", 
+           confInfo->PsetSize        ,
+           confInfo->numPsets        ,
+           confInfo->isVNM           ,
+           confInfo->virtualPsetSize ,
+           confInfo->nProcs          ,
+           confInfo->nAggrs          ,
+           confInfo->aggRatio        ,
+           naggs );
+#   endif
+
+#   if AGG_DEBUG
+    for (i=0; i<naggs; i++) {
+      DBG_FPRINTF(stderr, "\taggr %-4d = %6d\n", i, tmp_ranklist[i] );
+    }
+#   endif
+
+  /* copy the ranklist of IO aggregators to fd->hints */
+    if(fd->hints->ranklist != NULL) ADIOI_Free (fd->hints->ranklist);
+
+    fd->hints->cb_nodes = naggs;
+    fd->hints->ranklist = (int *) ADIOI_Malloc (naggs * sizeof(int));
+    memcpy( fd->hints->ranklist, tmp_ranklist, naggs*sizeof(int) );
+
+  /* */
+    ADIOI_Free( tmp_ranklist );
+    return;
+}
+
+/* Description from common/ad_aggregate.c.  (Does it completely apply to bgl?)
+ * ADIOI_Calc_aggregator()
+ *
+ * The intention here is to implement a function which provides basically 
+ * the same functionality as in Rajeev's original version of 
+ * ADIOI_Calc_my_req().  He used a ceiling division approach to assign the 
+ * file domains, and we use the same approach here when calculating the
+ * location of an offset/len in a specific file domain.  Further we assume
+ * this same distribution when calculating the rank_index, which is later
+ *  used to map to a specific process rank in charge of the file domain.
+ *
+ * A better (i.e. more general) approach would be to use the list of file
+ * domains only.  This would be slower in the case where the
+ * original ceiling division was used, but it would allow for arbitrary
+ * distributions of regions to aggregators.  We'd need to know the 
+ * nprocs_for_coll in that case though, which we don't have now.
+ *
+ * Note a significant difference between this function and Rajeev's old code:
+ * this code doesn't necessarily return a rank in the range
+ * 0..nprocs_for_coll; instead you get something in 0..nprocs.  This is a
+ * result of the rank mapping; any set of ranks in the communicator could be
+ * used now.
+ *
+ * Returns an integer representing a rank in the collective I/O communicator.
+ *
+ * The "len" parameter is also modified to indicate the amount of data
+ * actually available in this file domain.
+ */
+/* 
+ * This is more general aggregator search function which does not base on the assumption
+ * that each aggregator hosts the file domain with the same size 
+ */
+int ADIOI_BGL_Calc_aggregator(ADIO_File fd,
+                             ADIO_Offset off,
+                             ADIO_Offset min_off,
+                             ADIO_Offset *len,
+                             ADIO_Offset fd_size,
+                             ADIO_Offset *fd_start,
+                             ADIO_Offset *fd_end)
+{
+    int rank_index, rank;
+    ADIO_Offset avail_bytes;
+
+    AD_BGL_assert ( (off <= fd_end[fd->hints->cb_nodes-1] && off >= min_off && fd_start[0] >= min_off ) );
+
+    /* binary search --> rank_index is returned */
+    int ub = fd->hints->cb_nodes;
+    int lb = 0;
+    /* get an index into our array of aggregators */
+    /* Common code for striping - bgl doesn't use it but it's
+       here to make diff'ing easier.
+    rank_index = (int) ((off - min_off + fd_size)/ fd_size - 1);
+
+    if (fd->hints->striping_unit > 0) {
+        * wkliao: implementation for file domain alignment
+           fd_start[] and fd_end[] have been aligned with file lock
+          boundaries when returned from ADIOI_Calc_file_domains() so cannot
+          just use simple arithmatic as above *
+        rank_index = 0;
+        while (off > fd_end[rank_index]) rank_index++;
+    } 
+    bgl does it's own striping below 
+    */
+    rank_index = fd->hints->cb_nodes / 2;
+    while ( off < fd_start[rank_index] || off > fd_end[rank_index] ) {
+       if ( off > fd_end  [rank_index] ) {
+           lb = rank_index;
+           rank_index = (rank_index + ub) / 2;
+       }
+       else 
+       if ( off < fd_start[rank_index] ) {
+           ub = rank_index;
+           rank_index = (rank_index + lb) / 2;
+       }
+    }
+    /* we index into fd_end with rank_index, and fd_end was allocated to be no
+     * bigger than fd->hins->cb_nodes.   If we ever violate that, we're
+     * overrunning arrays.  Obviously, we should never ever hit this abort */
+    if (rank_index >= fd->hints->cb_nodes || rank_index < 0) {
+        FPRINTF(stderr, "Error in ADIOI_Calc_aggregator(): rank_index(%d) >= fd->hints->cb_nodes (%d) fd_size=%lld off=%lld\n",
+                       rank_index,fd->hints->cb_nodes,fd_size,off);
+        MPI_Abort(MPI_COMM_WORLD, 1);
+    }
+    // DBG_FPRINTF ("ADIOI_BGL_Calc_aggregator: rank_index = %d\n", rank_index );
+
+    /* 
+     * remember here that even in Rajeev's original code it was the case that
+     * different aggregators could end up with different amounts of data to
+     * aggregate.  here we use fd_end[] to make sure that we know how much
+     * data this aggregator is working with.  
+     *
+     * the +1 is to take into account the end vs. length issue.
+     */
+    avail_bytes = fd_end[rank_index] + 1 - off;
+    if (avail_bytes < *len && avail_bytes > 0) {
+        /* this file domain only has part of the requested contig. region */
+
+        *len = avail_bytes;
+    }
+
+    /* map our index to a rank */
+    /* NOTE: FOR NOW WE DON'T HAVE A MAPPING...JUST DO 0..NPROCS_FOR_COLL */
+    rank = fd->hints->ranklist[rank_index];
+
+    return rank;
+}
+
+/* 
+ * Compute a dynamic access range based file domain partition among I/O aggregators,
+ * which align to the GPFS block size
+ * Divide the I/O workload among "nprocs_for_coll" processes. This is
+ * done by (logically) dividing the file into file domains (FDs); each
+ * process may directly access only its own file domain. 
+ * Additional effort is to make sure that each I/O aggregator get
+ * a file domain that aligns to the GPFS block size.  So, there will 
+ * not be any false sharing of GPFS file blocks among multiple I/O nodes. 
+ *  
+ * The common version of this now accepts a min_fd_size and striping_unit. 
+ * It doesn't seem necessary here (using GPFS block sizes) but keep it in mind
+ * (e.g. we could pass striping unit instead of using fs_ptr->blksize). 
+ */
+void ADIOI_BGL_GPFS_Calc_file_domains(ADIO_Offset *st_offsets,
+                                      ADIO_Offset *end_offsets,
+                                      int          nprocs,
+                                      int          nprocs_for_coll,
+                                      ADIO_Offset *min_st_offset_ptr,
+                                      ADIO_Offset **fd_start_ptr,
+                                      ADIO_Offset **fd_end_ptr,
+                                      ADIO_Offset *fd_size_ptr,
+                                      void        *fs_ptr)
+{
+    ADIO_Offset min_st_offset, max_end_offset, *fd_start, *fd_end, *fd_size;
+    int i, aggr;
+
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5004, 0, NULL);
+#endif
+
+#   if AGG_DEBUG
+    static char myname[] = "ADIOI_BGL_GPFS_Calc_file_domains";
+    DBG_FPRINTF(stderr, "%s(%d): %d aggregator(s)\n", 
+           myname,__LINE__,nprocs_for_coll);
+#   endif
+    __blksize_t blksize = 1048576; /* default to 1M */
+    if(fs_ptr && ((ADIOI_BGL_fs*)fs_ptr)->blksize) /* ignore null ptr or 0 blksize */
+      blksize = ((ADIOI_BGL_fs*)fs_ptr)->blksize;
+#   if AGG_DEBUG
+    DBG_FPRINTF(stderr,"%s(%d): Blocksize=%ld\n",myname,__LINE__,blksize);
+#   endif
+/* find min of start offsets and max of end offsets of all processes */
+    min_st_offset  = st_offsets [0];
+    max_end_offset = end_offsets[0];
+    for (i=1; i<nprocs; i++) {
+        min_st_offset = ADIOI_MIN(min_st_offset, st_offsets[i]);
+        max_end_offset = ADIOI_MAX(max_end_offset, end_offsets[i]);
+    }
+
+    // DBG_FPRINTF(stderr, "_calc_file_domains, min_st_offset, max_ = %qd, %qd\n", min_st_offset, max_end_offset );
+
+    /* determine the "file domain (FD)" of each process, i.e., the portion of
+       the file that will be "owned" by each process */
+
+    ADIO_Offset gpfs_ub       = (max_end_offset +blksize-1) / blksize * blksize - 1;
+    ADIO_Offset gpfs_lb       = min_st_offset / blksize * blksize;
+    ADIO_Offset gpfs_ub_rdoff = (max_end_offset +blksize-1) / blksize * blksize - 1 - max_end_offset;
+    ADIO_Offset gpfs_lb_rdoff = min_st_offset - min_st_offset / blksize * blksize;
+    ADIO_Offset fd_gpfs_range = gpfs_ub - gpfs_lb + 1;
+
+    int         naggs    = nprocs_for_coll;
+
+    /* Tweak the file domains so that no fd is smaller than a threshold.  We
+     * have to strike a balance between efficency and parallelism: somewhere
+     * between 10k processes sending 32-byte requests and one process sending a
+     * 320k request is a (system-dependent) sweet spot 
+     
+    This is from the common code - the new min_fd_size parm that we didn't implement. 
+    (And common code uses a different declaration of fd_size so beware)  */
+     
+
+    /* this is not entirely sufficient on BlueGene: we must be mindful of
+     * imbalance over psets.  the hint processing code has already picked, say,
+     * 8 processors per pset, so if we go increasing fd_size we'll end up with
+     * some psets with 8 processors and some psets with none.  */
+    /*
+    if (fd_size < min_fd_size)
+        fd_size = min_fd_size;
+       */
+    fd_size              = (ADIO_Offset *) ADIOI_Malloc(nprocs_for_coll * sizeof(ADIO_Offset));
+    *fd_start_ptr        = (ADIO_Offset *) ADIOI_Malloc(nprocs_for_coll * sizeof(ADIO_Offset));
+    *fd_end_ptr          = (ADIO_Offset *) ADIOI_Malloc(nprocs_for_coll * sizeof(ADIO_Offset));
+    fd_start             = *fd_start_ptr;
+    fd_end               = *fd_end_ptr;
+
+    ADIO_Offset n_gpfs_blk    = fd_gpfs_range / blksize;
+    ADIO_Offset nb_cn_small   = n_gpfs_blk/naggs;
+    ADIO_Offset naggs_large   = n_gpfs_blk - naggs * (n_gpfs_blk/naggs);
+    ADIO_Offset naggs_small   = naggs - naggs_large;
+
+    /* nb_cn_small * blksize: evenly split file domain among processors:
+     *      equivalent to fd_gpfs_rnage/naggs 
+     * (nb_cn_small+1) * blksize: keeps file domain at least 'blksize' big
+     */
+    for (i=0; i<naggs; i++)
+        if (i < naggs_small) fd_size[i] = nb_cn_small     * blksize;
+                       else fd_size[i] = (nb_cn_small+1) * blksize;
+                       /*potential optimization: if n_gpfs_blk smalller than
+                        * naggs, slip in some zero-sized file
+                        * domains to spread the work across all psets.  */
+
+#   if AGG_DEBUG
+     DBG_FPRINTF(stderr,"%s(%d): "
+                   "gpfs_ub       %llu, "
+                   "gpfs_lb       %llu, "
+                   "gpfs_ub_rdoff %llu, "
+                   "gpfs_lb_rdoff %llu, "
+                   "fd_gpfs_range %llu, "
+                   "n_gpfs_blk    %llu, "
+                   "nb_cn_small   %llu, "
+                   "naggs_large   %llu, "
+                   "naggs_small   %llu, "
+                   "\n",
+                   myname,__LINE__,
+                   gpfs_ub      ,
+                   gpfs_lb      ,
+                   gpfs_ub_rdoff,
+                   gpfs_lb_rdoff,
+                   fd_gpfs_range,
+                   n_gpfs_blk   ,
+                   nb_cn_small  ,
+                   naggs_large  ,
+                   naggs_small
+                   );
+#   endif
+
+    fd_size[0]       -= gpfs_lb_rdoff;
+    fd_size[naggs-1] -= gpfs_ub_rdoff;
+
+    /* compute the file domain for each aggr */
+    ADIO_Offset offset = min_st_offset;
+    for (aggr=0; aggr<naggs; aggr++) {
+        fd_start[aggr] = offset;
+        fd_end  [aggr] = offset + fd_size[aggr] - 1;
+        offset += fd_size[aggr];
+    }
+
+    *fd_size_ptr = fd_size[0];
+    *min_st_offset_ptr = min_st_offset;
+
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5005, 0, NULL);
+#endif
+    ADIOI_Free (fd_size);
+}
+
+/* 
+ * When a process is an IO aggregator, this will return its index in the aggrs list.
+ * Otherwise, this will return -1 
+ */
+int ADIOI_BGL_Aggrs_index( ADIO_File fd, int myrank )
+{
+    int i;
+    for (i=0; i<fd->hints->cb_nodes; i++) 
+       if (fd->hints->ranklist[i] == myrank) return i;
+    return -1;
+}
+
+/* 
+ * ADIOI_BGL_Calc_my_req() overrides ADIOI_Calc_my_req for the default implementation 
+ * is specific for static file domain partitioning.
+ *
+ * ADIOI_Calc_my_req() - calculate what portions of the access requests
+ * of this process are located in the file domains of various processes
+ * (including this one)
+ */
+void ADIOI_BGL_Calc_my_req(ADIO_File fd, ADIO_Offset *offset_list, ADIO_Offset *len_list, 
+                          int contig_access_count, ADIO_Offset 
+                          min_st_offset, ADIO_Offset *fd_start,
+                          ADIO_Offset *fd_end, ADIO_Offset fd_size,
+                          int nprocs,
+                          int *count_my_req_procs_ptr,
+                          int **count_my_req_per_proc_ptr,
+                          ADIOI_Access **my_req_ptr,
+                          int **buf_idx_ptr)
+/* Possibly reconsider if buf_idx's are ok as int's, or should they be aints/offsets? 
+   They are used as memory buffer indices so it seems like the 2G limit is in effect */
+{
+    int *count_my_req_per_proc, count_my_req_procs, *buf_idx;
+    int i, l, proc;
+    ADIO_Offset fd_len, rem_len, curr_idx, off;
+    ADIOI_Access *my_req;
+
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5024, 0, NULL);
+#endif
+
+    *count_my_req_per_proc_ptr = (int *) ADIOI_Calloc(nprocs,sizeof(int)); 
+    count_my_req_per_proc = *count_my_req_per_proc_ptr;
+/* count_my_req_per_proc[i] gives the no. of contig. requests of this
+   process in process i's file domain. calloc initializes to zero.
+   I'm allocating memory of size nprocs, so that I can do an 
+   MPI_Alltoall later on.*/
+
+    buf_idx = (int *) ADIOI_Malloc(nprocs*sizeof(int));
+/* buf_idx is relevant only if buftype_is_contig.
+   buf_idx[i] gives the index into user_buf where data received
+   from proc. i should be placed. This allows receives to be done
+   without extra buffer. This can't be done if buftype is not contig. */
+   
+    /* initialize buf_idx to -1 */
+    for (i=0; i < nprocs; i++) buf_idx[i] = -1;
+
+    /* one pass just to calculate how much space to allocate for my_req;
+     * contig_access_count was calculated way back in ADIOI_Calc_my_off_len()
+     */
+    for (i=0; i < contig_access_count; i++) {
+       /* short circuit offset/len processing if len == 0 
+        *      (zero-byte  read/write */
+       if (len_list[i] == 0) 
+               continue;
+       off = offset_list[i];
+       fd_len = len_list[i];
+       /* note: we set fd_len to be the total size of the access.  then
+        * ADIOI_Calc_aggregator() will modify the value to return the 
+        * amount that was available from the file domain that holds the
+        * first part of the access.
+        */
+       proc = ADIOI_BGL_Calc_aggregator(fd, off, min_st_offset, &fd_len, fd_size, 
+                                    fd_start, fd_end);
+       count_my_req_per_proc[proc]++;
+
+       /* figure out how much data is remaining in the access (i.e. wasn't 
+        * part of the file domain that had the starting byte); we'll take 
+        * care of this data (if there is any) in the while loop below.
+        */
+       rem_len = len_list[i] - fd_len;
+
+       while (rem_len > 0) {
+           off += fd_len; /* point to first remaining byte */
+           fd_len = rem_len; /* save remaining size, pass to calc */
+           proc = ADIOI_BGL_Calc_aggregator(fd, off, min_st_offset, &fd_len, 
+                                        fd_size, fd_start, fd_end);
+
+           count_my_req_per_proc[proc]++;
+           rem_len -= fd_len; /* reduce remaining length by amount from fd */
+       }
+    }
+
+/* now allocate space for my_req, offset, and len */
+
+    *my_req_ptr = (ADIOI_Access *)
+       ADIOI_Malloc(nprocs*sizeof(ADIOI_Access)); 
+    my_req = *my_req_ptr;
+
+    count_my_req_procs = 0;
+    for (i=0; i < nprocs; i++) {
+       if (count_my_req_per_proc[i]) {
+           my_req[i].offsets = (ADIO_Offset *)
+               ADIOI_Malloc(count_my_req_per_proc[i] * sizeof(ADIO_Offset));
+           my_req[i].lens = (int *)
+               ADIOI_Malloc(count_my_req_per_proc[i] * sizeof(int));
+           count_my_req_procs++;
+       }           
+       my_req[i].count = 0;  /* will be incremented where needed
+                                     later */
+    }
+
+/* now fill in my_req */
+    curr_idx = 0;
+    for (i=0; i<contig_access_count; i++) { 
+       /* short circuit offset/len processing if len == 0 
+        *      (zero-byte  read/write */
+       if (len_list[i] == 0)
+               continue;
+       off = offset_list[i];
+       fd_len = len_list[i];
+       proc = ADIOI_BGL_Calc_aggregator(fd, off, min_st_offset, &fd_len, fd_size, 
+                                    fd_start, fd_end);
+
+       /* for each separate contiguous access from this process */
+       if (buf_idx[proc] == -1)
+  {
+    ADIOI_Assert(curr_idx == (int) curr_idx);
+    buf_idx[proc] = (int) curr_idx;
+  }
+
+       l = my_req[proc].count;
+       curr_idx += fd_len;
+
+       rem_len = len_list[i] - fd_len;
+
+       /* store the proc, offset, and len information in an array
+         * of structures, my_req. Each structure contains the 
+         * offsets and lengths located in that process's FD, 
+        * and the associated count. 
+        */
+       my_req[proc].offsets[l] = off;
+  ADIOI_Assert(fd_len == (int) fd_len);
+       my_req[proc].lens[l] = (int) fd_len;
+       my_req[proc].count++;
+
+       while (rem_len > 0) {
+           off += fd_len;
+           fd_len = rem_len;
+           proc = ADIOI_BGL_Calc_aggregator(fd, off, min_st_offset, &fd_len, 
+                                        fd_size, fd_start, fd_end);
+
+           if (buf_idx[proc] == -1) 
+      {
+        ADIOI_Assert(curr_idx == (int) curr_idx);
+        buf_idx[proc] = (int) curr_idx;
+      }
+
+           l = my_req[proc].count;
+           curr_idx += fd_len;
+           rem_len -= fd_len;
+
+           my_req[proc].offsets[l] = off;
+      ADIOI_Assert(fd_len == (int) fd_len);
+           my_req[proc].lens[l] = (int) fd_len;
+           my_req[proc].count++;
+       }
+    }
+
+#ifdef AGG_DEBUG
+    for (i=0; i<nprocs; i++) {
+       if (count_my_req_per_proc[i] > 0) {
+           DBG_FPRINTF(stderr, "data needed from %d (count = %d):\n", i, 
+                   my_req[i].count);
+           for (l=0; l < my_req[i].count; l++) {
+               DBG_FPRINTF(stderr, "   off[%d] = %lld, len[%d] = %d\n", l,
+                       my_req[i].offsets[l], l, my_req[i].lens[l]);
+           }
+       }
+       DBG_FPRINTF(stderr, "buf_idx[%d] = 0x%x\n", i, buf_idx[i]);
+    }
+#endif
+
+    *count_my_req_procs_ptr = count_my_req_procs;
+    *buf_idx_ptr = buf_idx;
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5025, 0, NULL);
+#endif
+}
+
+/*
+ * ADIOI_Calc_others_req (copied to bgl and switched to all to all for performance)
+ *
+ * param[in]  count_my_req_procs        Number of processes whose file domain my
+ *                                        request touches.
+ * param[in]  count_my_req_per_proc     count_my_req_per_proc[i] gives the no. of 
+ *                                        contig. requests of this process in 
+ *                                        process i's file domain.
+ * param[in]  my_req                    A structure defining my request
+ * param[in]  nprocs                    Number of nodes in the block
+ * param[in]  myrank                    Rank of this node
+ * param[out] count_others_req_proc_ptr Number of processes whose requests lie in
+ *                                        my process's file domain (including my 
+ *                                        process itself)
+ * param[out] others_req_ptr            Array of other process' requests that lie
+ *                                        in my process's file domain
+ */
+void ADIOI_BGL_Calc_others_req(ADIO_File fd, int count_my_req_procs, 
+                               int *count_my_req_per_proc,
+                               ADIOI_Access *my_req, 
+                               int nprocs, int myrank,
+                               int *count_others_req_procs_ptr,
+                               ADIOI_Access **others_req_ptr)  
+{
+/* determine what requests of other processes lie in this process's
+   file domain */
+
+/* count_others_req_procs = number of processes whose requests lie in
+   this process's file domain (including this process itself) 
+   count_others_req_per_proc[i] indicates how many separate contiguous
+   requests of proc. i lie in this process's file domain. */
+
+    int *count_others_req_per_proc, count_others_req_procs;
+    int i;
+    ADIOI_Access *others_req;
+    
+    /* Parameters for MPI_Alltoallv */
+    int *scounts, *sdispls, *rcounts, *rdispls;
+
+    /* Parameters for MPI_Alltoallv.  These are the buffers, which
+     * are later computed to be the lowest address of all buffers
+     * to be sent/received for offsets and lengths.  Initialize to
+     * the highest possible address which is the current minimum.
+     */
+    void *sendBufForOffsets=(void*)0xFFFFFFFF, 
+        *sendBufForLens   =(void*)0xFFFFFFFF, 
+        *recvBufForOffsets=(void*)0xFFFFFFFF, 
+        *recvBufForLens   =(void*)0xFFFFFFFF; 
+
+/* first find out how much to send/recv and from/to whom */
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5026, 0, NULL);
+#endif
+    /* Send 1 int to each process.  count_my_req_per_proc[i] is the number of 
+     * requests that my process will do to the file domain owned by process[i].
+     * Receive 1 int from each process.  count_others_req_per_proc[i] is the number of
+     * requests that process[i] will do to the file domain owned by my process.
+     */
+    count_others_req_per_proc = (int *) ADIOI_Malloc(nprocs*sizeof(int));
+/*     cora2a1=timebase(); */
+    MPI_Alltoall(count_my_req_per_proc, 1, MPI_INT,
+                count_others_req_per_proc, 1, MPI_INT, fd->comm);
+/*     total_cora2a+=timebase()-cora2a1; */
+
+    /* Allocate storage for an array of other nodes' accesses of our
+     * node's file domain.  Also allocate storage for the alltoallv
+     * parameters.
+     */
+    *others_req_ptr = (ADIOI_Access *)
+       ADIOI_Malloc(nprocs*sizeof(ADIOI_Access)); 
+    others_req = *others_req_ptr;
+
+    scounts = ADIOI_Malloc(nprocs*sizeof(int));
+    sdispls = ADIOI_Malloc(nprocs*sizeof(int));
+    rcounts = ADIOI_Malloc(nprocs*sizeof(int));
+    rdispls = ADIOI_Malloc(nprocs*sizeof(int));
+
+    /* If process[i] has any requests in my file domain,
+     *   initialize an ADIOI_Access structure that will describe each request
+     *   from process[i].  The offsets, lengths, and buffer pointers still need
+     *   to be obtained to complete the setting of this structure.
+     */
+    count_others_req_procs = 0;
+    for (i=0; i<nprocs; i++) {
+       if (count_others_req_per_proc[i]) {
+           others_req[i].count = count_others_req_per_proc[i];
+
+           others_req[i].offsets = (ADIO_Offset *)
+               ADIOI_Malloc(count_others_req_per_proc[i]*sizeof(ADIO_Offset));
+           others_req[i].lens = (int *)
+               ADIOI_Malloc(count_others_req_per_proc[i]*sizeof(int)); 
+
+           if ( (MPIR_Upint)others_req[i].offsets < (MPIR_Upint)recvBufForOffsets )
+               recvBufForOffsets = others_req[i].offsets;
+           if ( (MPIR_Upint)others_req[i].lens < (MPIR_Upint)recvBufForLens )
+               recvBufForLens = others_req[i].lens;
+
+           others_req[i].mem_ptrs = (MPI_Aint *)
+               ADIOI_Malloc(count_others_req_per_proc[i]*sizeof(MPI_Aint)); 
+
+           count_others_req_procs++;
+       }
+       else 
+       {
+           others_req[i].count = 0;
+           others_req[i].offsets = NULL;
+           others_req[i].lens    = NULL;
+       }
+    }
+    /* If no recv buffer was allocated in the loop above, make it NULL */
+    if ( recvBufForOffsets == (void*)0xFFFFFFFF) recvBufForOffsets = NULL;
+    if ( recvBufForLens    == (void*)0xFFFFFFFF) recvBufForLens    = NULL;
+    
+    /* Now send the calculated offsets and lengths to respective processes */
+
+    /************************/
+    /* Exchange the offsets */
+    /************************/
+
+    /* Determine the lowest sendBufForOffsets/Lens */
+    for (i=0; i<nprocs; i++)
+    {
+       if ( (my_req[i].count) &&
+            ((MPIR_Upint)my_req[i].offsets <= (MPIR_Upint)sendBufForOffsets) )
+         sendBufForOffsets = my_req[i].offsets;
+          
+       if ( (my_req[i].count) &&
+            ((MPIR_Upint)my_req[i].lens <= (MPIR_Upint)sendBufForLens) )
+           sendBufForLens = my_req[i].lens;
+    }
+
+    /* If no send buffer was found in the loop above, make it NULL */
+    if ( sendBufForOffsets == (void*)0xFFFFFFFF) sendBufForOffsets = NULL;
+    if ( sendBufForLens    == (void*)0xFFFFFFFF) sendBufForLens    = NULL;
+
+    /* Calculate the displacements from the sendBufForOffsets/Lens */
+    for (i=0; i<nprocs; i++)
+    {
+       // Send these offsets to process i.
+       scounts[i] = count_my_req_per_proc[i];
+       if ( scounts[i] == 0 )
+           sdispls[i] = 0;
+       else
+         sdispls[i] =  (int)
+                       ( ( (MPIR_Upint)my_req[i].offsets - 
+                          (MPIR_Upint)sendBufForOffsets ) / 
+                         (MPIR_Upint)sizeof(ADIO_Offset) );
+
+       // Receive these offsets from process i.
+       rcounts[i] = count_others_req_per_proc[i];
+       if ( rcounts[i] == 0 )
+           rdispls[i] = 0;
+       else
+           rdispls[i] = (int)
+                        ( ( (MPIR_Upint)others_req[i].offsets - 
+                            (MPIR_Upint)recvBufForOffsets ) / 
+                          (MPIR_Upint)sizeof(ADIO_Offset) );
+    }
+
+    /* Exchange the offsets */
+    MPI_Alltoallv(sendBufForOffsets,
+                 scounts, sdispls, ADIO_OFFSET,
+                 recvBufForOffsets,
+                 rcounts, rdispls, ADIO_OFFSET,
+                 fd->comm);
+
+    /************************/
+    /* Exchange the lengths */
+    /************************/
+
+    for (i=0; i<nprocs; i++)
+    {
+       // Send these lengths to process i.
+       scounts[i] = count_my_req_per_proc[i];
+       if ( scounts[i] == 0 )
+           sdispls[i] = 0;
+       else
+         sdispls[i] = (int)
+                      ( ( (MPIR_Upint)my_req[i].lens - 
+                          (MPIR_Upint)sendBufForLens ) / 
+                        (MPIR_Upint) sizeof(int) );
+       
+       // Receive these offsets from process i.
+       rcounts[i] = count_others_req_per_proc[i];
+       if ( rcounts[i] == 0 )
+           rdispls[i] = 0;
+       else
+           rdispls[i] = (int)
+                        ( ( (MPIR_Upint)others_req[i].lens - 
+                            (MPIR_Upint)recvBufForLens ) / 
+                          (MPIR_Upint) sizeof(int) );
+    }
+
+    /* Exchange the lengths */
+    MPI_Alltoallv(sendBufForLens,
+                 scounts, sdispls, MPI_INT,
+                 recvBufForLens,
+                 rcounts, rdispls, MPI_INT,
+                 fd->comm);
+
+    /* Clean up */
+    ADIOI_Free(count_others_req_per_proc);
+    ADIOI_Free (scounts);
+    ADIOI_Free (sdispls);
+    ADIOI_Free (rcounts);
+    ADIOI_Free (rdispls);
+
+    *count_others_req_procs_ptr = count_others_req_procs;
+#ifdef AGGREGATION_PROFILE
+    MPE_Log_event (5027, 0, NULL);
+#endif
+}
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.h b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_aggrs.h
new file mode 100644 (file)
index 0000000..ffa9ec0
--- /dev/null
@@ -0,0 +1,108 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_aggrs.h
+ * \brief ???
+ */
+
+/* 
+ * File: ad_bgl_aggrs.h
+ * 
+ * Declares functions specific for BG/L - GPFS parallel I/O solution. The implemented optimizations are:
+ *     . Aligned file-domain partitioning, integrated in 7/28/2005
+ * 
+ * In addition, following optimizations are planned:
+ *     . Integrating multiple file-domain partitioning schemes 
+ *       (corresponding to Alok Chouhdary's persistent file domain work).
+ */
+
+#ifndef AD_BGL_AGGRS_H_
+#define AD_BGL_AGGRS_H_
+
+#include "adio.h"
+#include <sys/stat.h>
+
+#if !defined(GPFS_SUPER_MAGIC)
+  #define GPFS_SUPER_MAGIC (0x47504653)
+#endif
+
+#if !defined(PVFS2_SUPER_MAGIC)
+  #define PVFS2_SUPER_MAGIC (0x20030528)
+#endif
+
+    /* File system (BGL) specific information - 
+         hung off of ADIOI_FileD file descriptor (fd->fs_ptr) at open */
+    typedef struct ADIOI_BGL_fs_s {
+      __blksize_t blksize;
+      int         fsync_aggr; /* "fsync aggregation" flags (below) */
+#define ADIOI_BGL_FSYNC_AGGREGATION_DISABLED  0x00
+#define ADIOI_BGL_FSYNC_AGGREGATION_ENABLED   0x01
+#define ADIOI_BGL_FSYNC_AGGREGATOR            0x10 /* This rank is an aggregator */
+    }  ADIOI_BGL_fs;
+
+    /* generate a list of I/O aggregators that utilizes BGL-PSET orginization. */
+    int ADIOI_BGL_gen_agg_ranklist(ADIO_File fd, int n_aggrs_per_pset);
+
+    /* overriding ADIOI_Calc_file_domains() to apply 'aligned file domain partitioning'. */
+    void ADIOI_BGL_GPFS_Calc_file_domains(ADIO_Offset *st_offsets,
+                                         ADIO_Offset *end_offsets,
+                                         int          nprocs,
+                                         int          nprocs_for_coll,
+                                         ADIO_Offset *min_st_offset_ptr,
+                                         ADIO_Offset **fd_start_ptr,
+                                         ADIO_Offset **fd_end_ptr,
+                                         ADIO_Offset *fd_size_ptr,
+                  void        *fs_ptr);
+
+    /* a utilitiy function for debugging */
+    int ADIOI_BGL_Aggrs_index(ADIO_File fd, int myrank );
+
+    /* overriding ADIOI_Calc_aggregator() for the default implementation is specific for 
+       static file domain partitioning */
+    int ADIOI_BGL_Calc_aggregator(ADIO_File fd,
+                                 ADIO_Offset off,
+                                 ADIO_Offset min_off,
+                                 ADIO_Offset *len,
+                                 ADIO_Offset fd_size,
+                                 ADIO_Offset *fd_start,
+                                 ADIO_Offset *fd_end);
+
+    /* overriding ADIOI_Calc_my_req for the default implementation is specific for 
+       static file domain partitioning */
+    void ADIOI_BGL_Calc_my_req ( ADIO_File fd, ADIO_Offset *offset_list, ADIO_Offset *len_list,
+                                int contig_access_count, ADIO_Offset
+                                min_st_offset, ADIO_Offset *fd_start,
+                                ADIO_Offset *fd_end, ADIO_Offset fd_size,
+                                int nprocs,
+                                int *count_my_req_procs_ptr,
+                                int **count_my_req_per_proc_ptr,
+                                ADIOI_Access **my_req_ptr,
+                                int **buf_idx_ptr);
+
+    /*
+     * ADIOI_Calc_others_req
+     *
+     * param[in]  count_my_req_procs        Number of processes whose file domain my
+     *                                        request touches.
+     * param[in]  count_my_req_per_proc     count_my_req_per_proc[i] gives the no. of 
+     *                                        contig. requests of this process in 
+     *                                        process i's file domain.
+     * param[in]  my_req                    A structure defining my request
+     * param[in]  nprocs                    Number of nodes in the block
+     * param[in]  myrank                    Rank of this node
+     * param[out] count_others_req_proc_ptr Number of processes whose requests lie in
+     *                                        my process's file domain (including my 
+     *                                        process itself)
+     * param[out] others_req_ptr            Array of other process' requests that lie
+     *                                        in my process's file domain
+     */
+     void ADIOI_BGL_Calc_others_req(ADIO_File fd, int count_my_req_procs, 
+                                   int *count_my_req_per_proc,
+                                   ADIOI_Access *my_req, 
+                                   int nprocs, int myrank,
+                                   int *count_others_req_procs_ptr,
+                                   ADIOI_Access **others_req_ptr);
+
+
+#endif  /* AD_BGL_AGGRS_H_ */
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_close.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_close.c
new file mode 100644 (file)
index 0000000..8fcf857
--- /dev/null
@@ -0,0 +1,53 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_close.c
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+#include "ad_bgl_aggrs.h"
+
+void ADIOI_BGL_Close(ADIO_File fd, int *error_code)
+{
+  int err, derr=0;
+  static char myname[] = "ADIOI_BGL_CLOSE";
+
+#ifdef PROFILE
+  MPE_Log_event(9, 0, "start close");
+#endif
+
+  err = close(fd->fd_sys);
+  if (fd->fd_direct >= 0)
+  {
+    derr = close(fd->fd_direct);
+  }
+
+#ifdef PROFILE
+  MPE_Log_event(10, 0, "end close");
+#endif
+
+/*  FPRINTF(stderr,"%s(%d):'%s'. Free %#X\n",myname,__LINE__,fd->filename,(int)fd->fs_ptr);*/
+  if (fd->fs_ptr != NULL) {
+         ADIOI_Free(fd->fs_ptr);
+         fd->fs_ptr = NULL;
+  }
+  fd->fd_sys    = -1;
+  fd->fd_direct = -1;
+
+  if (err == -1 || derr == -1)
+  {
+    *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
+                                       myname, __LINE__, MPI_ERR_IO,
+                                       "**io",
+                                       "**io %s", strerror(errno));
+  }
+  else *error_code = MPI_SUCCESS;
+}
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_fcntl.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_fcntl.c
new file mode 100644 (file)
index 0000000..afae2c2
--- /dev/null
@@ -0,0 +1,58 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_fcntl.c
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+#include "adio_extern.h"
+/* #ifdef MPISGI
+#include "mpisgi2.h"
+#endif */
+
+void ADIOI_BGL_Fcntl(ADIO_File fd, int flag, ADIO_Fcntl_t *fcntl_struct,
+                    int *error_code)
+{
+    static char myname[] = "ADIOI_BGL_FCNTL";
+
+    switch(flag) {
+    case ADIO_FCNTL_GET_FSIZE:
+       fcntl_struct->fsize = lseek(fd->fd_sys, 0, SEEK_END);
+       if (fd->fp_sys_posn != -1) 
+            lseek(fd->fd_sys, fd->fp_sys_posn, SEEK_SET);
+       if (fcntl_struct->fsize == -1) {
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_IO, "**io",
+                                              "**io %s", strerror(errno));
+       }
+       else *error_code = MPI_SUCCESS;
+       break;
+
+    case ADIO_FCNTL_SET_DISKSPACE:
+       ADIOI_GEN_Prealloc(fd, fcntl_struct->diskspace, error_code);
+       break;
+
+    case ADIO_FCNTL_SET_ATOMICITY:
+       fd->atomicity = (fcntl_struct->atomicity == 0) ? 0 : 1;
+       *error_code = MPI_SUCCESS;
+       break;
+
+       /* --BEGIN ERROR HANDLING-- */
+    default:
+       *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                          MPIR_ERR_RECOVERABLE,
+                                          myname, __LINE__,
+                                          MPI_ERR_ARG,
+                                          "**flag", "**flag %d", flag);
+       /* --END ERROR HANDLING-- */
+    }
+}
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_flush.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_flush.c
new file mode 100644 (file)
index 0000000..97fd2ca
--- /dev/null
@@ -0,0 +1,90 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_flush.c
+ * \brief Scalable flush based on underlying filesystem and psets
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+#include "ad_bgl_aggrs.h"
+
+void ADIOI_BGL_Flush(ADIO_File fd, int *error_code)
+{
+  int err=0;
+  static char myname[] = "ADIOI_BGL_FLUSH";
+
+
+  if(((ADIOI_BGL_fs*)fd->fs_ptr)->fsync_aggr & ADIOI_BGL_FSYNC_AGGREGATION_ENABLED)
+  {
+    int rank;
+    /* Barrier so we can collectively do fewer fsync's */
+    MPI_Barrier(fd->comm);
+  
+    MPI_Comm_rank(fd->comm, &rank);
+  
+    /* All ranks marked as "fsync aggregators" should fsync. 
+       (We currently only do one fsync on rank 0 but this is general 
+       enough to support >1 aggregator using allreduce to get the
+       results instead of simply bcast'ing the results from rank 0.)*/
+    if(((ADIOI_BGL_fs*)fd->fs_ptr)->fsync_aggr & ADIOI_BGL_FSYNC_AGGREGATOR)
+    {
+      err = fsync(fd->fd_sys);
+      DBG_FPRINTF(stderr,"aggregation:fsync %s, err=%#X, errno=%#X\n",fd->filename, err, errno);
+      /* We want errno, not the return code if it failed */
+      if (err == -1) err = errno;
+      else err = 0;
+    }
+    /* Just pick an errno (using unsigned MPI_MAX) from any failures */
+    MPI_Allreduce( MPI_IN_PLACE, (unsigned*)&err, 1, MPI_UNSIGNED, MPI_MAX, fd->comm);
+    DBGV_FPRINTF(stderr,"aggregation result:fsync %s, errno %#X,\n",fd->filename, err);
+
+    if (err) /* if it's non-zero, it must be an errno */
+    {
+      errno = err;
+      err = -1;
+    }
+  }
+  else /* Non-aggregated fsync */
+  {
+#ifdef USE_DBG_LOGGING
+    int rank;
+#endif
+    err = fsync(fd->fd_sys);
+#ifdef USE_DBG_LOGGING
+    MPI_Comm_rank(fd->comm, &rank);
+
+    if(rank == 0)
+    {
+        DBG_FPRINTF(stderr,"no aggregation:fsync %s, err=%#X, errno=%#X\n",fd->filename, err, errno);
+    }
+    else
+    {
+        DBGV_FPRINTF(stderr,"no aggregation:fsync %s, err=%#X, errno=%#X\n",fd->filename, err, errno);
+    }
+#endif
+  }
+
+  /* --BEGIN ERROR HANDLING-- */
+  if (err == -1)
+  {
+    *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
+                                       myname, __LINE__, MPI_ERR_IO,
+                                       "**io",
+                                       "**io %s", strerror(errno));
+    DBGT_FPRINTF(stderr,"fsync %s, err=%#X, errno=%#X\n",fd->filename, err, errno);
+    return;
+  }
+  /* --END ERROR HANDLING-- */
+
+  *error_code = MPI_SUCCESS;
+}
+
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_getsh.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_getsh.c
new file mode 100644 (file)
index 0000000..2c51b1f
--- /dev/null
@@ -0,0 +1,84 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_getsh.c
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+
+/* returns the current location of the shared_fp in terms of the
+   no. of etypes relative to the current view, and also increments the
+   shared_fp by the number of etypes to be accessed (incr) in the read
+   or write following this function. */
+
+void ADIOI_BGL_Get_shared_fp(ADIO_File fd, int incr, ADIO_Offset *shared_fp, 
+                        int *error_code)
+{
+    ADIO_Offset new_fp;
+    int err;
+    MPI_Comm dupcommself;
+    static char myname[] = "ADIOI_BGL_GET_SHARED_FP";
+
+    if (fd->shared_fp_fd == ADIO_FILE_NULL) {
+       MPI_Comm_dup(MPI_COMM_SELF, &dupcommself);
+       fd->shared_fp_fd = ADIO_Open(MPI_COMM_SELF, 
+                                    dupcommself,
+                                    fd->shared_fp_fname, 
+                                    fd->file_system,
+                                    fd->fns,
+                                    ADIO_CREATE | ADIO_RDWR | ADIO_DELETE_ON_CLOSE, 
+                                    0, 
+                                    MPI_BYTE, 
+                                    MPI_BYTE, 
+                                    MPI_INFO_NULL, 
+                                    ADIO_PERM_NULL, 
+                                    error_code);
+       if (*error_code != MPI_SUCCESS) return;
+       *shared_fp = 0;
+       ADIOI_WRITE_LOCK(fd->shared_fp_fd, 0, SEEK_SET, sizeof(ADIO_Offset));
+       err = read(fd->shared_fp_fd->fd_sys, shared_fp, sizeof(ADIO_Offset));
+        /* if the file is empty, the above read may return error
+           (reading beyond end of file). In that case, shared_fp = 0, 
+           set above, is the correct value. */
+    }
+    else {
+       ADIOI_WRITE_LOCK(fd->shared_fp_fd, 0, SEEK_SET, sizeof(ADIO_Offset));
+
+       err = lseek(fd->shared_fp_fd->fd_sys, 0, SEEK_SET);
+       if (err == 0) {
+           err = read(fd->shared_fp_fd->fd_sys, shared_fp,
+                      sizeof(ADIO_Offset));
+       }
+       if (err == -1) {
+           ADIOI_UNLOCK(fd->shared_fp_fd, 0, SEEK_SET, sizeof(ADIO_Offset));
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_IO, "**io",
+                                              "**io %s", strerror(errno));
+           return;
+       }
+    }
+
+    new_fp = *shared_fp + incr;
+
+    err = lseek(fd->shared_fp_fd->fd_sys, 0, SEEK_SET);
+    if (err == 0) {
+       err = write(fd->shared_fp_fd->fd_sys, &new_fp, sizeof(ADIO_Offset));
+    }
+    ADIOI_UNLOCK(fd->shared_fp_fd, 0, SEEK_SET, sizeof(ADIO_Offset));
+    if (err == -1) {
+       *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
+                                          myname, __LINE__, MPI_ERR_IO,
+                                          "**io",
+                                          "**io %s", strerror(errno));
+    }
+    else *error_code = MPI_SUCCESS;
+}
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_hints.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_hints.c
new file mode 100644 (file)
index 0000000..d106eea
--- /dev/null
@@ -0,0 +1,542 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_hints.c
+ * \brief BlueGene hint processing
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "adio.h"
+#include "adio_extern.h"
+
+#include "ad_bgl.h"
+#include "ad_bgl_pset.h"
+#include "ad_bgl_aggrs.h"
+
+#define   ADIOI_BGL_CB_BUFFER_SIZE_DFLT        "16777216"
+#define          ADIOI_BGL_IND_RD_BUFFER_SIZE_DFLT     "4194304"
+#define   ADIOI_BGL_IND_WR_BUFFER_SIZE_DFLT    "4194304"
+#define   ADIOI_BGL_NAGG_IN_PSET_HINT_NAME     "bgl_nodes_pset"
+/** \page mpiio_vars MPIIO Configuration
+ *  
+ * BlueGene MPIIO configuration and performance tuning. Used by ad_bgl and ad_bglockless ADIO's.
+ *  
+ * \section hint_sec Hints
+ * - bgl_nodes_pset - Specify how many aggregators to use per pset.
+ *   This hint will override the cb_nodes hint based on BlueGene psets.
+ *   - N - Use N nodes per pset as aggregators.
+ *   - Default is based on partition configuration and cb_nodes.
+ *  
+ *   The following default key/value pairs may differ from other platform defaults.
+ *  
+ *     - key = cb_buffer_size     value = 16777216
+ *     - key = romio_cb_read      value = enable
+ *     - key = romio_cb_write     value = enable
+ *     - key = ind_rd_buffer_size value = 4194304
+ *     - key = ind_wr_buffer_size value = 4194304
+ */
+
+/* Compute the aggregator-related parameters that are required in 2-phase collective IO of ADIO. */
+extern int 
+ADIOI_BGL_gen_agg_ranklist(ADIO_File fd, int n_proxy_per_pset);
+
+void ADIOI_BGL_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
+{
+/* if fd->info is null, create a new info object. 
+   Initialize fd->info to default values.
+   Initialize fd->hints to default values.
+   Examine the info object passed by the user. If it contains values that
+   ROMIO understands, override the default. */
+
+    MPI_Info info;
+    char *value;
+    int flag, intval, tmp_val, nprocs=0, nprocs_is_valid = 0;
+    static char myname[] = "ADIOI_BGL_SETINFO";
+
+    int did_anything = 0;
+
+    if (fd->info == MPI_INFO_NULL) MPI_Info_create(&(fd->info));
+    info = fd->info;
+
+    /* Note that fd->hints is allocated at file open time; thus it is
+     * not necessary to allocate it, or check for allocation, here.
+     */
+
+    value = (char *) ADIOI_Malloc((MPI_MAX_INFO_VAL+1)*sizeof(char));
+    AD_BGL_assert ((value != NULL));
+
+    /* initialize info and hints to default values if they haven't been
+     * previously initialized
+     */
+    if (!fd->hints->initialized) {
+
+       did_anything = 1;
+
+       /* buffer size for collective I/O */
+       ADIOI_Info_set(info, "cb_buffer_size", ADIOI_BGL_CB_BUFFER_SIZE_DFLT); 
+       fd->hints->cb_buffer_size = atoi(ADIOI_BGL_CB_BUFFER_SIZE_DFLT);
+
+       /* default is to let romio automatically decide when to use
+        * collective buffering
+        */
+       ADIOI_Info_set(info, "romio_cb_read", "enable"); 
+       fd->hints->cb_read = ADIOI_HINT_ENABLE;
+       ADIOI_Info_set(info, "romio_cb_write", "enable"); 
+       fd->hints->cb_write = ADIOI_HINT_ENABLE;
+
+       if ( fd->hints->cb_config_list != NULL ) ADIOI_Free (fd->hints->cb_config_list);
+       fd->hints->cb_config_list = NULL;
+
+       /* number of processes that perform I/O in collective I/O */
+       MPI_Comm_size(fd->comm, &nprocs);
+       nprocs_is_valid = 1;
+       ADIOI_Snprintf(value, MPI_MAX_INFO_VAL+1, "%d", nprocs);
+       ADIOI_Info_set(info, "cb_nodes", value);
+       fd->hints->cb_nodes = -1;
+
+       /* hint indicating that no indep. I/O will be performed on this file */
+       ADIOI_Info_set(info, "romio_no_indep_rw", "false");
+       fd->hints->no_indep_rw = 0;
+
+       /* bgl is not implementing file realms (ADIOI_IOStridedColl),
+          initialize to disabled it.      */
+       /* hint instructing the use of persistent file realms */
+       ADIOI_Info_set(info, "romio_cb_pfr", "disable");
+       fd->hints->cb_pfr = ADIOI_HINT_DISABLE;
+       
+       /* hint guiding the assignment of persistent file realms */
+       ADIOI_Info_set(info, "romio_cb_fr_types", "aar");
+       fd->hints->cb_fr_type = ADIOI_FR_AAR;
+
+       /* hint to align file realms with a certain byte value */
+       ADIOI_Info_set(info, "romio_cb_fr_alignment", "1");
+       fd->hints->cb_fr_alignment = 1;
+
+       /* hint to set a threshold percentage for a datatype's size/extent at
+        * which data sieving should be done in collective I/O */
+       ADIOI_Info_set(info, "romio_cb_ds_threshold", "0");
+       fd->hints->cb_ds_threshold = 0;
+
+       /* hint to switch between point-to-point or all-to-all for two-phase */
+       ADIOI_Info_set(info, "romio_cb_alltoall", "automatic");
+       fd->hints->cb_alltoall = ADIOI_HINT_AUTO;
+
+        /* deferred_open derived from no_indep_rw and cb_{read,write} */
+       fd->hints->deferred_open = 0;
+
+       /* buffer size for data sieving in independent reads */
+       ADIOI_Info_set(info, "ind_rd_buffer_size", ADIOI_BGL_IND_RD_BUFFER_SIZE_DFLT);
+       fd->hints->ind_rd_buffer_size = atoi(ADIOI_BGL_IND_RD_BUFFER_SIZE_DFLT);
+
+       /* buffer size for data sieving in independent writes */
+       ADIOI_Info_set(info, "ind_wr_buffer_size", ADIOI_BGL_IND_WR_BUFFER_SIZE_DFLT);
+       fd->hints->ind_wr_buffer_size = atoi(ADIOI_BGL_IND_WR_BUFFER_SIZE_DFLT);
+
+  if(fd->file_system == ADIO_UFS)
+  {
+    /* default for ufs/pvfs is to disable data sieving  */
+    ADIOI_Info_set(info, "romio_ds_read", "disable"); 
+    fd->hints->ds_read = ADIOI_HINT_DISABLE;
+    ADIOI_Info_set(info, "romio_ds_write", "disable"); 
+    fd->hints->ds_write = ADIOI_HINT_DISABLE;
+  }
+  else
+  {
+    /* default is to let romio automatically decide when to use data
+     * sieving
+     */
+    ADIOI_Info_set(info, "romio_ds_read", "automatic"); 
+    fd->hints->ds_read = ADIOI_HINT_AUTO;
+    ADIOI_Info_set(info, "romio_ds_write", "automatic"); 
+    fd->hints->ds_write = ADIOI_HINT_AUTO;
+  }
+
+    /* still to do: tune this a bit for a variety of file systems. there's
+        * no good default value so just leave it unset */
+    fd->hints->min_fdomain_size = 0;
+    fd->hints->striping_unit = 0;
+
+    fd->hints->initialized = 1;
+    }
+
+    /* add in user's info if supplied */
+    if (users_info != MPI_INFO_NULL) {
+       ADIOI_Info_get(users_info, "cb_buffer_size", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval=atoi(value)) > 0)) {
+           tmp_val = intval;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != intval) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "cb_buffer_size",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+
+           ADIOI_Info_set(info, "cb_buffer_size", value);
+           fd->hints->cb_buffer_size = intval;
+
+       }
+#if 0
+       /* bgl is not implementing file realms (ADIOI_IOStridedColl) ... */
+       /* aligning file realms to certain sizes (e.g. stripe sizes)
+        * may benefit I/O performance */
+       ADIOI_Info_get(users_info, "romio_cb_fr_alignment", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval=atoi(value)) > 0)) {
+           tmp_val = intval;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != intval) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_fr_alignment",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+
+           ADIOI_Info_set(info, "romio_cb_fr_alignment", value);
+           fd->hints->cb_fr_alignment = intval;
+
+       }
+
+       /* for collective I/O, try to be smarter about when to do data sieving
+        * using a specific threshold for the datatype size/extent
+        * (percentage 0-100%) */
+       ADIOI_Info_get(users_info, "romio_cb_ds_threshold", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval=atoi(value)) > 0)) {
+           tmp_val = intval;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != intval) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_ds_threshold",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+
+           ADIOI_Info_set(info, "romio_cb_ds_threshold", value);
+           fd->hints->cb_ds_threshold = intval;
+
+       }
+       ADIOI_Info_get(users_info, "romio_cb_alltoall", MPI_MAX_INFO_VAL, value,
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_cb_alltoall", value);
+               fd->hints->cb_read = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE")) {
+               ADIOI_Info_set(info, "romio_cb_alltoall", value);
+               fd->hints->cb_read = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") || !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_cb_alltoall", value);
+               fd->hints->cb_read = ADIOI_HINT_AUTO;
+           }
+
+           tmp_val = fd->hints->cb_alltoall;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != fd->hints->cb_alltoall) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_alltoall",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+       }
+#endif
+       /* new hints for enabling/disabling coll. buffering on
+        * reads/writes
+        */
+       ADIOI_Info_get(users_info, "romio_cb_read", MPI_MAX_INFO_VAL, value,
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_cb_read", value);
+               fd->hints->cb_read = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE")) {
+                   /* romio_cb_read overrides no_indep_rw */
+               ADIOI_Info_set(info, "romio_cb_read", value);
+               ADIOI_Info_set(info, "romio_no_indep_rw", "false");
+               fd->hints->cb_read = ADIOI_HINT_DISABLE;
+               fd->hints->no_indep_rw = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") || !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_cb_read", value);
+               fd->hints->cb_read = ADIOI_HINT_AUTO;
+           }
+
+           tmp_val = fd->hints->cb_read;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != fd->hints->cb_read) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_read",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+       }
+       ADIOI_Info_get(users_info, "romio_cb_write", MPI_MAX_INFO_VAL, value,
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_cb_write", value);
+               fd->hints->cb_write = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE"))
+           {
+               /* romio_cb_write overrides no_indep_rw, too */
+               ADIOI_Info_set(info, "romio_cb_write", value);
+               ADIOI_Info_set(info, "romio_no_indep_rw", "false");
+               fd->hints->cb_write = ADIOI_HINT_DISABLE;
+               fd->hints->no_indep_rw = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") ||
+                    !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_cb_write", value);
+               fd->hints->cb_write = ADIOI_HINT_AUTO;
+           }
+       
+           tmp_val = fd->hints->cb_write;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != fd->hints->cb_write) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_write",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+       }
+
+#if 0
+       /* bgl is not implementing file realms (ADIOI_IOStridedColl) ... */
+       /* enable/disable persistent file realms for collective I/O */
+       /* may want to check for no_indep_rdwr hint as well */
+       ADIOI_Info_get(users_info, "romio_cb_pfr", MPI_MAX_INFO_VAL, value,
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_cb_pfr", value);
+               fd->hints->cb_pfr = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE")) {
+               ADIOI_Info_set(info, "romio_cb_pfr", value);
+               fd->hints->cb_pfr = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") || !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_cb_pfr", value);
+               fd->hints->cb_pfr = ADIOI_HINT_AUTO;
+           }
+
+           tmp_val = fd->hints->cb_pfr;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != fd->hints->cb_pfr) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_pfr",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+       }
+
+       /* file realm assignment types ADIOI_FR_AAR(0),
+        ADIOI_FR_FSZ(-1), ADIOI_FR_USR_REALMS(-2), all others specify
+        a regular fr size in bytes. probably not the best way... */
+       ADIOI_Info_get(users_info, "romio_cb_fr_type", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval=atoi(value)) >= -2)) {
+           tmp_val = intval;
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != intval) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_cb_fr_type",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+
+           ADIOI_Info_set(info, "romio_cb_fr_type", value);
+           fd->hints->cb_fr_type = intval;
+
+       }
+#endif
+       /* new hint for specifying no indep. read/write will be performed */
+       ADIOI_Info_get(users_info, "romio_no_indep_rw", MPI_MAX_INFO_VAL, value,
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "true") || !strcmp(value, "TRUE")) {
+                   /* if 'no_indep_rw' set, also hint that we will do
+                    * collective buffering: if we aren't doing independent io,
+                    * then we have to do collective  */
+               ADIOI_Info_set(info, "romio_no_indep_rw", value);
+               ADIOI_Info_set(info, "romio_cb_write", "enable");
+               ADIOI_Info_set(info, "romio_cb_read", "enable");
+               fd->hints->no_indep_rw = 1;
+               fd->hints->cb_read = 1;
+               fd->hints->cb_write = 1;
+               tmp_val = 1;
+           }
+           else if (!strcmp(value, "false") || !strcmp(value, "FALSE")) {
+               ADIOI_Info_set(info, "romio_no_indep_rw", value);
+               fd->hints->no_indep_rw = 0;
+               tmp_val = 0;
+           }
+           else {
+               /* default is above */
+               tmp_val = 0;
+           }
+
+           MPI_Bcast(&tmp_val, 1, MPI_INT, 0, fd->comm);
+           /* --BEGIN ERROR HANDLING-- */
+           if (tmp_val != fd->hints->no_indep_rw) {
+               MPIO_ERR_CREATE_CODE_INFO_NOT_SAME(myname,
+                                                  "romio_no_indep_rw",
+                                                  error_code);
+               return;
+           }
+           /* --END ERROR HANDLING-- */
+       }
+       /* new hints for enabling/disabling data sieving on
+        * reads/writes
+        */
+       ADIOI_Info_get(users_info, "romio_ds_read", MPI_MAX_INFO_VAL, value, 
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_ds_read", value);
+               fd->hints->ds_read = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE")) {
+               ADIOI_Info_set(info, "romio_ds_read", value);
+               fd->hints->ds_read = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") || !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_ds_read", value);
+               fd->hints->ds_read = ADIOI_HINT_AUTO;
+           }
+           /* otherwise ignore */
+       }
+       ADIOI_Info_get(users_info, "romio_ds_write", MPI_MAX_INFO_VAL, value, 
+                    &flag);
+       if (flag) {
+           if (!strcmp(value, "enable") || !strcmp(value, "ENABLE")) {
+               ADIOI_Info_set(info, "romio_ds_write", value);
+               fd->hints->ds_write = ADIOI_HINT_ENABLE;
+           }
+           else if (!strcmp(value, "disable") || !strcmp(value, "DISABLE")) {
+               ADIOI_Info_set(info, "romio_ds_write", value);
+               fd->hints->ds_write = ADIOI_HINT_DISABLE;
+           }
+           else if (!strcmp(value, "automatic") || !strcmp(value, "AUTOMATIC"))
+           {
+               ADIOI_Info_set(info, "romio_ds_write", value);
+               fd->hints->ds_write = ADIOI_HINT_AUTO;
+           }
+           /* otherwise ignore */
+       }
+
+       ADIOI_Info_get(users_info, "ind_wr_buffer_size", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval = atoi(value)) > 0)) {
+           ADIOI_Info_set(info, "ind_wr_buffer_size", value);
+           fd->hints->ind_wr_buffer_size = intval;
+       }
+
+       ADIOI_Info_get(users_info, "ind_rd_buffer_size", MPI_MAX_INFO_VAL, 
+                    value, &flag);
+       if (flag && ((intval = atoi(value)) > 0)) {
+           ADIOI_Info_set(info, "ind_rd_buffer_size", value);
+           fd->hints->ind_rd_buffer_size = intval;
+       }
+
+       memset( value, 0, MPI_MAX_INFO_VAL+1 );
+       ADIOI_Info_get(users_info, "romio_min_fdomain_size", MPI_MAX_INFO_VAL,
+                       value, &flag);
+       if ( flag && ((intval = atoi(value)) > 0) ) {
+               ADIOI_Info_set(info, "romio_min_fdomain_size", value);
+               fd->hints->min_fdomain_size = intval;
+       }
+  /* Now we use striping unit in common code so we should
+     process hints for it. */
+       ADIOI_Info_get(users_info, "striping_unit", MPI_MAX_INFO_VAL,
+                       value, &flag);
+       if ( flag && ((intval = atoi(value)) > 0) ) {
+               ADIOI_Info_set(info, "striping_unit", value);
+               fd->hints->striping_unit = intval;
+       }
+
+       memset( value, 0, MPI_MAX_INFO_VAL+1 );
+        ADIOI_Info_get(users_info, ADIOI_BGL_NAGG_IN_PSET_HINT_NAME, MPI_MAX_INFO_VAL,
+                    value, &flag);
+       if (flag && ((intval = atoi(value)) > 0)) {
+
+           did_anything = 1;
+           ADIOI_Info_set(info, ADIOI_BGL_NAGG_IN_PSET_HINT_NAME, value);
+           fd->hints->cb_nodes = intval;
+       }
+    }
+
+    /* associate CB aggregators to certain CNs in every involved PSET */
+    if (did_anything) {
+       ADIOI_BGL_gen_agg_ranklist(fd, fd->hints->cb_nodes);
+    }
+    /* ignore defered open hints and do not enable it for bluegene: need all
+     * processors in the open path so we can stat-and-broadcast the blocksize
+     */
+    ADIOI_Info_set(info, "romio_no_indep_rw", "false");
+    fd->hints->no_indep_rw = 0;
+    fd->hints->deferred_open = 0;
+
+    /* BobC commented this out, but since hint processing runs on both bgl and
+     * bglockless, we need to keep DS writes enabled on gpfs and disabled on
+     * PVFS */
+    if (ADIO_Feature(fd, ADIO_DATA_SIEVING_WRITES) == 0) {
+    /* disable data sieving for fs that do not
+       support file locking */
+               ADIOI_Info_get(info, "ind_wr_buffer_size", MPI_MAX_INFO_VAL,
+                    value, &flag);
+       if (flag) {
+           /* get rid of this value if it is set */
+           ADIOI_Info_delete(info, "ind_wr_buffer_size");
+       }
+       /* note: leave ind_wr_buffer_size alone; used for other cases
+        * as well. -- Rob Ross, 04/22/2003
+        */
+       ADIOI_Info_set(info, "romio_ds_write", "disable");
+       fd->hints->ds_write = ADIOI_HINT_DISABLE;
+    }
+
+    ADIOI_Free(value);
+
+    *error_code = MPI_SUCCESS;
+}
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_open.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_open.c
new file mode 100644 (file)
index 0000000..f811572
--- /dev/null
@@ -0,0 +1,304 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_open.c
+ * \brief ???
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include "ad_bgl.h"
+#include "ad_bgl_aggrs.h"
+
+#include <sys/statfs.h>
+#include <sys/vfs.h>
+
+/* COPIED FROM ad_fstype.c since it is static in that file
+
+ ADIO_FileSysType_parentdir - determines a string pathname for the
+ parent directory of a given filename.
+
+Input Parameters:
+. filename - pointer to file name character array
+
+Output Parameters:
+. dirnamep - pointer to location in which to store a pointer to a string
+
+ Note that the caller should free the memory located at the pointer returned
+ after the string is no longer needed.
+*/
+
+#ifndef PATH_MAX
+#define PATH_MAX 65535
+#endif
+
+/* In a strict ANSI environment, S_ISLNK may not be defined.  Fix that
+   here.  We assume that S_ISLNK is *always* defined as a macro.  If
+   that is not universally true, then add a test to the romio
+   configure that trys to link a program that references S_ISLNK */
+#if !defined(S_ISLNK) 
+#    if defined(S_IFLNK)
+     /* Check for the link bit */
+#    define S_ISLNK(mode) ((mode) & S_IFLNK)
+#    else
+     /* no way to check if it is a link, so say false */
+#    define S_ISLNK(mode) 0   
+#    endif
+#endif /* !(S_ISLNK) */
+
+/* ADIO_FileSysType_parentdir
+ *
+ * Returns pointer to string in dirnamep; that string is allocated with
+ * strdup and must be free()'d.
+ */
+static void ADIO_FileSysType_parentdir(char *filename, char **dirnamep)
+{
+    int err;
+    char *dir = NULL, *slash;
+    struct stat statbuf;
+    
+    err = lstat(filename, &statbuf);
+
+    if (err || (!S_ISLNK(statbuf.st_mode))) {
+       /* no such file, or file is not a link; these are the "normal"
+        * cases where we can just return the parent directory.
+        */
+       dir = ADIOI_Strdup(filename);
+    }
+    else {
+       /* filename is a symlink.  we've presumably already tried
+        * to stat it and found it to be missing (dangling link),
+        * but this code doesn't care if the target is really there
+        * or not.
+        */
+       int namelen;
+       char *linkbuf;
+
+       linkbuf = ADIOI_Malloc(PATH_MAX+1);
+       namelen = readlink(filename, linkbuf, PATH_MAX+1);
+       if (namelen == -1) {
+           /* something strange has happened between the time that
+            * we determined that this was a link and the time that
+            * we attempted to read it; punt and use the old name.
+            */
+           dir = ADIOI_Strdup(filename);
+       }
+       else {
+           /* successfully read the link */
+           linkbuf[namelen] = '\0'; /* readlink doesn't null terminate */
+           dir = ADIOI_Strdup(linkbuf);
+           ADIOI_Free(linkbuf);
+       }
+    }
+
+    slash = strrchr(dir, '/');
+    if (!slash) ADIOI_Strncpy(dir, ".", 2);
+    else {
+       if (slash == dir) *(dir + 1) = '\0';
+       else *slash = '\0';
+    }
+
+    *dirnamep = dir;
+    return;
+}
+
+static void scaleable_stat(ADIO_File fd)
+{
+    struct stat64 bgl_stat;
+    struct statfs bgl_statfs;
+    int rank, rc;
+    char * dir;
+    long buf[2];
+    MPI_Comm_rank(fd->comm, &rank);
+
+    if (rank == 0) {
+       /* Get the (real) underlying file system block size */
+       rc = stat64(fd->filename, &bgl_stat);
+       if (rc >= 0)
+       {
+           buf[0] = bgl_stat.st_blksize;
+           DBGV_FPRINTF(stderr,"Successful stat '%s'.  Blocksize=%ld\n",
+                   fd->filename,bgl_stat.st_blksize);
+       }
+       else
+       {
+           DBGV_FPRINTF(stderr,"Stat '%s' failed with rc=%d, errno=%d\n",
+                   fd->filename,rc,errno);
+       }
+       /* Get the (real) underlying file system type so we can 
+        * plan our fsync scaling strategy */
+       rc = statfs(fd->filename,&bgl_statfs);
+       if (rc >= 0)
+       {
+           DBGV_FPRINTF(stderr,"Successful statfs '%s'.  Magic number=%#X\n",
+                   fd->filename,bgl_statfs.f_type);
+           buf[1] = bgl_statfs.f_type;
+       }
+       else
+       {
+           DBGV_FPRINTF(stderr,"Statfs '%s' failed with rc=%d, errno=%d\n",
+                   fd->filename,rc,errno);
+           ADIO_FileSysType_parentdir(fd->filename, &dir);
+           rc = statfs(dir,&bgl_statfs);
+           if (rc >= 0)
+           {
+               DBGV_FPRINTF(stderr,"Successful statfs '%s'.  Magic number=%#X\n",dir,bgl_statfs.f_type);
+               buf[1] = bgl_statfs.f_type;
+           }
+           else
+           {
+               /* Hmm.  Guess we'll assume the worst-case, that it's not GPFS
+                * or BGLOCKLESSMPIO_F_TYPE (default PVFS2) below */
+               buf[1] = -1; /* bogus magic number */
+               DBGV_FPRINTF(stderr,"Statfs '%s' failed with rc=%d, errno=%d\n",dir,rc,errno);
+           }
+           free(dir);
+       }
+    }
+    /* now we can broadcast the stat/statfs data to everyone else */
+    MPI_Bcast(buf, 2, MPI_LONG, 0, fd->comm);
+    bgl_stat.st_blksize = buf[0];
+    bgl_statfs.f_type = buf[1];
+
+    /* data from stat64 */
+    /* store the blksize in the file system specific storage */
+    ((ADIOI_BGL_fs*)fd->fs_ptr)->blksize = bgl_stat.st_blksize;
+
+    /* data from statfs */
+    if ((bgl_statfs.f_type == GPFS_SUPER_MAGIC) ||
+           (bgl_statfs.f_type == bglocklessmpio_f_type))
+    {
+       ((ADIOI_BGL_fs*)fd->fs_ptr)->fsync_aggr = 
+           ADIOI_BGL_FSYNC_AGGREGATION_ENABLED;
+
+       /* Only one rank is an "fsync aggregator" because only one 
+        * fsync is needed */
+       if (rank == 0)
+       {
+           ((ADIOI_BGL_fs*)fd->fs_ptr)->fsync_aggr |= 
+               ADIOI_BGL_FSYNC_AGGREGATOR;
+           DBG_FPRINTF(stderr,"fsync aggregator %d\n",rank);
+       }
+       else ; /* aggregation enabled but this rank is not an aggregator*/
+    }
+    else; /* Other filesystems default to no fsync aggregation */
+}
+
+
+void ADIOI_BGL_Open(ADIO_File fd, int *error_code)
+{
+    int perm, old_mask, amode;
+    static char myname[] = "ADIOI_BGL_OPEN";
+
+    /* set internal variables for tuning environment variables */
+    ad_bgl_get_env_vars();             
+
+    if (fd->perm == ADIO_PERM_NULL) {
+       old_mask = umask(022);
+       umask(old_mask);
+       perm = old_mask ^ 0666;
+    }
+    else perm = fd->perm;
+
+    amode = 0;
+    if (fd->access_mode & ADIO_CREATE)
+       amode = amode | O_CREAT;
+    if (fd->access_mode & ADIO_RDONLY)
+       amode = amode | O_RDONLY;
+    if (fd->access_mode & ADIO_WRONLY)
+       amode = amode | O_WRONLY;
+    if (fd->access_mode & ADIO_RDWR)
+       amode = amode | O_RDWR;
+    if (fd->access_mode & ADIO_EXCL)
+       amode = amode | O_EXCL;
+#ifdef ADIOI_MPE_LOGGING
+    MPE_Log_event(ADIOI_MPE_open_a, 0, NULL);
+#endif
+    fd->fd_sys = open(fd->filename, amode, perm);
+#ifdef ADIOI_MPE_LOGGING
+    MPE_Log_event(ADIOI_MPE_open_b, 0, NULL);
+#endif
+  DBG_FPRINTF(stderr,"open('%s',%#X,%#X) rc=%d, errno=%d\n",fd->filename,amode,perm,fd->fd_sys,errno);
+    fd->fd_direct = -1;
+
+    if ((fd->fd_sys != -1) && (fd->access_mode & ADIO_APPEND))
+       fd->fp_ind = fd->fp_sys_posn = lseek(fd->fd_sys, 0, SEEK_END);
+
+    if(fd->fd_sys != -1)
+    {
+        /* Initialize the ad_bgl file system specific information */
+        AD_BGL_assert(fd->fs_ptr == NULL);
+        fd->fs_ptr = (ADIOI_BGL_fs*) ADIOI_Malloc(sizeof(ADIOI_BGL_fs));
+
+        ((ADIOI_BGL_fs*)fd->fs_ptr)->blksize = 1048576; /* default to 1M */
+
+        /* default is no fsync aggregation */
+        ((ADIOI_BGL_fs*)fd->fs_ptr)->fsync_aggr = 
+           ADIOI_BGL_FSYNC_AGGREGATION_DISABLED; 
+
+
+#ifdef ADIOI_MPE_LOGGING
+        MPE_Log_event(ADIOI_MPE_stat_a, 0, NULL);
+#endif
+        scaleable_stat(fd);
+#ifdef ADIOI_MPE_LOGGING
+        MPE_Log_event(ADIOI_MPE_stat_b, 0, NULL);
+#endif
+    }
+
+    if (fd->fd_sys == -1) {
+       if (errno == ENAMETOOLONG)
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_BAD_FILE,
+                                              "**filenamelong",
+                                              "**filenamelong %s %d",
+                                              fd->filename,
+                                              strlen(fd->filename));
+       else if (errno == ENOENT)
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_NO_SUCH_FILE,
+                                              "**filenoexist",
+                                              "**filenoexist %s",
+                                              fd->filename);
+       else if (errno == ENOTDIR || errno == ELOOP)
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE,
+                                              myname, __LINE__,
+                                              MPI_ERR_BAD_FILE,
+                                              "**filenamedir",
+                                              "**filenamedir %s",
+                                              fd->filename);
+       else if (errno == EACCES) {
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_ACCESS,
+                                              "**fileaccess",
+                                              "**fileaccess %s", 
+                                              fd->filename );
+       }
+       else if (errno == EROFS) {
+           /* Read only file or file system and write access requested */
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_READ_ONLY,
+                                              "**ioneedrd", 0 );
+       }
+       else {
+           *error_code = MPIO_Err_create_code(MPI_SUCCESS,
+                                              MPIR_ERR_RECOVERABLE, myname,
+                                              __LINE__, MPI_ERR_IO, "**io",
+                                              "**io %s", strerror(errno));
+       }
+    }
+    else *error_code = MPI_SUCCESS;
+}
+/* 
+ *vim: ts=8 sts=4 sw=4 noexpandtab 
+ */
diff --git a/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_pset.c b/src/libs/ck-libs/ampi/romio/adio/ad_bgl/ad_bgl_pset.c
new file mode 100644 (file)
index 0000000..370b731
--- /dev/null
@@ -0,0 +1,109 @@
+/* ---------------------------------------------------------------- */
+/* (C)Copyright IBM Corp.  2007, 2008                               */
+/* ---------------------------------------------------------------- */
+/**
+ * \file ad_bgl_pset.c
+ * \brief Definition of functions associated to structs ADIOI_BGL_ProcInfo_t and ADIOI_BGL_ConfInfo_t 
+ */
+
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/* 
+ *   Copyright (C) 1997 University of Chicago. 
+ *   See COPYRIGHT notice in top-level directory.
+ */
+
+#include <stdlib.h>
+#include "ad_bgl.h"
+#include "ad_bgl_pset.h"
+#include "mpidimpl.h"
+
+ADIOI_BGL_ProcInfo_t *
+ADIOI_BGL_ProcInfo_new()
+{
+    ADIOI_BGL_ProcInfo_t *p = (ADIOI_BGL_ProcInfo_t *) ADIOI_Malloc (sizeof(ADIOI_BGL_ProcInfo_t));
+    AD_BGL_assert ((p != NULL));
+    return p;
+}
+
+ADIOI_BGL_ProcInfo_t *
+ADIOI_BGL_ProcInfo_new_n( int n )
+{
+    ADIOI_BGL_ProcInfo_t *p = (ADIOI_BGL_ProcInfo_t *) ADIOI_Malloc (n * sizeof(ADIOI_BGL_ProcInfo_t));
+    AD_BGL_assert ((p != NULL));
+    return p;
+}
+
+void
+ADIOI_BGL_ProcInfo_free( ADIOI_BGL_ProcInfo_t *info )
+{
+    if (info != NULL) ADIOI_Free (info);
+}
+
+static
+void 
+ADIOI_BGL_ProcInfo_set(ADIOI_BGL_ProcInfo_t *info, const DCMF_Hardware_t *hw, int r)
+{
+    info->psetNum    = hw->idOfPset;
+    info->xInPset    = hw->xCoord;
+    info->yInPset    = hw->yCoord;
+    info->zInPset    = hw->zCoord;
+    info->cpuid      = hw->tCoord;
+    info->rank       = r;
+    info->rankInPset = hw->rankInPset;
+}
+
+
+ADIOI_BGL_ConfInfo_t *
+ADIOI_BGL_ConfInfo_new ()
+{
+    ADIOI_BGL_ConfInfo_t *p = (ADIOI_BGL_ConfInfo_t *) ADIOI_Malloc (sizeof(ADIOI_BGL_ConfInfo_t));
+    AD_BGL_assert ((p != NULL));
+    return p;
+}
+
+static
+void
+ADIOI_BGL_ConfInfo_set(ADIOI_BGL_ConfInfo_t *info, const DCMF_Hardware_t *hw, int s, int n_aggrs)
+{
+    info->PsetSize        = hw->sizeOfPset;
+    info->numPsets        = (hw->xSize * hw->ySize *
+                                       hw->zSize) / hw->sizeOfPset;
+    info->isVNM           = (hw->tSize != 1);
+    info->cpuidSize       = hw->tSize;
+    info->virtualPsetSize = hw->sizeOfPset * hw->tSize;
+    info->nProcs          = s;
+
+    /* More complicated logic maybe needed for nAggrs specification */
+    info->nAggrs          = n_aggrs;
+    if ( info->nAggrs <=0 || MIN(info->nProcs, info->virtualPsetSize) < info->nAggrs ) 
+        info->nAggrs      = ADIOI_BGL_NAGG_PSET_DFLT;
+    if ( info->nAggrs > info->virtualPsetSize ) info->nAggrs = info->virtualPsetSize;
+
+    info->aggRatio        = 1. * info->nAggrs / info->virtualPsetSize;
+    if (info->aggRatio > 1) info->aggRatio = 1.;
+}
+
+void
+ADIOI_BGL_ConfInfo_free( ADIOI_BGL_ConfInfo_t *info )
+{
+    if (info != NULL) ADIOI_Free (info);
+}
+
+void 
+ADIOI_BGL_persInfo_init(ADIOI_BGL_ConfInfo_t *conf, 
+                       ADIOI_BGL_ProcInfo_t *proc, 
+                       int s, int r, int n_aggrs)
+{
+    DCMF_Hardware_t hw;
+    DCMF_Hardware(&hw);
+
+    ADIOI_BGL_ConfInfo_set (conf, &hw, s, n_aggrs);
+