Commit 59379bfb authored by Shane Snyder's avatar Shane Snyder
Browse files

Merge branch 'autoperf-mod-update' into 'master'

Autoperf MPI module (APMPI) in Darshan

See merge request !80
parents f1b80c21 3b8be5c5
[submodule "modules/autoperf"]
path = modules/autoperf
url = git@xgitlab.cels.anl.gov:AutoPerf/autoperf.git
branch = master
......@@ -120,6 +120,12 @@ struct darshan_base_record
/* DXT */
#include "darshan-dxt-log-format.h"
#include "darshan-mdhim-log-format.h"
#ifdef DARSHAN_USE_APXC
#include "darshan-apxc-log-format.h"
#endif
#ifdef DARSHAN_USE_APMPI
#include "darshan-apmpi-log-format.h"
#endif
/* X-macro for keeping module ordering consistent */
/* NOTE: first val used to define module enum values,
......@@ -131,21 +137,40 @@ struct darshan_base_record
* component -- NULL can be passed if there are no
* logutil definitions)
*/
#define DARSHAN_MODULE_IDS \
X(DARSHAN_NULL_MOD, "NULL", DARSHAN_NULL_VER, NULL) \
X(DARSHAN_POSIX_MOD, "POSIX", DARSHAN_POSIX_VER, &posix_logutils) \
X(DARSHAN_MPIIO_MOD, "MPI-IO", DARSHAN_MPIIO_VER, &mpiio_logutils) \
X(DARSHAN_H5F_MOD, "H5F", DARSHAN_H5F_VER, &hdf5_file_logutils) \
X(DARSHAN_H5D_MOD, "H5D", DARSHAN_H5D_VER, &hdf5_dataset_logutils) \
X(DARSHAN_PNETCDF_MOD, "PNETCDF", DARSHAN_PNETCDF_VER, &pnetcdf_logutils) \
X(DARSHAN_BGQ_MOD, "BG/Q", DARSHAN_BGQ_VER, &bgq_logutils) \
X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, &lustre_logutils) \
X(DARSHAN_STDIO_MOD, "STDIO", DARSHAN_STDIO_VER, &stdio_logutils) \
/* DXT */ \
X(DXT_POSIX_MOD, "DXT_POSIX", DXT_POSIX_VER, &dxt_posix_logutils) \
X(DXT_MPIIO_MOD, "DXT_MPIIO", DXT_MPIIO_VER, &dxt_mpiio_logutils) \
X(DARSHAN_MDHIM_MOD, "MDHIM", DARSHAN_MDHIM_VER, &mdhim_logutils)
/* NOTE: if APXC support is not enabled, we still want to hold it's spot
* in the module id space
*/
#ifdef DARSHAN_USE_APXC
#define __APXC_VER APXC_VER
#define __apxc_logutils &apxc_logutils
#else
#define __APXC_VER 0
#define __apxc_logutils NULL
#endif
#ifdef DARSHAN_USE_APMPI
#define __APMPI_VER APMPI_VER
#define __apmpi_logutils &apmpi_logutils
#else
#define __APMPI_VER 0
#define __apmpi_logutils NULL
#endif
#define DARSHAN_MODULE_IDS \
X(DARSHAN_NULL_MOD, "NULL", DARSHAN_NULL_VER, NULL) \
X(DARSHAN_POSIX_MOD, "POSIX", DARSHAN_POSIX_VER, &posix_logutils) \
X(DARSHAN_MPIIO_MOD, "MPI-IO", DARSHAN_MPIIO_VER, &mpiio_logutils) \
X(DARSHAN_H5F_MOD, "H5F", DARSHAN_H5F_VER, &hdf5_file_logutils) \
X(DARSHAN_H5D_MOD, "H5D", DARSHAN_H5D_VER, &hdf5_dataset_logutils) \
X(DARSHAN_PNETCDF_MOD, "PNETCDF", DARSHAN_PNETCDF_VER, &pnetcdf_logutils) \
X(DARSHAN_BGQ_MOD, "BG/Q", DARSHAN_BGQ_VER, &bgq_logutils) \
X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, &lustre_logutils) \
X(DARSHAN_STDIO_MOD, "STDIO", DARSHAN_STDIO_VER, &stdio_logutils) \
X(DXT_POSIX_MOD, "DXT_POSIX", DXT_POSIX_VER, &dxt_posix_logutils) \
X(DXT_MPIIO_MOD, "DXT_MPIIO", DXT_MPIIO_VER, &dxt_mpiio_logutils) \
X(DARSHAN_MDHIM_MOD, "MDHIM", DARSHAN_MDHIM_VER, &mdhim_logutils) \
X(DARSHAN_APXC_MOD, "APXC", __APXC_VER, __apxc_logutils) \
X(DARSHAN_APMPI_MOD, "APMPI", __APMPI_VER, __apmpi_logutils)
/* unique identifiers to distinguish between available darshan modules */
/* NOTES: - valid ids range from [0...DARSHAN_MAX_MODS-1]
......
......@@ -44,6 +44,8 @@ BUILD_HDF5_MODULE = @BUILD_HDF5_MODULE@
BUILD_BGQ_MODULE = @BUILD_BGQ_MODULE@
BUILD_LUSTRE_MODULE = @BUILD_LUSTRE_MODULE@
BUILD_MDHIM_MODULE = @BUILD_MDHIM_MODULE@
BUILD_APMPI_MODULE = @BUILD_APMPI_MODULE@
BUILD_APXC_MODULE = @BUILD_APXC_MODULE@
DARSHAN_STATIC_MOD_OBJS =
DARSHAN_DYNAMIC_MOD_OBJS =
......@@ -104,6 +106,13 @@ CFLAGS += -DDARSHAN_MDHIM
CFLAGS_SHARED += -DDARSHAN_MDHIM
endif
ifdef BUILD_APXC_MODULE
include $(srcdir)/../modules/autoperf/apxc/Makefile.darshan
endif
ifdef BUILD_APMPI_MODULE
include $(srcdir)/../modules/autoperf/apmpi/Makefile.darshan
endif
lib::
@mkdir -p $@
......@@ -250,6 +259,9 @@ endif
ifdef BUILD_MDHIM_MODULE
install -m 644 $(srcdir)/share/ld-opts/darshan-mdhim-ld-opts $(DESTDIR)$(datarootdir)/ld-opts/darshan-mdhim-ld-opts
endif
ifdef BUILD_APMPI_MODULE
install -m 644 $(srcdir)/../modules/autoperf/apmpi/share/ld-opts/autoperf-apmpi-ld-opts $(DESTDIR)$(datarootdir)/ld-opts/autoperf-apmpi-ld-opts
endif
ifdef ENABLE_MMAP_LOGS
install -m 755 share/darshan-mmap-epilog.sh $(DESTDIR)$(datarootdir)/darshan-mmap-epilog.sh
endif
......
......@@ -621,6 +621,7 @@ ac_includes_default="\
ac_subst_vars='LTLIBOBJS
LIBOBJS
with_papi
DARSHAN_MDHIM_LD_OPTS
BUILD_MDHIM_MODULE
DARSHAN_LUSTRE_LD_FLAGS
......@@ -630,6 +631,9 @@ DARSHAN_HDF5_LD_FLAGS
DARSHAN_HDF5_ADD_DFLUSH_LD_OPTS
DARSHAN_HDF5_LD_OPTS
BUILD_HDF5_MODULE
DARSHAN_APMPI_LD_OPTS
BUILD_APMPI_MODULE
BUILD_APXC_MODULE
DARSHAN_PNETCDF_LD_OPTS
BUILD_PNETCDF_MODULE
DARSHAN_MPIIO_LD_OPTS
......@@ -685,6 +689,7 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
......@@ -725,6 +730,9 @@ enable_posix_mod
enable_stdio_mod
enable_dxt_mod
enable_mpiio_mod
enable_apmpi_mod
enable_apmpi_coll_sync
enable_apxc_mod
enable_hdf5_mod
enable_pnetcdf_mod
enable_bgq_mod
......@@ -779,6 +787,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
......@@ -1031,6 +1040,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
......@@ -1168,7 +1186,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
......@@ -1321,6 +1339,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
......@@ -1361,6 +1380,13 @@ Optional Features:
--disable-dxt-mod Disables compilation and use of DXT module
--disable-mpiio-mod Disables compilation and use of MPI-IO module
(requires MPI)
--enable-apmpi-mod Enables compilation and use of AUTOPERF MPI module
(requires MPI)
--enable-apmpi-coll-sync
Enable sync time calculation for MPI collectives
--enable-apxc-mod Enables compilation and use of AUTOPERF APXC module
(requires MPI)
--enable-hdf5-mod Enables compilation and use of HDF5 module
--disable-pnetcdf-mod Disables compilation and use of PnetCDF module
(requires MPI)
......@@ -1762,6 +1788,35 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
# ac_fn_c_check_header_preproc LINENO HEADER VAR
# ----------------------------------------------
# Tests whether HEADER is present, setting the cache variable VAR accordingly.
ac_fn_c_check_header_preproc ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <$2>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
eval "$3=yes"
else
eval "$3=no"
fi
rm -f conftest.err conftest.i conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_preproc
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
......@@ -3980,6 +4035,7 @@ fi
fi
# 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
......@@ -4167,6 +4223,81 @@ if test "x$enable_mpiio_mod" = "xno" || test "x$ENABLE_MPI" = "x"; then :
DARSHAN_MPIIO_LD_OPTS=
fi
# AUTOPERF MPI module
BUILD_APMPI_MODULE=
DARSHAN_APMPI_LD_OPTS=
# Check whether --enable-apmpi-mod was given.
if test "${enable_apmpi_mod+set}" = set; then :
enableval=$enable_apmpi_mod;
fi
if test "x$enable_apmpi_mod" = "xyes"; then :
if test "x$ENABLE_MPI" = "x"; then :
as_fn_error $? "Autoperf MPI module requires MPI support" "$LINENO" 5
fi
abssrcdir=$(readlink -f ${srcdir})
as_ac_Header=`$as_echo "ac_cv_header_${abssrcdir}/../modules/autoperf/apmpi/darshan-apmpi-log-format.h" | $as_tr_sh`
ac_fn_c_check_header_preproc "$LINENO" "${abssrcdir}/../modules/autoperf/apmpi/darshan-apmpi-log-format.h" "$as_ac_Header"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
else
as_fn_error $? "The Autoperf MPI module is not present" "$LINENO" 5
fi
# this last part tells it to only check for presence
BUILD_APMPI_MODULE=1
DARSHAN_APMPI_LD_OPTS="@${darshan_share_path}/ld-opts/autoperf-apmpi-ld-opts"
fi
# Check whether --enable-apmpi-coll-sync was given.
if test "${enable_apmpi_coll_sync+set}" = set; then :
enableval=$enable_apmpi_coll_sync; if test "x$enableval" = "xyes" ; then
$as_echo "#define __APMPI_COLL_SYNC 1" >>confdefs.h
fi
fi
#AUTOPERF APXC module
BUILD_APXC_MODULE=
# Check whether --enable-apxc-mod was given.
if test "${enable_apxc_mod+set}" = set; then :
enableval=$enable_apxc_mod;
fi
if test "x$enable_apxc_mod" = "xyes"; then :
if test "x$ENABLE_MPI" = "x"; then :
as_fn_error $? "Autoperf XC module requires MPI support" "$LINENO" 5
fi
abssrcdir=$(readlink -f ${srcdir})
ac_fn_c_check_header_mongrel "$LINENO" "papi.h" "ac_cv_header_papi_h" "$ac_includes_default"
if test "x$ac_cv_header_papi_h" = xyes; then :
with_papi=-lpapi
else
as_fn_error $? "Cannot find papi header required for Autoperf XC module" "$LINENO" 5
fi
as_ac_Header=`$as_echo "ac_cv_header_${abssrcdir}/../modules/autoperf/apxc/darshan-apxc-log-format.h" | $as_tr_sh`
ac_fn_c_check_header_preproc "$LINENO" "${abssrcdir}/../modules/autoperf/apxc/darshan-apxc-log-format.h" "$as_ac_Header"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
else
as_fn_error $? "The Autoperf XC git submodule is not present" "$LINENO" 5
fi
# this last part tells it to only check for presence
BUILD_APXC_MODULE=1
fi
# HDF5 module (disabled by default)
BUILD_HDF5_MODULE=
DARSHAN_HDF5_LD_OPTS=
......@@ -4853,11 +4984,11 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
# At some point MPI-IO converted most API functions to be const correct. We
# need to test for this to determine how to define MPI-IO wrappers in
# At some point MPI converted most API functions to be const correct. We
# need to test for this to determine how to define MPI wrappers in
# Darshan. First we try compiling without cost qualifiers.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI-IO prototypes without const qualifier" >&5
$as_echo_n "checking for MPI-IO prototypes without const qualifier... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI prototypes without const qualifier" >&5
$as_echo_n "checking for MPI prototypes without const qualifier... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
......@@ -4877,14 +5008,17 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
if test "x$BUILD_APMPI_MODULE" = "x1"; then :
as_fn_error $? "APMPI module requires MPI version 3+" "$LINENO" 5
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
# unable to compile without const qualifiers. Let's try again with
# const qualifiers.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI-IO prototypes with const qualifier" >&5
$as_echo_n "checking for MPI-IO prototypes with const qualifier... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI prototypes with const qualifier" >&5
$as_echo_n "checking for MPI prototypes with const qualifier... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
......@@ -4905,7 +5039,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_MPIIO_CONST 1" >>confdefs.h
$as_echo "#define HAVE_MPI_CONST 1" >>confdefs.h
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
......@@ -5098,6 +5232,10 @@ DARSHAN_VERSION="3.2.1"
......@@ -6476,3 +6614,17 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: MDHIM module support: yes" >&5
$as_echo "$as_me: MDHIM module support: yes" >&6;}
fi
if test "x$BUILD_APXC_MODULE" = "x"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: AUTOPERF APXC module support: no" >&5
$as_echo "$as_me: AUTOPERF APXC module support: no" >&6;}
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: AUTOPERF APXC module support: yes" >&5
$as_echo "$as_me: AUTOPERF APXC module support: yes" >&6;}
fi
if test "x$BUILD_APMPI_MODULE" = "x"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: AUTOPERF MPI module support: no" >&5
$as_echo "$as_me: AUTOPERF MPI module support: no" >&6;}
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: AUTOPERF MPI module support: yes" >&5
$as_echo "$as_me: AUTOPERF MPI module support: yes" >&6;}
fi
......@@ -97,6 +97,7 @@ AC_ARG_ENABLE(group-readable-logs,
fi]
,)
AC_ARG_ENABLE(mmap-logs,
[ --enable-mmap-logs Enables ability to mmap I/O data to log file],
[if test "x$enableval" = "xyes" ; then
......@@ -220,6 +221,53 @@ AS_IF([test "x$enable_mpiio_mod" = "xno" || test "x$ENABLE_MPI" = "x"],
BUILD_MPIIO_MODULE=
DARSHAN_MPIIO_LD_OPTS=)
# AUTOPERF MPI module
BUILD_APMPI_MODULE=
DARSHAN_APMPI_LD_OPTS=
AC_ARG_ENABLE(apmpi-mod,
AS_HELP_STRING([--enable-apmpi-mod], [Enables compilation and use of AUTOPERF MPI module (requires MPI)]))
AS_IF([test "x$enable_apmpi_mod" = "xyes"], [
AS_IF([test "x$ENABLE_MPI" = "x"],
[AC_MSG_ERROR(Autoperf MPI module requires MPI support)]
)
abssrcdir=$(readlink -f ${srcdir})
AC_CHECK_HEADER([${abssrcdir}/../modules/autoperf/apmpi/darshan-apmpi-log-format.h],
[],
[AC_MSG_ERROR([The Autoperf MPI module is not present])],
[-]) # this last part tells it to only check for presence
BUILD_APMPI_MODULE=1
DARSHAN_APMPI_LD_OPTS="@${darshan_share_path}/ld-opts/autoperf-apmpi-ld-opts"
])
AC_ARG_ENABLE(apmpi-coll-sync,
[ --enable-apmpi-coll-sync
Enable sync time calculation for MPI collectives],
[if test "x$enableval" = "xyes" ; then
AC_DEFINE(__APMPI_COLL_SYNC, 1, Define if APMPI should enable sync time calculation for MPI collectives)
fi]
,)
#AUTOPERF APXC module
BUILD_APXC_MODULE=
AC_ARG_ENABLE(apxc-mod,
AS_HELP_STRING([--enable-apxc-mod], [Enables compilation and use of AUTOPERF APXC module (requires MPI)])
)
AS_IF([test "x$enable_apxc_mod" = "xyes"], [
AS_IF([test "x$ENABLE_MPI" = "x"],
[AC_MSG_ERROR(Autoperf XC module requires MPI support)]
)
abssrcdir=$(readlink -f ${srcdir})
AC_CHECK_HEADER([papi.h],
[with_papi=-lpapi],
[AC_MSG_ERROR([Cannot find papi header required for Autoperf XC module])],
[])
AC_CHECK_HEADER([${abssrcdir}/../modules/autoperf/apxc/darshan-apxc-log-format.h],
[],
[AC_MSG_ERROR([The Autoperf XC git submodule is not present])],
[-]) # this last part tells it to only check for presence
BUILD_APXC_MODULE=1
])
# HDF5 module (disabled by default)
BUILD_HDF5_MODULE=
DARSHAN_HDF5_LD_OPTS=
......@@ -408,10 +456,10 @@ AC_TRY_LINK([#include <mpi.h>], [
AC_MSG_RESULT(yes),
AC_MSG_ERROR(Darshan requires a version of MPI with MPI-IO support))
# At some point MPI-IO converted most API functions to be const correct. We
# need to test for this to determine how to define MPI-IO wrappers in
# At some point MPI converted most API functions to be const correct. We
# need to test for this to determine how to define MPI wrappers in
# Darshan. First we try compiling without cost qualifiers.
AC_MSG_CHECKING(for MPI-IO prototypes without const qualifier)
AC_MSG_CHECKING(for MPI prototypes without const qualifier)
AC_TRY_COMPILE(
[
#include <mpi.h>
......@@ -420,12 +468,14 @@ AC_TRY_COMPILE(
{return 0;}
],
[],
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no)
[AC_MSG_RESULT(yes)
AS_IF([test "x$BUILD_APMPI_MODULE" = "x1"],
AC_MSG_ERROR(APMPI module requires MPI version 3+))],
[AC_MSG_RESULT(no)
# unable to compile without const qualifiers. Let's try again with
# const qualifiers.
AC_MSG_CHECKING(for MPI-IO prototypes with const qualifier)
AC_MSG_CHECKING(for MPI prototypes with const qualifier)
AC_TRY_COMPILE(
[
#include <mpi.h>
......@@ -435,10 +485,10 @@ AC_TRY_COMPILE(
],
[],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_MPIIO_CONST, 1, Define if MPI-IO prototypes use const qualifier),
AC_DEFINE(HAVE_MPI_CONST, 1, Define if MPI prototypes use const qualifier),
,
AC_MSG_ERROR(Darshan is unable to find a compatible MPI_File_open prototype)
)
)]
)
# determine if mpicc can create shared libraries that use MPI functions
......@@ -529,6 +579,9 @@ AC_SUBST(BUILD_MPIIO_MODULE)
AC_SUBST(DARSHAN_MPIIO_LD_OPTS)
AC_SUBST(BUILD_PNETCDF_MODULE)
AC_SUBST(DARSHAN_PNETCDF_LD_OPTS)
AC_SUBST(BUILD_APXC_MODULE)
AC_SUBST(BUILD_APMPI_MODULE)
AC_SUBST(DARSHAN_APMPI_LD_OPTS)
AC_SUBST(BUILD_HDF5_MODULE)
AC_SUBST(DARSHAN_HDF5_LD_OPTS)
AC_SUBST(DARSHAN_HDF5_ADD_DFLUSH_LD_OPTS)
......@@ -538,6 +591,7 @@ AC_SUBST(BUILD_LUSTRE_MODULE)
AC_SUBST(DARSHAN_LUSTRE_LD_FLAGS)
AC_SUBST(BUILD_MDHIM_MODULE)
AC_SUBST(DARSHAN_MDHIM_LD_OPTS)
AC_SUBST(with_papi)
AC_OUTPUT(Makefile
darshan-mk-log-dirs.pl
darshan-gen-cc.pl
......@@ -570,3 +624,5 @@ AS_IF([test "x$BUILD_PNETCDF_MODULE" = "x"], [AC_MSG_NOTICE(PnetCDF module suppo
AS_IF([test "x$BUILD_BGQ_MODULE" = "x"], [AC_MSG_NOTICE(BG/Q module support: no)], [AC_MSG_NOTICE(BG/Q module support: yes)])
AS_IF([test "x$BUILD_LUSTRE_MODULE" = "x"], [AC_MSG_NOTICE(Lustre module support: no)], [AC_MSG_NOTICE(Lustre module support: yes)])
AS_IF([test "x$BUILD_MDHIM_MODULE" = "x"], [AC_MSG_NOTICE(MDHIM module support: no)], [AC_MSG_NOTICE(MDHIM module support: yes)])
AS_IF([test "x$BUILD_APXC_MODULE" = "x"], [AC_MSG_NOTICE(AUTOPERF APXC module support: no)], [AC_MSG_NOTICE(AUTOPERF APXC module support: yes)])
AS_IF([test "x$BUILD_APMPI_MODULE" = "x"], [AC_MSG_NOTICE(AUTOPERF MPI module support: no)], [AC_MSG_NOTICE(AUTOPERF MPI module support: yes)])
......@@ -17,22 +17,22 @@ DARSHAN_EXTERN_DECL(PMPI_File_close, int, (MPI_File *fh));
DARSHAN_EXTERN_DECL(PMPI_File_iread_at, int, (MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
DARSHAN_EXTERN_DECL(PMPI_File_iread, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
DARSHAN_EXTERN_DECL(PMPI_File_iread_shared, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_at, int, (MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#else
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_at, int, (MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_iwrite, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#else
DARSHAN_EXTERN_DECL(PMPI_File_iwrite, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_shared, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#else
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_shared, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_open, int, (MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *fh));
#else
DARSHAN_EXTERN_DECL(PMPI_File_open, int, (MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh));
......@@ -46,53 +46,53 @@ DARSHAN_EXTERN_DECL(PMPI_File_read, int, (MPI_File fh, void *buf, int count, MPI
DARSHAN_EXTERN_DECL(PMPI_File_read_ordered_begin, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype));
DARSHAN_EXTERN_DECL(PMPI_File_read_ordered, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
DARSHAN_EXTERN_DECL(PMPI_File_read_shared, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_set_view, int, (MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, const char *datarep, MPI_Info info));
#else
DARSHAN_EXTERN_DECL(PMPI_File_set_view, int, (MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info));
#endif
DARSHAN_EXTERN_DECL(PMPI_File_sync, int, (MPI_File fh));
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_all_begin, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_all_begin, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_all, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_all, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all_begin, int, (MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all_begin, int, (MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all, int, (MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all, int, (MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_at, int, (MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_at, int, (MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered_begin, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered_begin, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#endif
#ifdef HAVE_MPIIO_CONST
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_File_write_shared, int, (MPI_File fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
#else
DARSHAN_EXTERN_DECL(PMPI_File_write_shared, int, (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status));
......@@ -101,32 +101,44 @@ DARSHAN_EXTERN_DECL(PMPI_Finalize, int, ());
DARSHAN_EXTERN_DECL(PMPI_Init, int, (int *argc, char ***argv));
DARSHAN_EXTERN_DECL(PMPI_Init_thread, int, (int *argc, char ***argv, int required, int *provided));
DARSHAN_EXTERN_DECL(PMPI_Wtime, double, ());
#ifdef HAVE_MPI_CONST
DARSHAN_EXTERN_DECL(PMPI_Allreduce, int, (const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm));
#else
DARSHAN_EXTERN_DECL(PMPI_Allreduce, int, (void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm));
#endif
DARSHAN_EXTERN_DECL(PMPI_Bcast, int, (void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm));
DARSHAN_EXTERN_DECL(PMPI_Comm_rank, int, (MPI_Comm comm, int *rank));