Commit ae15d896 authored by Shane Snyder's avatar Shane Snyder

cleanup runtime component code & docs

parent 22bc23f2
......@@ -683,7 +683,6 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
with_zlib_for_mpi
with_zlib
enable_cuserid
enable_ld_preload
......@@ -1321,13 +1320,12 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-zlib=DIR root directory path of zlib installation defaults to
/usr/local or /usr if not found in /usr/local
--without-zlib to disable zlib usage completely
--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-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
--with-log-path=<path> Location to store log files at run time
--with-jobid-env=<name> Name of environment variable that stores the jobid
(specify "NONE" if no appropriate environment variable is available:
......@@ -3050,15 +3048,6 @@ $as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Check whether --with-zlib-for-mpi was given.
if test "${with_zlib_for_mpi+set}" = set; then :
withval=$with_zlib_for_mpi; as_fn_error $? "with-zlib-for-mpi argument is deprecated. Please see Darshan documentation." "$LINENO" 5
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
......
......@@ -21,11 +21,6 @@ AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)],
AC_MSG_ERROR(CC doesn't appear to be a valid MPI compiler. See INSTALL document or try adding CC=mpicc to your configure command line.)
)
AC_ARG_WITH(zlib-for-mpi,,
AC_MSG_ERROR(with-zlib-for-mpi argument is deprecated. Please see Darshan documentation.)
)
dnl runtime libraries require zlib
CHECK_ZLIB
......@@ -72,7 +67,7 @@ AC_ARG_WITH(log-path-by-env,
)
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
AC_MSG_ERROR(--with-log-hints must be given an argument)
else
......
......@@ -207,8 +207,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first
# TODO: changing -ldarshan-mpi-io to -ldarshan OK ?
# -ldarshan in there first
argno=0;
once=0;
compiler_check=0;
......
......@@ -207,7 +207,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first
# -ldarshan in there first
argno=0;
once=0;
compiler_check=0;
......
......@@ -215,7 +215,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first
# -ldarshan in there first
argno=0;
once=0;
compiler_check=0;
......
......@@ -40,40 +40,32 @@ make
make install
----
.Detecting file size and alignment
[NOTE]
====
You can also add --enable-stat-at-open option to cause the Darshan library
to issue an additional stat() system call on each file the first time that
it is opened on each process. This allows Darshan to detect the file
alignment (and subsequent unaligned accesses). It also allows Darshan to
detect the size of files at open time before any I/O is performed.
Unfortunately, this option can cause significant overhead at scale on file
systems such as PVFS or Lustre that must contact every server for a given
file in order to satisfy a stat request. We therefore disable this
feature by default.
====
.Explanation of configure arguments:
* `--with-mem-align` (mandatory): This value is system-dependent and will be
* `--with-mem-align=` (mandatory): This value is system-dependent and will be
used by Darshan to determine if the buffer for a read or write operation is
aligned in memory.
* `--with-log-path` (this, or `--with-log-path-by-env`, is mandatory): This
specifies the parent directory for the directory tree where darshan logs
will be placed
* `--with-jobid-env` (mandatory): this specifies the environment variable that
* `--with-jobid-env=` (mandatory): this specifies the environment variable that
Darshan should check to determine the jobid of a job. Common values are
`PBS_JOBID` or `COBALT_JOBID`. If you are not using a scheduler (or your
scheduler does not advertise the job ID) then you can specify `NONE` here.
Darshan will fall back to using the pid of the rank 0 process if the
specified environment variable is not set.
* `CC=`: specifies the MPI C compiler to use for compilation
* `--with-log-path-by-env`: specifies an environment variable to use to
* `--with-log-path=` (this, or `--with-log-path-by-env`, is mandatory): This
specifies the parent directory for the directory tree where darshan logs
will be placed.
* `--with-log-path-by-env=`: specifies an environment variable to use to
determine the log path at run time.
* `--with-log-hints=`: specifies hints to use when writing the Darshan log
file. See `./configure --help` for details.
* `--with-zlib=`: specifies an alternate location for the zlib development
header and library.
* `CC=`: specifies the MPI C compiler to use for compilation.
* `--disable-cuserid`: disables use of cuserid() at runtime.
* `--disable-ld-preload`: disables building of the Darshan LD_PRELOAD library
* `--disable-bgq-mod`: disables building of the BG/Q module (default checks
and only builds if BG/Q environment detected).
* `--enable-group-readable-logs`: sets darshan log file permissions to allow
group read access.
=== Cross compilation
......@@ -479,9 +471,6 @@ behavior at runtime:
* DARSHAN_LOGHINTS: specifies the MPI-IO hints to use when storing the Darshan output file. The format is a semicolon-delimited list of key=value pairs, for example: hint1=value1;hint2=value2
* DARSHAN_MEMALIGN: specifies a value for system memory alignment
* DARSHAN_JOBID: specifies the name of the environment variable to use for the job identifier, such as PBS_JOBID
* DARSHAN_DISABLE_SHARED_REDUCTION: disables the step in Darshan aggregation
in which files that were accessed by all ranks are collapsed into a single
cumulative file record at rank 0. This option retains more per-process
information at the expense of creating larger log files.
* DARSHAN_DISABLE_SHARED_REDUCTION: disables the step in Darshan aggregation in which files that were accessed by all ranks are collapsed into a single cumulative file record at rank 0. This option retains more per-process information at the expense of creating larger log files. Note that it is up to individual instrumentation module implementations whether this environment variable is actually honored.
* DARSHAN_LOGPATH: specifies the path to write Darshan log files to. Note that this directory needs to be formatted using the darshan-mk-log-dirs script.
* DARSHAN_LOGFILE: specifies the path (directory + Darshan log file name) to write the output Darshan log to. This overrides the default Darshan behavior of automatically generating a log file name and adding to a log file directory formatted using darshan-mk-log-dirs script.
* DARSHAN_LOGFILE: specifies the path (directory + Darshan log file name) to write the output Darshan log to. This overrides the default Darshan behavior of automatically generating a log file name and adding it to a log file directory formatted using darshan-mk-log-dirs script.
......@@ -209,14 +209,14 @@ void darshan_core_initialize(int argc, char **argv)
/* collect information about command line and mounted file systems */
darshan_core->trailing_data = darshan_get_exe_and_mounts(darshan_core);
}
}
/* maybe bootstrap modules with static initializers */
i = 0;
while(mod_static_init_fns[i])
{
(*mod_static_init_fns[i])();
i++;
/* maybe bootstrap modules with static initializers */
i = 0;
while(mod_static_init_fns[i])
{
(*mod_static_init_fns[i])();
i++;
}
}
if(internal_timing_flag)
......@@ -226,8 +226,8 @@ void darshan_core_initialize(int argc, char **argv)
MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
if(my_rank == 0)
{
printf("#darshan:<op>\t<nprocs>\t<time>\n");
printf("darshan:init\t%d\t%f\n", nprocs, init_max);
fprintf(stderr, "#darshan:<op>\t<nprocs>\t<time>\n");
fprintf(stderr, "darshan:init\t%d\t%f\n", nprocs, init_max);
}
}
......@@ -303,7 +303,7 @@ void darshan_core_shutdown()
/* set darshan job id/metadata and constuct log file name on rank 0 */
if(my_rank == 0)
{
/* Use DARSHAN_JOBID_OVERRIDE for the env var or __DARSHAN_JOBID */
/* Use DARSHAN_JOBID_OVERRIDE for the env var for __DARSHAN_JOBID */
envjobid = getenv(DARSHAN_JOBID_OVERRIDE);
if(!envjobid)
{
......@@ -661,18 +661,18 @@ void darshan_core_shutdown()
if(my_rank == 0)
{
printf("#darshan:<op>\t<nprocs>\t<time>\n");
printf("darshan:log_open\t%d\t%f\n", nprocs, open_slowest);
printf("darshan:job_write\t%d\t%f\n", nprocs, job_slowest);
printf("darshan:hash_write\t%d\t%f\n", nprocs, rec_slowest);
printf("darshan:header_write\t%d\t%f\n", nprocs, header_slowest);
fprintf(stderr, "#darshan:<op>\t<nprocs>\t<time>\n");
fprintf(stderr, "darshan:log_open\t%d\t%f\n", nprocs, open_slowest);
fprintf(stderr, "darshan:job_write\t%d\t%f\n", nprocs, job_slowest);
fprintf(stderr, "darshan:hash_write\t%d\t%f\n", nprocs, rec_slowest);
fprintf(stderr, "darshan:header_write\t%d\t%f\n", nprocs, header_slowest);
for(i = 0; i < DARSHAN_MAX_MODS; i++)
{
if(global_mod_use_count[i])
printf("darshan:%s_shutdown\t%d\t%f\n", darshan_module_names[i],
fprintf(stderr, "darshan:%s_shutdown\t%d\t%f\n", darshan_module_names[i],
nprocs, mod_slowest[i]);
}
printf("darshan:core_shutdown\t%d\t%f\n", nprocs, all_slowest);
fprintf(stderr, "darshan:core_shutdown\t%d\t%f\n", nprocs, all_slowest);
}
}
......
......@@ -476,7 +476,10 @@ static void hdf5_get_output_data(
assert(hdf5_runtime);
/* if there are globally shared files, do a shared file reduction */
if(shared_rec_count)
/* NOTE: the shared file reduction is also skipped if the
* DARSHAN_DISABLE_SHARED_REDUCTION environment variable is set.
*/
if(shared_rec_count && !getenv("DARSHAN_DISABLE_SHARED_REDUCTION"))
{
/* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++)
......
......@@ -1322,8 +1322,11 @@ static void mpiio_get_output_data(
&(tmp->file_record->counters[MPIIO_ACCESS1_COUNT]));
}
/* if there are globally shared files, do a shared file reduction */
if(shared_rec_count)
/* if there are globally shared files, do a shared file reduction */
/* NOTE: the shared file reduction is also skipped if the
* DARSHAN_DISABLE_SHARED_REDUCTION environment variable is set.
*/
if(shared_rec_count && !getenv("DARSHAN_DISABLE_SHARED_REDUCTION"))
{
/* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++)
......
......@@ -488,7 +488,10 @@ static void pnetcdf_get_output_data(
assert(pnetcdf_runtime);
/* if there are globally shared files, do a shared file reduction */
if(shared_rec_count)
/* NOTE: the shared file reduction is also skipped if the
* DARSHAN_DISABLE_SHARED_REDUCTION environment variable is set.
*/
if(shared_rec_count && !getenv("DARSHAN_DISABLE_SHARED_REDUCTION"))
{
/* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++)
......
......@@ -2071,7 +2071,10 @@ static void posix_get_output_data(
}
/* if there are globally shared files, do a shared file reduction */
if(shared_rec_count)
/* NOTE: the shared file reduction is also skipped if the
* DARSHAN_DISABLE_SHARED_REDUCTION environment variable is set.
*/
if(shared_rec_count && !getenv("DARSHAN_DISABLE_SHARED_REDUCTION"))
{
/* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment