Commit 7b412204 authored by Shane Snyder's avatar Shane Snyder

misc bug fixes and more documentation

parent bec14184
...@@ -38,4 +38,7 @@ struct darshan_core_record_ref ...@@ -38,4 +38,7 @@ struct darshan_core_record_ref
UT_hash_handle hlink; UT_hash_handle hlink;
}; };
uint32_t darshan_hashlittle(const void *key, size_t length, uint32_t initval);
uint64_t darshan_hash(const register unsigned char *k, register uint64_t length, register uint64_t level);
#endif /* __DARSHAN_CORE_H */ #endif /* __DARSHAN_CORE_H */
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* See COPYRIGHT in top-level directory. * See COPYRIGHT in top-level directory.
*/ */
#define _XOPEN_SOURCE 500
#define _GNU_SOURCE #define _GNU_SOURCE
#include "darshan-runtime-config.h" #include "darshan-runtime-config.h"
...@@ -19,6 +20,7 @@ ...@@ -19,6 +20,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/vfs.h> #include <sys/vfs.h>
#include <zlib.h>
#include <mpi.h> #include <mpi.h>
#include <assert.h> #include <assert.h>
...@@ -40,7 +42,7 @@ static int nprocs = -1; ...@@ -40,7 +42,7 @@ static int nprocs = -1;
#define DARSHAN_MAX_MNT_TYPE 32 #define DARSHAN_MAX_MNT_TYPE 32
struct mnt_data struct mnt_data
{ {
int64_t hash; int64_t hash; /* TODO: should it be possible for these to be negative? */
int64_t block_size; int64_t block_size;
char path[DARSHAN_MAX_MNT_PATH]; char path[DARSHAN_MAX_MNT_PATH];
char type[DARSHAN_MAX_MNT_TYPE]; char type[DARSHAN_MAX_MNT_TYPE];
...@@ -430,11 +432,11 @@ static void darshan_core_shutdown() ...@@ -430,11 +432,11 @@ static void darshan_core_shutdown()
/* create a communicator to use for shutting down the module */ /* create a communicator to use for shutting down the module */
if(global_mod_use_count[i] == nprocs) if(global_mod_use_count[i] == nprocs)
{ {
MPI_Comm_dup(MPI_COMM_WORLD, &mod_comm); DARSHAN_MPI_CALL(PMPI_Comm_dup)(MPI_COMM_WORLD, &mod_comm);
} }
else else
{ {
MPI_Comm_split(MPI_COMM_WORLD, local_mod_use[i], 0, &mod_comm); DARSHAN_MPI_CALL(PMPI_Comm_split)(MPI_COMM_WORLD, local_mod_use[i], 0, &mod_comm);
} }
/* if module is registered locally, get the corresponding output buffer */ /* if module is registered locally, get the corresponding output buffer */
...@@ -479,7 +481,7 @@ static void darshan_core_shutdown() ...@@ -479,7 +481,7 @@ static void darshan_core_shutdown()
this_mod = NULL; this_mod = NULL;
} }
MPI_Comm_free(&mod_comm); DARSHAN_MPI_CALL(PMPI_Comm_free)(&mod_comm);
} }
/* rank 0 is responsible for writing the log header */ /* rank 0 is responsible for writing the log header */
......
...@@ -419,7 +419,7 @@ static void posix_get_output_data(MPI_Comm comm, void **buffer, int *size) ...@@ -419,7 +419,7 @@ static void posix_get_output_data(MPI_Comm comm, void **buffer, int *size)
{ {
int comm_cmp; int comm_cmp;
MPI_Comm_compare(MPI_COMM_WORLD, comm, &comm_cmp); DARSHAN_MPI_CALL(PMPI_Comm_compare)(MPI_COMM_WORLD, comm, &comm_cmp);
/* only do shared file reductions if this communicator includes _everyone_ */ /* only do shared file reductions if this communicator includes _everyone_ */
if((comm_cmp == MPI_IDENT) || (comm_cmp == MPI_CONGRUENT)) if((comm_cmp == MPI_IDENT) || (comm_cmp == MPI_CONGRUENT))
......
Darshan-modular branch development notes Darshan modularization branch development notes
======================================== ===============================================
== Introduction == Introduction
Darshan-modular is the new implementation of Darshan (version >= 3.0.0), a lightweight Darshan is a lightweight toolkit for characterizing the I/O performance of instrumented
toolkit for characterizing the I/O performance of instrumented HPC applications. HPC applications.
Previously, Darshan had been designed to gather I/O data from a static set of sources. Darshan was originally designed to gather I/O data from a static set of sources.
Adding instrumentation for additional sources of I/O data was only possible through Adding instrumentation for additional sources of I/O data was only possible through
manual modification of the Darshan log file format, which consequentially breaks manual modification of the Darshan log file format, which consequentially breaks
other utilities reliant on that format. any other utilities reliant on that format.
Darshan-modular is differentiated from previous versions in that it modularizes the Darshan Starting with version 3.0.0, the Darshan runtime environment and log file format have
runtime environment and log file format such that new "instrumentation modules" can be been redesigned such that new "instrumentation modules" can be added without breaking
added without breaking existing tools. Essentially, developers are given a framework to existing tools. Developers are given a framework to implement arbitrary instrumentation
implement arbitrary modules, which are responsible for gathering I/O data from a specific modules, which are responsible for gathering I/O data from a specific system component
system component (which could be from an I/O library, platform-specific data, etc.). Darshan (which could be from an I/O library, platform-specific data, etc.). Darshan can then
can then manage these modules and create a valid Darshan log regardless of how many or what manage these modules at runtime and create a valid Darshan log regardless of how many
types of modules are used. or what types of modules are used.
== Status == Architectural overview
=== Runtime status The Darshan source tree is composed of two primary components:
Text. * *darshan-runtime*: Darshan runtime environment necessary for instrumenting MPI
applications and generating I/O characterization logs.
* *darshan-util*: Darshan utilities for analyzing the contents of a given Darshan
I/O characterization log.
=== Util status === darshan-runtime
Text. Text.
=== Counters status === darshan-util
Text. Text.
== Checking out and building the modularization branch
Developers can clone the Darshan source repository using the following methods:
* "git clone git://git.mcs.anl.gov/radix/darshan" (read-only access)
* "git clone \git@git.mcs.anl.gov:radix/darshan" (authenticated access)
After cloning the Darshan source, it is necessary to checkout the modularization
development branch:
----
git clone git@git.mcs.anl.gov:radix/darshan
git checkout dev-modular
----
For details on building the Darshan runtime and utility repositories, consult
the documentation from previous versions
(http://www.mcs.anl.gov/research/projects/darshan/docs/darshan-runtime.html[darshan-runtime] and
http://www.mcs.anl.gov/research/projects/darshan/docs/darshan-util.html[darshan-util]) -- the
necessary steps for building these repositories should not have changed in the new version of
Darshan.
== Adding new modules == Adding new modules
Text.
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