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
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 */
......@@ -3,6 +3,7 @@
* See COPYRIGHT in top-level directory.
*/
#define _XOPEN_SOURCE 500
#define _GNU_SOURCE
#include "darshan-runtime-config.h"
......@@ -19,6 +20,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/vfs.h>
#include <zlib.h>
#include <mpi.h>
#include <assert.h>
......@@ -40,7 +42,7 @@ static int nprocs = -1;
#define DARSHAN_MAX_MNT_TYPE 32
struct mnt_data
{
int64_t hash;
int64_t hash; /* TODO: should it be possible for these to be negative? */
int64_t block_size;
char path[DARSHAN_MAX_MNT_PATH];
char type[DARSHAN_MAX_MNT_TYPE];
......@@ -430,11 +432,11 @@ static void darshan_core_shutdown()
/* create a communicator to use for shutting down the module */
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
{
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 */
......@@ -479,7 +481,7 @@ static void darshan_core_shutdown()
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 */
......
......@@ -419,7 +419,7 @@ static void posix_get_output_data(MPI_Comm comm, void **buffer, int *size)
{
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_ */
if((comm_cmp == MPI_IDENT) || (comm_cmp == MPI_CONGRUENT))
......
Darshan-modular branch development notes
========================================
Darshan modularization branch development notes
===============================================
== Introduction
Darshan-modular is the new implementation of Darshan (version >= 3.0.0), a lightweight
toolkit for characterizing the I/O performance of instrumented HPC applications.
Darshan is a lightweight toolkit for characterizing the I/O performance of instrumented
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
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
runtime environment and log file format such that new "instrumentation modules" can be
added without breaking existing tools. Essentially, developers are given a framework to
implement arbitrary modules, which are responsible for gathering I/O data from a specific
system component (which could be from an I/O library, platform-specific data, etc.). Darshan
can then manage these modules and create a valid Darshan log regardless of how many or what
types of modules are used.
Starting with version 3.0.0, the Darshan runtime environment and log file format have
been redesigned such that new "instrumentation modules" can be added without breaking
existing tools. Developers are given a framework to implement arbitrary instrumentation
modules, which are responsible for gathering I/O data from a specific system component
(which could be from an I/O library, platform-specific data, etc.). Darshan can then
manage these modules at runtime and create a valid Darshan log regardless of how many
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.
=== Counters status
=== darshan-util
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
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