-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
logutils accumulator API #677
Conversation
Pausing work on this PR until refactoring some underlying code. First step is in #684 |
b04294f
to
3966283
Compare
74b52a5
to
1922d8a
Compare
1922d8a
to
f3c0c5d
Compare
Current status:
TODO:
|
Next development target should probably be to replace the posix_accum_file() (and subsequently, stdio and mpiio versions of that same function) in darshan-parser. Right now it calls the agg_record functions directly and does some metric accumulation. It is used twice; once per unique file and once globally. |
The primary complexity with replacing/refactoring the I'm not sure how important these options are, but their existence means that (regardless of accumulator API capabilities) the darshan-parser has to continue to maintain it's own explicit hash table to track distinct files. If it weren't for those options then the hash table could be hidden within the accumulator implementation to produce derived values (like in the |
f3c0c5d
to
86ca5b1
Compare
rebased atop the PR changes that remove --file-list and --file-list-detailed to take another look at how to replace the |
86ca5b1
to
fb7cb17
Compare
Accumulator API now implements functionality needed for --total and --file arguments to darshan-parser. Next steps:
After that, the same process will need to be done for the --perf capability. |
Final steps are for performance metrics:
|
7262e90
to
d115e3e
Compare
Functionality complete. Need to make any necessary doc/changelog updates and squash. |
- generalized, reusable functions for summing and deriving metrics from arbitrary sets of records within a module - logutils plugins implemented for STDIO, POSIX, and MPIIO - refactored darshan-parser accordingly and validated results for a range of logs - integrated µnit Testing Framework - implemented unit test for darshan_accumulator API at the C level
8c05d3a
to
0cdf237
Compare
- copy and paste from posix case where it was needed; not necessary here
- also improve clarity of comments describing them
Looks good, thanks! |
* turn on `make check` in CI to run the `darshan-util` unit tests Phil added in darshan-hpcgh-677 -- they run very quickly so I don't see why we shouldn't just run them * we could eventually turn on `gcov` to show which lines are being traced through in the C code, but that's a bit more work to fuse into the Python cov report, so delaying that for now...
* early draft of Python/CFFI interface to derived metrics/accumulators described in: - darshan-hpcgh-642 - darshan-hpcgh-677 * for now this definitely doesn't work, and feels like I'm basically reconstituting a C control flow in CFFI/Python instead of using a sensible exposure point between C and Python to pull out populated structs from a single entry point * perhaps folks can just help me sort out the current issues noted in the source changes rather than providing a convenient API, though once thorough regression tests are in place that might be something to consider in the future... (or even just maintaining it in `pandas`/Python someday if the perf is ~similar)
* early draft of Python/CFFI interface to derived metrics/accumulators described in: - darshan-hpcgh-642 - darshan-hpcgh-677 * for now this definitely doesn't work, and feels like I'm basically reconstituting a C control flow in CFFI/Python instead of using a sensible exposure point between C and Python to pull out populated structs from a single entry point * perhaps folks can just help me sort out the current issues noted in the source changes rather than providing a convenient API, though once thorough regression tests are in place that might be something to consider in the future... (or even just maintaining it in `pandas`/Python someday if the perf is ~similar)
* early draft of Python/CFFI interface to derived metrics/accumulators described in: - darshan-hpcgh-642 - darshan-hpcgh-677 * for now this definitely doesn't work, and feels like I'm basically reconstituting a C control flow in CFFI/Python instead of using a sensible exposure point between C and Python to pull out populated structs from a single entry point * perhaps folks can just help me sort out the current issues noted in the source changes rather than providing a convenient API, though once thorough regression tests are in place that might be something to consider in the future... (or even just maintaining it in `pandas`/Python someday if the perf is ~similar)
* early draft of Python/CFFI interface to derived metrics/accumulators described in: - darshan-hpcgh-642 - darshan-hpcgh-677 * for now this definitely doesn't work, and feels like I'm basically reconstituting a C control flow in CFFI/Python instead of using a sensible exposure point between C and Python to pull out populated structs from a single entry point * perhaps folks can just help me sort out the current issues noted in the source changes rather than providing a convenient API, though once thorough regression tests are in place that might be something to consider in the future... (or even just maintaining it in `pandas`/Python someday if the perf is ~similar)
* early draft of Python/CFFI interface to derived metrics/accumulators described in: - darshan-hpcgh-642 - darshan-hpcgh-677 * for now this definitely doesn't work, and feels like I'm basically reconstituting a C control flow in CFFI/Python instead of using a sensible exposure point between C and Python to pull out populated structs from a single entry point * perhaps folks can just help me sort out the current issues noted in the source changes rather than providing a convenient API, though once thorough regression tests are in place that might be something to consider in the future... (or even just maintaining it in `pandas`/Python someday if the perf is ~similar)
make check
at the top level build directoryNote that this does not include Python bindings; those need to be added separately after this is merged so that these routines can be used withing Python utilities.
Fixes #642