Commit 099470b3 authored by Shane Snyder's avatar Shane Snyder

Merge remote-tracking branch 'origin/mmap-dev'

Merging mmap feature development branch back into master. Darshan
can now mmap its data structures to temporary log files at runtime to
protect against applications that do not call MPI_Finalize. Feature
can be enabled at configure time using '--enable-mmap-logs'.
parents a6e86829 bb75028f
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#define DARSHAN_BGQ_VER 1 #define DARSHAN_BGQ_VER 1
#define BGQ_COUNTERS \ #define BGQ_COUNTERS \
/* control system jobid*/\ /* control system jobid */\
X(BGQ_CSJOBID) \ X(BGQ_CSJOBID) \
/* number of BGQ compute nodes */\ /* number of BGQ compute nodes */\
X(BGQ_NNODES) \ X(BGQ_NNODES) \
...@@ -60,16 +60,13 @@ enum darshan_bgq_f_indices ...@@ -60,16 +60,13 @@ enum darshan_bgq_f_indices
* which would actually be logged to file by Darshan for the "BGQ" example * which would actually be logged to file by Darshan for the "BGQ" example
* module. This example implementation logs the following data for each * module. This example implementation logs the following data for each
* record: * record:
* - a corresponding Darshan record identifier * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process responsible for the record
* - integer I/O counters (operation counts, I/O sizes, etc.) * - integer I/O counters (operation counts, I/O sizes, etc.)
* - floating point I/O counters (timestamps, cumulative timers, etc.) * - floating point I/O counters (timestamps, cumulative timers, etc.)
*/ */
struct darshan_bgq_record struct darshan_bgq_record
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int alignment;
int64_t counters[BGQ_NUM_INDICES]; int64_t counters[BGQ_NUM_INDICES];
double fcounters[BGQ_F_NUM_INDICES]; double fcounters[BGQ_F_NUM_INDICES];
}; };
......
...@@ -41,15 +41,13 @@ enum darshan_hdf5_f_indices ...@@ -41,15 +41,13 @@ enum darshan_hdf5_f_indices
/* file record structure for HDF5 files. a record is created and stored for /* file record structure for HDF5 files. a record is created and stored for
* every HDF5 file opened by the original application. For the HDF5 module, * every HDF5 file opened by the original application. For the HDF5 module,
* the record includes: * the record includes:
* - a corresponding record identifier (created by hashing the file path) * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process which opened the file (-1 for shared files)
* - integer file I/O statistics (open, read/write counts, etc) * - integer file I/O statistics (open, read/write counts, etc)
* - floating point I/O statistics (timestamps, cumulative timers, etc.) * - floating point I/O statistics (timestamps, cumulative timers, etc.)
*/ */
struct darshan_hdf5_file struct darshan_hdf5_file
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int64_t counters[HDF5_NUM_INDICES]; int64_t counters[HDF5_NUM_INDICES];
double fcounters[HDF5_F_NUM_INDICES]; double fcounters[HDF5_F_NUM_INDICES];
}; };
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#endif #endif
/* update this on file format changes */ /* update this on file format changes */
#define DARSHAN_LOG_VERSION "3.00" #define DARSHAN_LOG_VERSION "3.01"
/* magic number for validating output files and checking byte order */ /* magic number for validating output files and checking byte order */
#define DARSHAN_MAGIC_NR 6567223 #define DARSHAN_MAGIC_NR 6567223
...@@ -44,6 +44,7 @@ enum darshan_comp_type ...@@ -44,6 +44,7 @@ enum darshan_comp_type
{ {
DARSHAN_ZLIB_COMP, DARSHAN_ZLIB_COMP,
DARSHAN_BZIP2_COMP, DARSHAN_BZIP2_COMP,
DARSHAN_NO_COMP,
}; };
typedef uint64_t darshan_record_id; typedef uint64_t darshan_record_id;
...@@ -68,7 +69,7 @@ struct darshan_header ...@@ -68,7 +69,7 @@ struct darshan_header
int64_t magic_nr; int64_t magic_nr;
unsigned char comp_type; unsigned char comp_type;
uint32_t partial_flag; uint32_t partial_flag;
struct darshan_log_map rec_map; struct darshan_log_map name_map;
struct darshan_log_map mod_map[DARSHAN_MAX_MODS]; struct darshan_log_map mod_map[DARSHAN_MAX_MODS];
uint32_t mod_ver[DARSHAN_MAX_MODS]; uint32_t mod_ver[DARSHAN_MAX_MODS];
}; };
...@@ -85,11 +86,18 @@ struct darshan_job ...@@ -85,11 +86,18 @@ struct darshan_job
char metadata[DARSHAN_JOB_METADATA_LEN]; char metadata[DARSHAN_JOB_METADATA_LEN];
}; };
/* minimal record stored for each file/object accessed by Darshan */ /* record to store name->darshan_id mapping for each registered record */
struct darshan_record struct darshan_name_record
{ {
char* name;
darshan_record_id id; darshan_record_id id;
char name[1];
};
/* base record definition that can be used by modules */
struct darshan_base_record
{
darshan_record_id id;
int64_t rank;
}; };
......
...@@ -140,15 +140,13 @@ enum darshan_mpiio_f_indices ...@@ -140,15 +140,13 @@ enum darshan_mpiio_f_indices
/* file record structure for MPI-IO files. a record is created and stored for /* file record structure for MPI-IO files. a record is created and stored for
* every MPI-IO file opened by the original application. For the MPI-IO module, * every MPI-IO file opened by the original application. For the MPI-IO module,
* the record includes: * the record includes:
* - a corresponding record identifier (created by hashing the file path) * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process which opened the file (-1 for shared files)
* - integer file I/O statistics (open, read/write counts, etc) * - integer file I/O statistics (open, read/write counts, etc)
* - floating point I/O statistics (timestamps, cumulative timers, etc.) * - floating point I/O statistics (timestamps, cumulative timers, etc.)
*/ */
struct darshan_mpiio_file struct darshan_mpiio_file
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int64_t counters[MPIIO_NUM_INDICES]; int64_t counters[MPIIO_NUM_INDICES];
double fcounters[MPIIO_F_NUM_INDICES]; double fcounters[MPIIO_F_NUM_INDICES];
}; };
......
...@@ -44,15 +44,13 @@ enum darshan_null_f_indices ...@@ -44,15 +44,13 @@ enum darshan_null_f_indices
* which would actually be logged to file by Darshan for the "NULL" example * which would actually be logged to file by Darshan for the "NULL" example
* module. This example implementation logs the following data for each * module. This example implementation logs the following data for each
* record: * record:
* - a corresponding Darshan record identifier * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process responsible for the record
* - integer I/O counters (operation counts, I/O sizes, etc.) * - integer I/O counters (operation counts, I/O sizes, etc.)
* - floating point I/O counters (timestamps, cumulative timers, etc.) * - floating point I/O counters (timestamps, cumulative timers, etc.)
*/ */
struct darshan_null_record struct darshan_null_record
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int64_t counters[NULL_NUM_INDICES]; int64_t counters[NULL_NUM_INDICES];
double fcounters[NULL_F_NUM_INDICES]; double fcounters[NULL_F_NUM_INDICES];
}; };
......
...@@ -43,15 +43,13 @@ enum darshan_pnetcdf_f_indices ...@@ -43,15 +43,13 @@ enum darshan_pnetcdf_f_indices
/* file record structure for PNETCDF files. a record is created and stored for /* file record structure for PNETCDF files. a record is created and stored for
* every PNETCDF file opened by the original application. For the PNETCDF module, * every PNETCDF file opened by the original application. For the PNETCDF module,
* the record includes: * the record includes:
* - a corresponding record identifier (created by hashing the file path) * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process which opened the file (-1 for shared files)
* - integer file I/O statistics (open, read/write counts, etc) * - integer file I/O statistics (open, read/write counts, etc)
* - floating point I/O statistics (timestamps, cumulative timers, etc.) * - floating point I/O statistics (timestamps, cumulative timers, etc.)
*/ */
struct darshan_pnetcdf_file struct darshan_pnetcdf_file
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int64_t counters[PNETCDF_NUM_INDICES]; int64_t counters[PNETCDF_NUM_INDICES];
double fcounters[PNETCDF_F_NUM_INDICES]; double fcounters[PNETCDF_F_NUM_INDICES];
}; };
......
...@@ -164,15 +164,13 @@ enum darshan_posix_f_indices ...@@ -164,15 +164,13 @@ enum darshan_posix_f_indices
/* file record structure for POSIX files. a record is created and stored for /* file record structure for POSIX files. a record is created and stored for
* every POSIX file opened by the original application. For the POSIX module, * every POSIX file opened by the original application. For the POSIX module,
* the record includes: * the record includes:
* - a corresponding record identifier (created by hashing the file path) * - a darshan_base_record structure, which contains the record id & rank
* - the rank of the process which opened the file (-1 for shared files)
* - integer file I/O statistics (open, read/write counts, etc) * - integer file I/O statistics (open, read/write counts, etc)
* - floating point I/O statistics (timestamps, cumulative timers, etc.) * - floating point I/O statistics (timestamps, cumulative timers, etc.)
*/ */
struct darshan_posix_file struct darshan_posix_file
{ {
darshan_record_id f_id; struct darshan_base_record base_rec;
int64_t rank;
int64_t counters[POSIX_NUM_INDICES]; int64_t counters[POSIX_NUM_INDICES];
double fcounters[POSIX_F_NUM_INDICES]; double fcounters[POSIX_F_NUM_INDICES];
}; };
......
...@@ -17,6 +17,7 @@ CC = @CC@ ...@@ -17,6 +17,7 @@ CC = @CC@
LD = @LD@ LD = @LD@
DISABLE_LDPRELOAD = @DISABLE_LDPRELOAD@ DISABLE_LDPRELOAD = @DISABLE_LDPRELOAD@
ENABLE_MMAP_LOGS = @ENABLE_MMAP_LOGS@
DARSHAN_USE_BGQ = @DARSHAN_USE_BGQ@ DARSHAN_USE_BGQ = @DARSHAN_USE_BGQ@
DARSHAN_LOG_FORMAT = $(srcdir)/../darshan-log-format.h DARSHAN_LOG_FORMAT = $(srcdir)/../darshan-log-format.h
DARSHAN_VERSION = @DARSHAN_VERSION@ DARSHAN_VERSION = @DARSHAN_VERSION@
...@@ -157,6 +158,9 @@ endif ...@@ -157,6 +158,9 @@ endif
install -m 644 $(srcdir)/share/ld-opts/darshan-posix-ld-opts $(datarootdir)/ld-opts/darshan-posix-ld-opts install -m 644 $(srcdir)/share/ld-opts/darshan-posix-ld-opts $(datarootdir)/ld-opts/darshan-posix-ld-opts
install -m 644 $(srcdir)/share/ld-opts/darshan-hdf5-ld-opts $(datarootdir)/ld-opts/darshan-hdf5-ld-opts install -m 644 $(srcdir)/share/ld-opts/darshan-hdf5-ld-opts $(datarootdir)/ld-opts/darshan-hdf5-ld-opts
install -m 644 $(srcdir)/share/ld-opts/darshan-pnetcdf-ld-opts $(datarootdir)/ld-opts/darshan-pnetcdf-ld-opts install -m 644 $(srcdir)/share/ld-opts/darshan-pnetcdf-ld-opts $(datarootdir)/ld-opts/darshan-pnetcdf-ld-opts
ifdef ENABLE_MMAP_LOGS
install -m 755 share/darshan-mmap-epilog.sh $(datarootdir)/darshan-mmap-epilog.sh
endif
install -d $(libdir)/pkgconfig install -d $(libdir)/pkgconfig
install -m 644 lib/pkgconfig/darshan-runtime.pc $(libdir)/pkgconfig/darshan-runtime.pc install -m 644 lib/pkgconfig/darshan-runtime.pc $(libdir)/pkgconfig/darshan-runtime.pc
...@@ -164,5 +168,5 @@ clean:: ...@@ -164,5 +168,5 @@ clean::
rm -f *.o *.a lib/*.o lib/*.po lib/*.a lib/*.so rm -f *.o *.a lib/*.o lib/*.po lib/*.a lib/*.so
distclean:: clean distclean:: clean
rm -f darshan-runtime-config.h darshan-gen-cxx.pl darshan-gen-fortran.pl darshan-gen-cc.pl darshan-mk-log-dirs.pl darshan-config darshan-base-ld-opts aclocal.m4 autom4te.cache/* config.status config.log Makefile rm -f darshan-runtime-config.h darshan-gen-cxx.pl darshan-gen-fortran.pl darshan-gen-cc.pl darshan-mk-log-dirs.pl darshan-config lib/pkgconfig/darshan-runtime.pc share/craype-1.x/darshan-module share/craype-2.x/darshan-module share/darshan-mmap-epilog.sh share/ld-opts/darshan-base-ld-opts share/mpi-profile/darshan-bg-cc.conf share/mpi-profile/darshan-bg-cxx.conf share/mpi-profile/darshan-bg-f.conf share/mpi-profile/darshan-cc.conf share/mpi-profile/darshan-cxx.conf share/mpi-profile/darshan-f.conf aclocal.m4 autom4te.cache/* config.status config.log Makefile
rm -rf autom4te.cache rm -rf autom4te.cache
...@@ -624,6 +624,7 @@ LIBOBJS ...@@ -624,6 +624,7 @@ LIBOBJS
DARSHAN_USE_BGQ DARSHAN_USE_BGQ
MPICH_LIB_OLD MPICH_LIB_OLD
DARSHAN_VERSION DARSHAN_VERSION
ENABLE_MMAP_LOGS
DISABLE_LDPRELOAD DISABLE_LDPRELOAD
__DARSHAN_LOG_PATH __DARSHAN_LOG_PATH
darshan_share_path darshan_share_path
...@@ -684,15 +685,16 @@ ac_subst_files='' ...@@ -684,15 +685,16 @@ ac_subst_files=''
ac_user_opts=' ac_user_opts='
enable_option_checking enable_option_checking
with_zlib with_zlib
enable_cuserid
enable_ld_preload enable_ld_preload
enable_cuserid
enable_group_readable_logs enable_group_readable_logs
enable_bgq_mod
enable_mmap_logs
with_mem_align with_mem_align
with_log_path_by_env with_log_path_by_env
with_log_hints with_log_hints
with_log_path with_log_path
with_jobid_env with_jobid_env
enable_bgq_mod
with_mod_mem with_mod_mem
' '
ac_precious_vars='build_alias ac_precious_vars='build_alias
...@@ -1313,10 +1315,12 @@ Optional Features: ...@@ -1313,10 +1315,12 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options --disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-cuserid Disables attempted use of cuserid() at run time
--disable-ld-preload Disables support for LD_PRELOAD library --disable-ld-preload Disables support for LD_PRELOAD library
--enable-group-readable-logs Set log files to be group readable --disable-cuserid Disables attempted use of cuserid() at run time
--enable-group-readable-logs
Set log files to be group readable
--disable-bgq-mod Disables compilation and use of BG/Q module (for BG/Q systems) --disable-bgq-mod Disables compilation and use of BG/Q module (for BG/Q systems)
--enable-mmmap-logs Enables ability to mmap I/O data to log file
Optional Packages: Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
...@@ -1325,12 +1329,15 @@ Optional Packages: ...@@ -1325,12 +1329,15 @@ Optional Packages:
/usr/local or /usr if not found in /usr/local /usr/local or /usr if not found in /usr/local
--without-zlib to disable zlib usage completely --without-zlib to disable zlib usage completely
--with-mem-align=<num> Memory alignment in bytes --with-mem-align=<num> Memory alignment in bytes
--with-log-path-by-env=<env var list> Comma separated list of environment variables to check for log path location before --with-log-path path --with-log-path-by-env=<env var list>
--with-log-hints=<hint1=x;hint2=y> Semicolon-separated list of MPI-IO hints for log file write Comma separated list of environment variables to check for
log path location before --with-log-path path
--with-log-hints=<hint1=x;hint2=y>
Semicolon-separated list of MPI-IO hints for log file write
--with-log-path=<path> Location to store log files at run time --with-log-path=<path> Location to store log files at run time
--with-jobid-env=<name> Name of environment variable that stores the jobid --with-jobid-env=<name> Name of environment variable that stores the jobid
(specify "NONE" if no appropriate environment variable is available: (specify "NONE" if no appropriate environment variable
Darshan will use rank 0's pid instead) is available: Darshan will use rank 0's pid instead)
--with-mod-mem=<num> Maximum amount of memory (in MiB) for each Darshan module --with-mod-mem=<num> Maximum amount of memory (in MiB) for each Darshan module
Some influential environment variables: Some influential environment variables:
...@@ -3528,31 +3535,54 @@ fi ...@@ -3528,31 +3535,54 @@ fi
# Check whether --enable-ld-preload was given.
if test "${enable_ld_preload+set}" = set; then :
enableval=$enable_ld_preload; if test "x$enableval" = "xno" ; then
DISABLE_LDPRELOAD="1"
fi
fi
# Check whether --enable-cuserid was given. # Check whether --enable-cuserid was given.
if test "${enable_cuserid+set}" = set; then : if test "${enable_cuserid+set}" = set; then :
enableval=$enable_cuserid; if test "x$enableval" = "xno" ; then enableval=$enable_cuserid; if test "x$enableval" = "xno" ; then
$as_echo "#define DARSHAN_DISABLE_CUSERID 1" >>confdefs.h $as_echo "#define __DARSHAN_DISABLE_CUSERID 1" >>confdefs.h
fi fi
fi fi
# Check whether --enable-ld-preload was given. # Check whether --enable-group-readable-logs was given.
if test "${enable_ld_preload+set}" = set; then : if test "${enable_group_readable_logs+set}" = set; then :
enableval=$enable_ld_preload; if test "x$enableval" = "xno" ; then enableval=$enable_group_readable_logs; if test "x$enableval" = "xyes" ; then
DISABLE_LDPRELOAD="1"
$as_echo "#define __DARSHAN_GROUP_READABLE_LOGS 1" >>confdefs.h
fi fi
fi fi
# Check whether --enable-group-readable-logs was given. # Check whether --enable-bgq_mod was given.
if test "${enable_group_readable_logs+set}" = set; then : if test "${enable_bgq_mod+set}" = set; then :
enableval=$enable_group_readable_logs; if test "x$enableval" = "xyes" ; then enableval=$enable_bgq_mod;
else
enable_bgq_mod=check
fi
$as_echo "#define __DARSHAN_GROUP_READABLE_LOGS 1" >>confdefs.h
# Check whether --enable-mmap-logs was given.
if test "${enable_mmap_logs+set}" = set; then :
enableval=$enable_mmap_logs; if test "x$enableval" = "xyes" ; then
$as_echo "#define __DARSHAN_ENABLE_MMAP_LOGS 1" >>confdefs.h
ENABLE_MMAP_LOGS=1
ac_config_files="$ac_config_files share/darshan-mmap-epilog.sh"
fi fi
...@@ -3648,6 +3678,54 @@ _ACEOF ...@@ -3648,6 +3678,54 @@ _ACEOF
fi fi
# Check whether --with-mod-mem was given.
if test "${with_mod_mem+set}" = set; then :
withval=$with_mod_mem; if test x$withval = xyes; then
as_fn_error $? "--with-mod-mem must be given a number" "$LINENO" 5
else
cat >>confdefs.h <<_ACEOF
#define __DARSHAN_MOD_MEM_MAX ${withval}
_ACEOF
fi
fi
if test x$enable_bgq_mod != xno; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BG/Q environment" >&5
$as_echo_n "checking for BG/Q environment... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __bgq__
#error __bgq__ not set
#endif
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
DARSHAN_USE_BGQ=1
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if test "x$enable_bgq_mod" = xyes; then :
as_fn_error $? "BG/Q module enabled in non-BG/Q environment" "$LINENO" 5
fi
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
if test x$GOT_ALIGNMENT != x1; then if test x$GOT_ALIGNMENT != x1; then
as_fn_error $? "must provide --with-mem-align=<num> argument to configure." "$LINENO" 5 as_fn_error $? "must provide --with-mem-align=<num> argument to configure." "$LINENO" 5
fi fi
...@@ -4243,63 +4321,6 @@ else ...@@ -4243,63 +4321,6 @@ else
MPICH_LIB_OLD=0 MPICH_LIB_OLD=0
fi fi
# check to see whether the bgq instrumentation module should be built
# Check whether --enable-bgq_mod was given.
if test "${enable_bgq_mod+set}" = set; then :
enableval=$enable_bgq_mod;
else
enable_bgq_mod=check
fi
if test x$enable_bgq_mod != xno; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BG/Q environment" >&5
$as_echo_n "checking for BG/Q environment... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __bgq__
#error __bgq__ not set
#endif
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
DARSHAN_USE_BGQ=1
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if test "x$enable_bgq_mod" = xyes; then :
as_fn_error $? "BG/Q module enabled in non-BG/Q environment" "$LINENO" 5
fi
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
# Check whether --with-mod-mem was given.
if test "${with_mod_mem+set}" = set; then :
withval=$with_mod_mem; if test x$withval = xyes; then
as_fn_error $? "--with-mod-mem must be given a number" "$LINENO" 5
else
cat >>confdefs.h <<_ACEOF
#define __DARSHAN_MOD_MEM_MAX ${withval}
_ACEOF
fi
fi
DARSHAN_VERSION="3.0.1" DARSHAN_VERSION="3.0.1"
...@@ -4309,6 +4330,7 @@ DARSHAN_VERSION="3.0.1" ...@@ -4309,6 +4330,7 @@ DARSHAN_VERSION="3.0.1"
ac_config_files="$ac_config_files Makefile darshan-mk-log-dirs.pl darshan-gen-cc.pl darshan-gen-cxx.pl darshan-gen-fortran.pl darshan-config share/craype-1.x/darshan-module share/craype-2.x/darshan-module lib/pkgconfig/darshan-runtime.pc share/mpi-profile/darshan-cc.conf share/mpi-profile/darshan-cxx.conf share/mpi-profile/darshan-f.conf share/mpi-profile/darshan-bg-cc.conf share/mpi-profile/darshan-bg-cxx.conf share/mpi-profile/darshan-bg-f.conf share/ld-opts/darshan-base-ld-opts" ac_config_files="$ac_config_files Makefile darshan-mk-log-dirs.pl darshan-gen-cc.pl darshan-gen-cxx.pl darshan-gen-fortran.pl darshan-config share/craype-1.x/darshan-module share/craype-2.x/darshan-module lib/pkgconfig/darshan-runtime.pc share/mpi-profile/darshan-cc.conf share/mpi-profile/darshan-cxx.conf share/mpi-profile/darshan-f.conf share/mpi-profile/darshan-bg-cc.conf share/mpi-profile/darshan-bg-cxx.conf share/mpi-profile/darshan-bg-f.conf share/ld-opts/darshan-base-ld-opts"
cat >confcache <<\_ACEOF cat >confcache <<\_ACEOF
...@@ -5003,6 +5025,7 @@ for ac_config_target in $ac_config_targets ...@@ -5003,6 +5025,7 @@ for ac_config_target in $ac_config_targets
do do
case $ac_config_target in case $ac_config_target in
"darshan-runtime-config.h") CONFIG_HEADERS="$CONFIG_HEADERS darshan-runtime-config.h" ;; "darshan-runtime-config.h") CONFIG_HEADERS="$CONFIG_HEADERS darshan-runtime-config.h" ;;
"share/darshan-mmap-epilog.sh") CONFIG_FILES="$CONFIG_FILES share/darshan-mmap-epilog.sh" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"darshan-mk-log-dirs.pl") CONFIG_FILES="$CONFIG_FILES darshan-mk-log-dirs.pl" ;; "darshan-mk-log-dirs.pl") CONFIG_FILES="$CONFIG_FILES darshan-mk-log-dirs.pl" ;;
"darshan-gen-cc.pl") CONFIG_FILES="$CONFIG_FILES darshan-gen-cc.pl" ;; "darshan-gen-cc.pl") CONFIG_FILES="$CONFIG_FILES darshan-gen-cc.pl" ;;
......
...@@ -24,27 +24,44 @@ AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)], ...@@ -24,27 +24,44 @@ AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)],
dnl runtime libraries require zlib dnl runtime libraries require zlib
CHECK_ZLIB CHECK_ZLIB
AC_ARG_ENABLE(cuserid, AC_ARG_ENABLE(ld-preload,
[ --disable-cuserid Disables attempted use of cuserid() at run time], [ --disable-ld-preload Disables support for LD_PRELOAD library],
[if test "x$enableval" = "xno" ; then [if test "x$enableval" = "xno" ; then
AC_DEFINE(DARSHAN_DISABLE_CUSERID, 1, Define if cuserid() should be disabled) DISABLE_LDPRELOAD="1"
fi] fi]
,) ,)
AC_ARG_ENABLE(ld-preload, AC_ARG_ENABLE(cuserid,
[ --disable-ld-preload Disables support for LD_PRELOAD library], [ --disable-cuserid Disables attempted use of cuserid() at run time],
[if test "x$enableval" = "xno" ; then [if test "x$enableval" = "xno" ; then
DISABLE_LDPRELOAD="1" AC_DEFINE(__DARSHAN_DISABLE_CUSERID, 1, Define if cuserid() should be disabled)
fi] fi]
,) ,)
AC_ARG_ENABLE(group-readable-logs, AC_ARG_ENABLE(group-readable-logs,
[ --enable-group-readable-logs Set log files to be group readable], [ --enable-group-readable-logs
Set log files to be group readable],
[if test "x$enableval" = "xyes" ; then [if test "x$enableval" = "xyes" ; then
AC_DEFINE(__DARSHAN_GROUP_READABLE_LOGS, 1, Define if Darshan should set log files to be group readable) AC_DEFINE(__DARSHAN_GROUP_READABLE_LOGS, 1, Define if Darshan should set log files to be group readable)
fi] fi]
,) ,)
AC_ARG_ENABLE(
[bgq_mod],
[ --disable-bgq-mod Disables compilation and use of BG/Q module (for BG/Q systems)],
[],
[enable_bgq_mod=check]
)
AC_ARG_ENABLE(mmap-logs,
[ --enable-mmmap-logs Enables ability to mmap I/O data to log file],
[if test "x$enableval" = "xyes" ; then
AC_DEFINE(__DARSHAN_ENABLE_MMAP_LOGS, 1, Define if Darshan should mmap data structures to log file)
ENABLE_MMAP_LOGS=1
AC_CONFIG_FILES(share/darshan-mmap-epilog.sh)
fi]
,)
AC_ARG_WITH(mem-align, AC_ARG_WITH(mem-align,
[ --with-mem-align=<num> Memory alignment in bytes], [ --with-mem-align=<num> Memory alignment in bytes],
if test x$withval = xyes; then if test x$withval = xyes; then
...@@ -56,7 +73,9 @@ AC_ARG_WITH(mem-align, ...@@ -56,7 +73,9 @@ AC_ARG_WITH(mem-align,
) )
AC_ARG_WITH(log-path-by-env, AC_ARG_WITH(log-path-by-env,
[ --with-log-path-by-env=<env var list> Comma separated list of environment variables to check for log path location before --with-log-path path], [ --with-log-path-by-env=<env var list>
Comma separated list of environment variables to check for
log path location before --with-log-path path],
if test x$withval = xyes; then if test x$withval = xyes; then
AC_MSG_ERROR(--with-log-path-by-env must be given at least one variable name) AC_MSG_ERROR(--with-log-path-by-env must be given at least one variable name)
else else
...@@ -67,7 +86,8 @@ AC_ARG_WITH(log-path-by-env, ...@@ -67,7 +86,8 @@ AC_ARG_WITH(log-path-by-env,
) )
AC_ARG_WITH(log-hints, AC_ARG_WITH(log-hints,
[ --with-log-hints=<hint1=x;hint2=y> Semicolon-separated list of MPI-IO hints for log file write], [ --with-log-hints=<hint1=x;hint2=y>
Semicolon-separated list of MPI-IO hints for log file write],
if test x$withval = xyes; then if test x$withval = xyes; then
AC_MSG_ERROR(--with-log-hints must be given an argument) AC_MSG_ERROR(--with-log-hints must be given an argument)
else else
...@@ -90,8 +110,8 @@ AC_ARG_WITH(log-path, ...@@ -90,8 +110,8 @@ AC_ARG_WITH(log-path,
AC_ARG_WITH(jobid-env, AC_ARG_WITH(jobid-env,
[ --with-jobid-env=<name> Name of environment variable that stores the jobid [ --with-jobid-env=<name> Name of environment variable that stores the jobid
(specify "NONE" if no appropriate environment variable is available: (specify "NONE" if no appropriate environment variable
Darshan will use rank 0's pid instead)], is available: Darshan will use rank 0's pid instead)],
if test x$withval = xyes; then if test x$withval = xyes; then
AC_MSG_ERROR(--with-jobid-env must be given a name) AC_MSG_ERROR(--with-jobid-env must be given a name)
else else
...@@ -101,6 +121,30 @@ AC_ARG_WITH(jobid-env, ...@@ -101,6 +121,30 @@ AC_ARG_WITH(jobid-env,
fi fi
) )
AC_ARG_WITH(mod-mem,
[ --with-mod-mem=<num> Maximum amount of memory (in MiB) for each Darshan module],
if test x$withval = xyes; then
AC_MSG_ERROR(--with-mod-mem must be given a number)
else
AC_DEFINE_UNQUOTED(__DARSHAN_MOD_MEM_MAX, ${withval}, Maximum memory (in MiB) for each Darshan module)
fi
)
if test x$enable_bgq_mod != xno; then
AC_MSG_CHECKING(for BG/Q environment)
AC_TRY_COMPILE([
#ifndef __bgq__
#error __bgq__ not set
#endif
], [],
AC_MSG_RESULT(yes)
DARSHAN_USE_BGQ=1,