Commit ae15d896 authored by Shane Snyder's avatar Shane Snyder
Browse files

cleanup runtime component code & docs

parent 22bc23f2
...@@ -683,7 +683,6 @@ SHELL' ...@@ -683,7 +683,6 @@ SHELL'
ac_subst_files='' ac_subst_files=''
ac_user_opts=' ac_user_opts='
enable_option_checking enable_option_checking
with_zlib_for_mpi
with_zlib with_zlib
enable_cuserid enable_cuserid
enable_ld_preload enable_ld_preload
...@@ -1321,13 +1320,12 @@ Optional Features: ...@@ -1321,13 +1320,12 @@ Optional Features:
Optional Packages: Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-zlib=DIR root directory path of zlib installation defaults to --with-zlib=DIR root directory path of zlib installation defaults to
/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> 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-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 is available:
...@@ -3050,15 +3048,6 @@ $as_echo "no" >&6; } ...@@ -3050,15 +3048,6 @@ $as_echo "no" >&6; }
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 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_ext=c
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 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)], ...@@ -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_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 dnl runtime libraries require zlib
CHECK_ZLIB CHECK_ZLIB
...@@ -72,7 +67,7 @@ AC_ARG_WITH(log-path-by-env, ...@@ -72,7 +67,7 @@ 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
......
...@@ -207,8 +207,7 @@ print OUTPUT<<"EOF"; ...@@ -207,8 +207,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool # if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get # if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first # -ldarshan in there first
# TODO: changing -ldarshan-mpi-io to -ldarshan OK ?
argno=0; argno=0;
once=0; once=0;
compiler_check=0; compiler_check=0;
......
...@@ -207,7 +207,7 @@ print OUTPUT<<"EOF"; ...@@ -207,7 +207,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool # if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get # if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first # -ldarshan in there first
argno=0; argno=0;
once=0; once=0;
compiler_check=0; compiler_check=0;
......
...@@ -215,7 +215,7 @@ print OUTPUT<<"EOF"; ...@@ -215,7 +215,7 @@ print OUTPUT<<"EOF";
# if the user is using another PMPI based tool # if the user is using another PMPI based tool
# if allargs includes any libraries, then we need to get # if allargs includes any libraries, then we need to get
# -ldarshan-mpi-io in there first # -ldarshan in there first
argno=0; argno=0;
once=0; once=0;
compiler_check=0; compiler_check=0;
......
...@@ -40,40 +40,32 @@ make ...@@ -40,40 +40,32 @@ make
make install 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: .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 used by Darshan to determine if the buffer for a read or write operation is
aligned in memory. aligned in memory.
* `--with-log-path` (this, or `--with-log-path-by-env`, is mandatory): This * `--with-jobid-env=` (mandatory): this specifies the environment variable that
specifies the parent directory for the directory tree where darshan logs
will be placed
* `--with-jobid-env` (mandatory): this specifies the environment variable that
Darshan should check to determine the jobid of a job. Common values are 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 `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. 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 Darshan will fall back to using the pid of the rank 0 process if the
specified environment variable is not set. specified environment variable is not set.
* `CC=`: specifies the MPI C compiler to use for compilation * `--with-log-path=` (this, or `--with-log-path-by-env`, is mandatory): This
* `--with-log-path-by-env`: specifies an environment variable to use to 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. determine the log path at run time.
* `--with-log-hints=`: specifies hints to use when writing the Darshan log * `--with-log-hints=`: specifies hints to use when writing the Darshan log
file. See `./configure --help` for details. file. See `./configure --help` for details.
* `--with-zlib=`: specifies an alternate location for the zlib development * `--with-zlib=`: specifies an alternate location for the zlib development
header and library. 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 === Cross compilation
...@@ -479,9 +471,6 @@ behavior at runtime: ...@@ -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_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_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_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 * 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.
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_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_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) ...@@ -209,14 +209,14 @@ void darshan_core_initialize(int argc, char **argv)
/* collect information about command line and mounted file systems */ /* collect information about command line and mounted file systems */
darshan_core->trailing_data = darshan_get_exe_and_mounts(darshan_core); darshan_core->trailing_data = darshan_get_exe_and_mounts(darshan_core);
} }
}
/* maybe bootstrap modules with static initializers */ /* maybe bootstrap modules with static initializers */
i = 0; i = 0;
while(mod_static_init_fns[i]) while(mod_static_init_fns[i])
{ {
(*mod_static_init_fns[i])(); (*mod_static_init_fns[i])();
i++; i++;
}
} }
if(internal_timing_flag) if(internal_timing_flag)
...@@ -226,8 +226,8 @@ void darshan_core_initialize(int argc, char **argv) ...@@ -226,8 +226,8 @@ void darshan_core_initialize(int argc, char **argv)
MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
if(my_rank == 0) if(my_rank == 0)
{ {
printf("#darshan:<op>\t<nprocs>\t<time>\n"); fprintf(stderr, "#darshan:<op>\t<nprocs>\t<time>\n");
printf("darshan:init\t%d\t%f\n", nprocs, init_max); fprintf(stderr, "darshan:init\t%d\t%f\n", nprocs, init_max);
} }
} }
...@@ -303,7 +303,7 @@ void darshan_core_shutdown() ...@@ -303,7 +303,7 @@ void darshan_core_shutdown()
/* set darshan job id/metadata and constuct log file name on rank 0 */ /* set darshan job id/metadata and constuct log file name on rank 0 */
if(my_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); envjobid = getenv(DARSHAN_JOBID_OVERRIDE);
if(!envjobid) if(!envjobid)
{ {
...@@ -661,18 +661,18 @@ void darshan_core_shutdown() ...@@ -661,18 +661,18 @@ void darshan_core_shutdown()
if(my_rank == 0) if(my_rank == 0)
{ {
printf("#darshan:<op>\t<nprocs>\t<time>\n"); fprintf(stderr, "#darshan:<op>\t<nprocs>\t<time>\n");
printf("darshan:log_open\t%d\t%f\n", nprocs, open_slowest); fprintf(stderr, "darshan:log_open\t%d\t%f\n", nprocs, open_slowest);
printf("darshan:job_write\t%d\t%f\n", nprocs, job_slowest); fprintf(stderr, "darshan:job_write\t%d\t%f\n", nprocs, job_slowest);
printf("darshan:hash_write\t%d\t%f\n", nprocs, rec_slowest); fprintf(stderr, "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:header_write\t%d\t%f\n", nprocs, header_slowest);
for(i = 0; i < DARSHAN_MAX_MODS; i++) for(i = 0; i < DARSHAN_MAX_MODS; i++)
{ {
if(global_mod_use_count[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]); 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( ...@@ -476,7 +476,10 @@ static void hdf5_get_output_data(
assert(hdf5_runtime); assert(hdf5_runtime);
/* if there are globally shared files, do a shared file reduction */ /* 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 */ /* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++) for(i = 0; i < shared_rec_count; i++)
......
...@@ -1322,8 +1322,11 @@ static void mpiio_get_output_data( ...@@ -1322,8 +1322,11 @@ static void mpiio_get_output_data(
&(tmp->file_record->counters[MPIIO_ACCESS1_COUNT])); &(tmp->file_record->counters[MPIIO_ACCESS1_COUNT]));
} }
/* if there are globally shared files, do a shared file reduction */ /* 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 */ /* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++) for(i = 0; i < shared_rec_count; i++)
......
...@@ -488,7 +488,10 @@ static void pnetcdf_get_output_data( ...@@ -488,7 +488,10 @@ static void pnetcdf_get_output_data(
assert(pnetcdf_runtime); assert(pnetcdf_runtime);
/* if there are globally shared files, do a shared file reduction */ /* 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 */ /* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++) for(i = 0; i < shared_rec_count; i++)
......
...@@ -2071,7 +2071,10 @@ static void posix_get_output_data( ...@@ -2071,7 +2071,10 @@ static void posix_get_output_data(
} }
/* if there are globally shared files, do a shared file reduction */ /* 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 */ /* necessary initialization of shared records */
for(i = 0; i < shared_rec_count; i++) 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