dftracer 2.2.0.post8.dev0__tar.gz → 2.2.0.post10.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dftracer-2.2.0.post8.dev0/python/dftracer.egg-info → dftracer-2.2.0.post10.dev0}/PKG-INFO +1 -1
- dftracer-2.2.0.post10.dev0/docs/provenance.rst +367 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer-ideas.ipynb +1 -1
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/enumeration.h +3 -12
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer/_version.py +2 -2
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0/python/dftracer.egg-info}/PKG-INFO +1 -1
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/SOURCES.txt +1 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/scm_file_list.json +1 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/test_wheel.py +42 -2
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/configuration_manager.h +15 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/CMakeLists.txt +14 -0
- dftracer-2.2.0.post10.dev0/test/check_public_headers.cmake +71 -0
- dftracer-2.2.0.post8.dev0/docs/provenance.rst +0 -213
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.actrc +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.clang-format +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.coveragerc +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/devcontainer-dockerfile.json +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/devcontainer.json +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/docker-compose.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/benchmark.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/ci.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/dlio-benchmark.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/docker-publish.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/format-check.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/hdf5-mpi-trace-ci.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/prerelease.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/pull_request_event.json +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/python-publish.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/valgrind-ci.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/wheels.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitignore +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/benchmark.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/build-test.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/distribute.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/dlio-benchmark.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/docs.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/format-check.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/hdf5-mpi-trace.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/run-in-podman.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/toolchain.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/valgrind-gates.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/wheels.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/build.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/build_dft.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/common.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/compare_summary.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/create_log_dir.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/dlio_benchmark_test.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/dlio_setup.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_dlio_job.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_dlio_jobs.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_summary.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/hip_corona_requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/hip_tuo_requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/post.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/pre.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/run_dft_hip_test.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/run_dlio_training_with_service.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/variables.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab-ci.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitpod.yml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.migration/REVERT.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.migration/dftracer.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.readthedocs.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.vscode/launch.json +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.vscode/settings.json +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/CITATION.cff +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/COVERAGE_QUICKREF.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/DOCKER_SETUP_SUMMARY.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/Dockerfile +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/LICENSE +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/MANIFEST.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/NOTICE +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/PACKAGE_VERSION +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/VERSION +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/autobuild.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config-version.cmake.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.build.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.install.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_config.hpp.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_config_dbg.hpp.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_module.lua.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/DFTracerVariorum.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindCUPTI.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindHWLOC.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindPAPI.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindVariorum.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/SetupCompiler.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/dftracer-utils.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/patches/brahma_version_override.cmake +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/probes/papi_probe.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/has_fd.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/has_filesystem.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/mpi_detect.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/compose-dev.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/dependency/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/dependency/manifest.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docker/dl.Dockerfile +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docker/ior.Dockerfile +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/.clang-format +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/.gitignore +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/Makefile +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/_static/theme_overrides.css +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/ai_logging.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/api.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/bash_utilities.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/build.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/building_applications.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/conf.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/coverage.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/debugging.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/definitions.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/developer-guide.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_alcf_polaris.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_build.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_conf.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_custom_columns.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_distributed.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_overlap_analysis.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dftracer_service.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/docker.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/examples.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/gpu_tracing.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/overlap-analysis/overlap-analysis-summary.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/dask-scheduler-monitoring.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/run-scheduler.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-add-port-button.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-added-port.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-ports-tab.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dftracer-logo-light.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dftracer-logo.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dlio-profiler-logo.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-flags-confirm-1.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-flags-confirm-2.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-interface.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-result-example-pread.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-textbox-2.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-textbox.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-ui-confirm.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-viz.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/1000genome.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_dur.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_graph.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_summary.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/trace.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/index.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/limitations.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/migration.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/models.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/omnistat.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/overview.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/pegasus_genome.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/pegasus_montage.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/perfetto.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/style-guides.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/testing.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/trace_format.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/utilities.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/variorum.rst +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer-distributed.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/bw_timeline.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/dask-dashboard-load.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/xfer_timeline.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537780-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537781-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537782-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537783-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537784-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537785-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537786-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537787-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537788-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537789-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537790-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537791-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537793-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537796-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537798-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537799-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537800-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537801-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537802-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537803-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537804-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537805-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537806-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537807-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537808-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537809-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537810-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537811-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537812-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537813-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537814-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537815-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537816-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537817-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537818-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537819-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537820-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537821-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537822-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537823-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537824-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537825-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537826-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537827-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537828-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537829-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537830-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537831-preload.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace.pfw.gz +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/data.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/example.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/requirement.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/test_data1.pfw +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/vis.png +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/Makefile +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/papi_mpi.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/papi_single_node.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/constants.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/cpp_typedefs.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/entity.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/typedef.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/dftracer.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/Dockerfile.dev +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/Dockerfile.prod +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/QUICK_REFERENCE.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/build-multiplatform.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/pyproject.toml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer/__init__.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/dependency_links.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/not-zip-safe +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/requires.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/top_level.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/results/cases.csv +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/results/overhead.csv +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/README_COVERAGE.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/check_coverage.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/coverage_after_autobuild.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_anonymize +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_compact +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_compact_by_pid +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_create_index +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_event_count +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_merge +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_pgzip +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_sanitize +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_split +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_validate +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/formatting/autoformat.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/formatting/check-formatting.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/generate_coverage.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/generate_coverage_report.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/git_sparse_clone_interactive +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/git_sparse_push_interactive +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/repo/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/repo/update_version.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/valgrind_gate.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/check_papi_trace.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/check_variorum_trace.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/dlio_non_valgrind_runner.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/requirements-valgrind-runners.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/run_hdf5_mpi_ci_local.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_ctest_python_runner.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_ctest_runner.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_dlio_runner.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/README.md +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/build_deps.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/build_wheels.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/bundle_wheel.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/manifest.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/repair_wheel.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/setup.cfg +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/setup.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/aggregator.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/aggregator.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/rules.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/rules.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/hdf5.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/hdf5.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpi.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpi.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpiio.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpiio.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/posix.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/posix.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/stdio.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/stdio.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/buffer/buffer.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/buffer/buffer.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/datastructure.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/datastructure.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/dftracer_main.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/dftracer_main.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/error.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/event_loop.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/event_loop.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/logging.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/macros.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/singleton.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/compression/zlib_compression.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/compression/zlib_compression.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/datastructure.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/df_logger.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/df_logger.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer_preload.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer_preload.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/finstrument/functions.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/finstrument/functions.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/cuda/intercept.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/cuda/intercept.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/generic_function.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/hip/intercept.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/hip/intercept.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/papi/counters.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/papi/counters.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/serialization/json_line.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/serialization/json_line.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/configuration_manager.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/md5.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/md5.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/posix_bypass.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/posix_bypass.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/stdio_bypass.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/stdio_bypass.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/utils.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/utils.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/writer/stdio_writer.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/writer/stdio_writer.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer.cpp.in +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer_dbg.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/common/datastructure.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/service.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/service.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/cpu_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/cpu_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/io_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/io_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/memory_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/memory_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/network_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/network_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/omnistat_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/omnistat_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_factory.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_factory.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_interface.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_collector.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_collector.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_power_layout.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/analysis_ior.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_c_api_coverage.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_entity.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5_mpi.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5_parallel.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_mpi.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_posix_fortify.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_posix_parity.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/testlib.c +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_entity_trace.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_events_present.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file_at_least.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file_not.sh +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_cpp_api_coverage.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_entity.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5_mpi.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5_parallel.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_mpi.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cuda/check_cuda_trace.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cuda/test_cuda.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/dfanalyzer/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/dlio_benchmark/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/ignore_result.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/test_external.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_compatible/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_compatible/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_exact/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_exact/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_higher_minor/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_higher_minor/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_incompatible_major/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_incompatible_major/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_minimum/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_minimum/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_old_major/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_old_major/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_wrong_exact/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_wrong_exact/test_version.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/darshan_analyzer_main.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/otf2_distributed_reader.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/recorder_distributed_reader.ipynb +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_darshan.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_recorder.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_scorep.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.csv +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/ai_logging.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/cuda_test.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/dynamo_test.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/hip_test.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/python_test.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/requirements.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/test.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/test_python_api_coverage.py +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/check.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/file.dat +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/mmap +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/mmap.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregated_key_hash.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregated_value.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregator.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_configuration.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_entity.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_omnistat.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_serialization.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_service.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_trace_event_type.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_variorum.cpp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/util.h +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/valgrind/dlio_known_external.supp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/valgrind/test_cpp_known_syscall.supp +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/benchmark-rules.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/conf.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/rules.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/selective-aggregation-rules.yaml +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/tools/CMakeLists.txt +0 -0
- {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/tools/generate_interfaces_from_brahma.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dftracer
|
|
3
|
-
Version: 2.2.0.
|
|
3
|
+
Version: 2.2.0.post10.dev0
|
|
4
4
|
Summary: I/O profiler for deep learning python apps. Specifically for dlio_benchmark.
|
|
5
5
|
Author-email: "Hariharan Devarajan (Hari)" <hariharandev1@llnl.gov>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
================================
|
|
2
|
+
Entities, Relations & Provenance
|
|
3
|
+
================================
|
|
4
|
+
|
|
5
|
+
DFTracer can record **what data an application works with and how each piece
|
|
6
|
+
of data came to be**, alongside its usual timing and I/O events. The same API
|
|
7
|
+
serves provenance (lineage of scientific artifacts) and performance analysis
|
|
8
|
+
(which events touched which data instances).
|
|
9
|
+
|
|
10
|
+
.. contents::
|
|
11
|
+
:local:
|
|
12
|
+
:depth: 2
|
|
13
|
+
|
|
14
|
+
----------------------------------------
|
|
15
|
+
What it captures
|
|
16
|
+
----------------------------------------
|
|
17
|
+
|
|
18
|
+
**Entity**
|
|
19
|
+
A typed instance of something the application works with: an input file, a
|
|
20
|
+
dataset shard, a checkpoint, a model, a predicted protein structure, a GPU
|
|
21
|
+
buffer. Identified by ``(type, key)``: the *type* is an application-defined
|
|
22
|
+
class name, the *key* is any application identifier for the instance (a
|
|
23
|
+
path, a sample id, ``step=120``). The key is hashed into a 64-bit
|
|
24
|
+
``EntityID``; it is never stored, so keys may be long or sensitive.
|
|
25
|
+
|
|
26
|
+
**Entity type**
|
|
27
|
+
Described once per process with a **role** (input, output, intermediate,
|
|
28
|
+
parameter, reference) and a short description of what it represents.
|
|
29
|
+
Roles let users ask "what went in", "what came out", "what happened
|
|
30
|
+
between".
|
|
31
|
+
|
|
32
|
+
**Event relation**
|
|
33
|
+
An event (a traced function or region) relates to entities: it **used**
|
|
34
|
+
(consumed), **generated** (produced), **invalidated** (deleted or ended) or
|
|
35
|
+
**updated** (modified in place) them. Any event may carry relations, in any
|
|
36
|
+
category, such as a C++ function, a Python region or an MPI call.
|
|
37
|
+
|
|
38
|
+
**Entity relation**
|
|
39
|
+
Two entities relate directly: **derived_from**, **revision_of**,
|
|
40
|
+
**contains** (has-a), **part_of** (is-in), **specialization_of**
|
|
41
|
+
(inherits / is-a), **alternate_of**, **depends_on**.
|
|
42
|
+
|
|
43
|
+
Together these form a graph: entities and events as nodes, relations as edges.
|
|
44
|
+
Walking ``generated`` edges backwards from an artifact gives its lineage;
|
|
45
|
+
walking ``used`` edges forwards gives the impact of an input.
|
|
46
|
+
|
|
47
|
+
Design rules
|
|
48
|
+
* Enums wherever possible; strings only where unavoidable, and then
|
|
49
|
+
fixed-length and JSON-safe.
|
|
50
|
+
* Identity is computed by the core (FNV-1a-64 of ``type`` 0x1f ``key``), so
|
|
51
|
+
the same ``(type, key)`` gets the same ``EntityID`` in C, C++ and Python,
|
|
52
|
+
in every process and on every node.
|
|
53
|
+
* Each entity and each entity type is recorded **once per process**; later
|
|
54
|
+
declarations cost a set lookup. The first declaration's store and uri win.
|
|
55
|
+
* Relations are the event's content and are written even when
|
|
56
|
+
``DFTRACER_INC_METADATA`` is off (other optional event args still need it).
|
|
57
|
+
|
|
58
|
+
----------------------------------------
|
|
59
|
+
Types and enums
|
|
60
|
+
----------------------------------------
|
|
61
|
+
|
|
62
|
+
Defined in ``dftracer/core/common/entity.h`` (C-compatible) and
|
|
63
|
+
``dftracer/core/common/typedef.h``.
|
|
64
|
+
|
|
65
|
+
=========================== ==========================================================================
|
|
66
|
+
Type Meaning
|
|
67
|
+
=========================== ==========================================================================
|
|
68
|
+
``EntityID`` ``uint64_t``; 16 lowercase hex characters in traces
|
|
69
|
+
``ConstEntityTypeName`` type name, at most ``DFT_ENTITY_TYPE_LEN - 1`` (31)
|
|
70
|
+
``ConstEntityKey`` instance key, hashed into the id, not stored
|
|
71
|
+
``ConstEntityURI`` locator unique within the app, at most 255 characters
|
|
72
|
+
``ConstEntityDescription`` type description, at most 255 characters
|
|
73
|
+
``EntityStore`` where the instance lives (enum below)
|
|
74
|
+
``EntityRole`` role of an entity type (enum below)
|
|
75
|
+
``EntityRelation`` event and entity relations (enum below)
|
|
76
|
+
=========================== ==========================================================================
|
|
77
|
+
|
|
78
|
+
Strings are truncated to their capacity and restricted to ``A-Z a-z 0-9 _ - .
|
|
79
|
+
: / @ + = , ~`` and space; any other character (quotes, backslash, ``|``,
|
|
80
|
+
control characters) becomes ``_``.
|
|
81
|
+
|
|
82
|
+
.. list-table::
|
|
83
|
+
:header-rows: 1
|
|
84
|
+
|
|
85
|
+
* - Enum
|
|
86
|
+
- Values (as written in traces)
|
|
87
|
+
* - ``EntityStore``
|
|
88
|
+
- 0 memory, 1 gpu_memory, 2 local_disk, 3 parallel_fs, 4 burst_buffer,
|
|
89
|
+
5 object_store, 6 database, 7 network, 8 other
|
|
90
|
+
* - ``EntityRole``
|
|
91
|
+
- 0 unknown, 1 input, 2 output, 3 intermediate, 4 parameter, 5 reference
|
|
92
|
+
* - ``EntityRelation`` (event)
|
|
93
|
+
- 0 used, 1 generated, 2 invalidated, 3 updated
|
|
94
|
+
* - ``EntityRelation`` (entity)
|
|
95
|
+
- 16 derived_from, 17 revision_of, 18 contains, 19 part_of,
|
|
96
|
+
20 specialization_of, 21 alternate_of, 22 depends_on
|
|
97
|
+
|
|
98
|
+
Enum values are part of the trace format and are append-only.
|
|
99
|
+
|
|
100
|
+
----------------------------------------
|
|
101
|
+
C API
|
|
102
|
+
----------------------------------------
|
|
103
|
+
|
|
104
|
+
.. code-block:: c
|
|
105
|
+
|
|
106
|
+
#include <dftracer/dftracer.h>
|
|
107
|
+
|
|
108
|
+
DFTRACER_C_ENTITY_TYPE("sequence", DFT_ROLE_INPUT, "A query protein sequence");
|
|
109
|
+
|
|
110
|
+
void fold(const char* seq_id, const char* out_path) {
|
|
111
|
+
DFTRACER_C_FUNCTION_START();
|
|
112
|
+
DFTRACER_C_FUNCTION_USES("sequence", seq_id); /* store: memory */
|
|
113
|
+
EntityID s = update_relation_entity(data_fn, DFT_REL_GENERATED,
|
|
114
|
+
"protein_structure", seq_id,
|
|
115
|
+
DFT_STORE_PARALLEL_FS, out_path);
|
|
116
|
+
DFTRACER_C_FUNCTION_END();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
EntityID tar = DFTRACER_C_ENTITY("structure_tar", seq_id,
|
|
120
|
+
DFT_STORE_PARALLEL_FS, tar_path);
|
|
121
|
+
DFTRACER_C_ENTITY_RELATE(DFT_REL_CONTAINS, tar, s);
|
|
122
|
+
|
|
123
|
+
Functions: ``dftracer_declare_entity``, ``dftracer_declare_entity_type``,
|
|
124
|
+
``dftracer_relate_entities``, ``update_relation``, ``update_relation_entity``.
|
|
125
|
+
Macros: ``DFTRACER_C_ENTITY``, ``DFTRACER_C_ENTITY_TYPE``,
|
|
126
|
+
``DFTRACER_C_ENTITY_RELATE``, ``DFTRACER_C_FUNCTION_RELATE``,
|
|
127
|
+
``DFTRACER_C_FUNCTION_USES``, ``DFTRACER_C_FUNCTION_GENERATES``,
|
|
128
|
+
``DFTRACER_C_REGION_RELATE``.
|
|
129
|
+
|
|
130
|
+
----------------------------------------
|
|
131
|
+
C++ API
|
|
132
|
+
----------------------------------------
|
|
133
|
+
|
|
134
|
+
.. code-block:: cpp
|
|
135
|
+
|
|
136
|
+
#include <dftracer/dftracer.h>
|
|
137
|
+
|
|
138
|
+
void relax(const std::string& seq, const std::string& path) {
|
|
139
|
+
DFTRACER_CPP_FUNCTION();
|
|
140
|
+
EntityID raw = profiler_dft_fn.uses("unrelaxed_structure", seq.c_str());
|
|
141
|
+
EntityID out = profiler_dft_fn.generates("relaxed_structure", seq.c_str(),
|
|
142
|
+
DFT_STORE_BURST_BUFFER, path.c_str());
|
|
143
|
+
DFTRACER_CPP_ENTITY_RELATE(DFT_REL_REVISION_OF, out, raw);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
``DFTracer`` gains ``relate(EntityRelation, EntityID)``,
|
|
147
|
+
``relate(EntityRelation, type, key, store, uri)``, ``uses(...)`` and
|
|
148
|
+
``generates(...)``; macros ``DFTRACER_CPP_ENTITY``, ``DFTRACER_CPP_ENTITY_TYPE``,
|
|
149
|
+
``DFTRACER_CPP_ENTITY_RELATE``, ``DFTRACER_CPP_FUNCTION_RELATE``,
|
|
150
|
+
``DFTRACER_CPP_FUNCTION_USES``, ``DFTRACER_CPP_FUNCTION_GENERATES``,
|
|
151
|
+
``DFTRACER_CPP_REGION_RELATE``.
|
|
152
|
+
|
|
153
|
+
----------------------------------------
|
|
154
|
+
Python API
|
|
155
|
+
----------------------------------------
|
|
156
|
+
|
|
157
|
+
.. code-block:: python
|
|
158
|
+
|
|
159
|
+
from dftracer.python import (dftracer, dft_fn, EntityStore, EntityRole,
|
|
160
|
+
EntityRelation)
|
|
161
|
+
|
|
162
|
+
log = dftracer.initialize_log(logfile=None, data_dir=None, process_id=-1)
|
|
163
|
+
log.declare_entity_type("filtered_msa", EntityRole.OUTPUT,
|
|
164
|
+
"Diversity-filtered multiple sequence alignment")
|
|
165
|
+
|
|
166
|
+
with dft_fn("APP", name="filter_msa") as f:
|
|
167
|
+
merged = f.uses("merged_msa", seq_id, EntityStore.BURST_BUFFER, merged_path)
|
|
168
|
+
filtered = f.generates("filtered_msa", seq_id, EntityStore.BURST_BUFFER, out_path)
|
|
169
|
+
f.relate_entity(EntityRelation.INVALIDATED, "merged_msa", seq_id) # deleted
|
|
170
|
+
|
|
171
|
+
log.relate_entities(EntityRelation.DERIVED_FROM, filtered, merged)
|
|
172
|
+
|
|
173
|
+
``dftracer`` gains ``declare_entity`` (returns the id as an ``int``, 0 when
|
|
174
|
+
tracing is off), ``declare_entity_type`` and ``relate_entities``; ``dft_fn``
|
|
175
|
+
gains ``uses``, ``generates``, ``relate_entity`` and ``relate``. The native
|
|
176
|
+
module also exposes ``entity_hash(type, key)`` and ``entity_hex(id)`` to compute
|
|
177
|
+
ids without tracing.
|
|
178
|
+
|
|
179
|
+
----------------------------------------
|
|
180
|
+
Trace records
|
|
181
|
+
----------------------------------------
|
|
182
|
+
|
|
183
|
+
Entities, entity types and entity relations are metadata records
|
|
184
|
+
(``"ph":4``, ``"cat":"dftracer"``, ``"type":1``) with named fields:
|
|
185
|
+
|
|
186
|
+
.. code-block:: json
|
|
187
|
+
|
|
188
|
+
{"name":"EH","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,
|
|
189
|
+
"args":{"hhash":"…","id":"8f0de68c04eea0bf","type":"protein_structure",
|
|
190
|
+
"store":3,"uri":"/p/out/a.pdb"}}
|
|
191
|
+
{"name":"ET","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,
|
|
192
|
+
"args":{"hhash":"…","type":"protein_structure","role":2,
|
|
193
|
+
"description":"Predicted 3D structure"}}
|
|
194
|
+
{"name":"ER","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,
|
|
195
|
+
"args":{"hhash":"…","relation":18,"subject":"6e6d650dd131e83b",
|
|
196
|
+
"object":"8f0de68c04eea0bf"}}
|
|
197
|
+
|
|
198
|
+
An event's relations are one ``relations`` object in its ``args``: relation
|
|
199
|
+
name to an array of entity ids. Nesting them keeps relation names from
|
|
200
|
+
colliding with other event args (the lifecycle ``end`` event has its own
|
|
201
|
+
``used`` object, for example):
|
|
202
|
+
|
|
203
|
+
.. code-block:: json
|
|
204
|
+
|
|
205
|
+
{"id":2,"name":"fold","cat":"CPP_APP","type":9,"pid":1,"tid":1,
|
|
206
|
+
"ts":1790877632269434,"dur":32,"ph":1,
|
|
207
|
+
"args":{"hhash":"…","relations":{"used":["d824b0bb91487885"],
|
|
208
|
+
"generated":["8f0de68c04eea0bf"]}}}
|
|
209
|
+
|
|
210
|
+
Every record is one JSON line.
|
|
211
|
+
The ``hhash`` field names the host, so records from different nodes stay apart.
|
|
212
|
+
An ``EH`` record says what an id stands for.
|
|
213
|
+
An ``ET`` record says what a type means and which role it plays.
|
|
214
|
+
An ``ER`` record is one edge between two entities, with the ``relation`` code from the table above.
|
|
215
|
+
An event record says which entities it used, generated, invalidated or updated.
|
|
216
|
+
|
|
217
|
+
Each process writes its own ``EH`` and ``ET`` records, once per entity and once per type.
|
|
218
|
+
A trace directory therefore holds the same entity many times, once per process that touched it.
|
|
219
|
+
Readers keep the first copy and drop the rest.
|
|
220
|
+
The ``store`` is a number from the ``EntityStore`` table and ``uri`` is empty when the application gave none.
|
|
221
|
+
Event relations hold only ids.
|
|
222
|
+
The entity behind an id is the ``EH`` record with the same ``id``, which may sit in another file.
|
|
223
|
+
|
|
224
|
+
A reader joins events to entities by id; ids from different processes and
|
|
225
|
+
languages join without coordination. ``dftracer-utils`` builds the graph
|
|
226
|
+
(``trace::provenance::extract_provenance_graph``, ``GET /api/prov/graph`` and
|
|
227
|
+
the *Provenance* tab of ``dftracer_server``).
|
|
228
|
+
|
|
229
|
+
----------------------------------------
|
|
230
|
+
Reading a trace
|
|
231
|
+
----------------------------------------
|
|
232
|
+
|
|
233
|
+
The traces of one run sit in a directory with one ``.pfw.gz`` file per process.
|
|
234
|
+
Read them with the ``dftracer-utils`` dataframe API, which scans all files in one pass and joins them by id.
|
|
235
|
+
|
|
236
|
+
.. code-block:: python
|
|
237
|
+
|
|
238
|
+
from dftracer.utils import TraceViewer, col
|
|
239
|
+
|
|
240
|
+
view = TraceViewer("traces/", "/tmp/traces-index").phase("any")
|
|
241
|
+
|
|
242
|
+
# One scan feeds both reads. Entity records are metadata, so the
|
|
243
|
+
# viewer must read every record family.
|
|
244
|
+
with view.session() as s:
|
|
245
|
+
eh = s.collect(view.filter('name == "EH"'))
|
|
246
|
+
prov = s.collect(view.filter('cat == "PROV"'))
|
|
247
|
+
|
|
248
|
+
entities = (
|
|
249
|
+
eh.result()
|
|
250
|
+
.select("args.id", "args.type")
|
|
251
|
+
.rename({"args.id": "entity", "args.type": "type"})
|
|
252
|
+
.distinct("entity")
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
# One row per (event, relation, entity), labeled with the entity type.
|
|
256
|
+
events = prov.result()
|
|
257
|
+
edges = (
|
|
258
|
+
events.unpivot(
|
|
259
|
+
id_vars=["name", "pid", "ts"],
|
|
260
|
+
value_vars=[c for c in events.columns if c.startswith("args.relations.")],
|
|
261
|
+
)
|
|
262
|
+
.drop_nulls()
|
|
263
|
+
.join(entities, left_on="value", right_on="entity")
|
|
264
|
+
)
|
|
265
|
+
edges = edges.assign(relation=edges["variable"].str.extract(r"relations\.(\w+)\."))
|
|
266
|
+
|
|
267
|
+
made = edges.filter(col("relation") == "generated")
|
|
268
|
+
print(made.group_by(["name", "type"]).agg("count:pid").sort(["name", "type"]).to_pandas())
|
|
269
|
+
|
|
270
|
+
The second argument of ``TraceViewer`` is where the index goes.
|
|
271
|
+
Without it the viewer writes a ``.dftindex`` directory next to the traces, which is not what you want in a shared trace directory.
|
|
272
|
+
|
|
273
|
+
Two details of the dataframe shape the code.
|
|
274
|
+
Metadata records have ``ph`` 4 and are left out of a default query, so ``phase("any")`` is required to see ``EH``, ``ET`` and ``ER``.
|
|
275
|
+
The session registers both reads first and runs them together, so the trace is decompressed and parsed once.
|
|
276
|
+
Nested fields become columns named by their path, and an array becomes one column per position, such as ``args.relations.used.0`` and ``args.relations.used.1``.
|
|
277
|
+
The ``unpivot`` call turns those columns back into one row per relation, and ``distinct`` keeps one ``EH`` record for each entity, since every process writes its own copy.
|
|
278
|
+
|
|
279
|
+
On a protein structure prediction run of 10 sequences the last line prints which step made which kind of entity, here cut to the first rows:
|
|
280
|
+
|
|
281
|
+
.. code-block:: text
|
|
282
|
+
|
|
283
|
+
name type count_pid
|
|
284
|
+
0 a3m_to_sto stockholm_msa 10
|
|
285
|
+
1 filter_msa filtered_msa 10
|
|
286
|
+
2 load_and_merge_msas merged_msa 10
|
|
287
|
+
3 load_inputs sequence 10
|
|
288
|
+
4 msa_featgen msa_features 10
|
|
289
|
+
...
|
|
290
|
+
|
|
291
|
+
The same query in duql is one text with no dataframe code:
|
|
292
|
+
|
|
293
|
+
.. code-block:: python
|
|
294
|
+
|
|
295
|
+
from dftracer.utils import TraceViewer
|
|
296
|
+
|
|
297
|
+
q = """
|
|
298
|
+
let entities = from all
|
|
299
|
+
| where name == "EH"
|
|
300
|
+
| select entity = args.id, etype = args.type
|
|
301
|
+
| distinct;
|
|
302
|
+
where cat == "PROV"
|
|
303
|
+
| unpivot args.relations.*.* as variable, entity
|
|
304
|
+
| where entity is not null
|
|
305
|
+
| derive etype = entity -> entities.etype
|
|
306
|
+
| derive relation = extract(variable, "relations[.]([a-z]+)[.]", 1)
|
|
307
|
+
| where relation == "generated"
|
|
308
|
+
| group name, etype { n = count() }
|
|
309
|
+
"""
|
|
310
|
+
print(TraceViewer("traces/", "/tmp/traces-index").duql(q).collect().to_pandas())
|
|
311
|
+
|
|
312
|
+
The ``let`` names a row set of the entity records, and ``from all`` reads them although they are metadata, so the viewer needs no ``phase("any")``.
|
|
313
|
+
The ``*.*`` pattern in ``unpivot`` expands to every ``args.relations.<name>.<position>`` field in the trace, which does the job of the column list in the dataframe code.
|
|
314
|
+
``entity -> entities.etype`` looks up the type of each entity id in the row set.
|
|
315
|
+
The result is the same 16 rows, one for each step and entity type.
|
|
316
|
+
|
|
317
|
+
The ``edges`` table answers the common questions with a filter.
|
|
318
|
+
``edges.filter(col("relation") == "used")`` lists what each step consumed, and ``"invalidated"`` lists what each step deleted.
|
|
319
|
+
Filtering on ``col("value")`` with one id gives every event that touched that entity, whichever process wrote it.
|
|
320
|
+
For a ``revision_of`` or ``contains`` edge, read the ``ER`` records the same way, with ``name == "ER"`` and the columns ``args.relation``, ``args.subject`` and ``args.object``.
|
|
321
|
+
|
|
322
|
+
----------------------------------------
|
|
323
|
+
Walking the graph
|
|
324
|
+
----------------------------------------
|
|
325
|
+
|
|
326
|
+
The lineage of an entity is every entity that the steps before it used, and its impact is every entity that the steps after it made.
|
|
327
|
+
Both are a walk over the ``edges`` table above, one join per hop.
|
|
328
|
+
|
|
329
|
+
.. code-block:: python
|
|
330
|
+
|
|
331
|
+
from dftracer.utils import DataFrame
|
|
332
|
+
|
|
333
|
+
ACT = ["pid", "ts"] # an activity has no id; its process and start time name it
|
|
334
|
+
generated = edges.filter(col("relation") == "generated").select(*ACT, "value")
|
|
335
|
+
used = edges.filter(col("relation") == "used").select(*ACT, "value")
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def walk(start, backward=True):
|
|
339
|
+
into, out = (generated, used) if backward else (used, generated)
|
|
340
|
+
seen = DataFrame.from_dict({"value": [start]})
|
|
341
|
+
frontier = seen
|
|
342
|
+
while len(frontier):
|
|
343
|
+
steps = frontier.join(into, on="value").select(*ACT).distinct()
|
|
344
|
+
reached = steps.join(out, on=ACT).select("value").distinct()
|
|
345
|
+
frontier = reached.join(seen, on="value", how="anti")
|
|
346
|
+
seen = seen.concat(frontier)
|
|
347
|
+
return seen.join(entities, left_on="value", right_on="entity")
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
best = entities.filter(col("type") == "best_structure").sort("entity")["entity"].to_list()[0]
|
|
351
|
+
lineage = walk(best)
|
|
352
|
+
model = entities.filter(col("type") == "model_params")["entity"].to_list()[0]
|
|
353
|
+
impact = walk(model, backward=False)
|
|
354
|
+
print(len(lineage), len(impact.filter(col("type") == "best_structure")))
|
|
355
|
+
|
|
356
|
+
.. code-block:: text
|
|
357
|
+
|
|
358
|
+
28 10
|
|
359
|
+
|
|
360
|
+
A backward hop finds the activities that generated the entities in hand and then the entities those activities used.
|
|
361
|
+
A forward hop goes the other way, and the anti join drops the entities already seen, so the walk ends when a hop finds nothing new.
|
|
362
|
+
On the run above, each best structure comes from 28 entities, from the input chunk and the sequence to the alignments, the reference databases, both model weights and the seed.
|
|
363
|
+
Each set of model weights reaches all 10 best structures, since every prediction runs both models and picks the better one.
|
|
364
|
+
|
|
365
|
+
An activity record has no id field, so the walk names an activity by its ``pid`` and ``ts``.
|
|
366
|
+
That is unique as long as one process does not start two activities in the same microsecond.
|
|
367
|
+
The ``ER`` edges, such as ``revision_of`` and ``contains``, are not part of the walk, since no activity reads or writes through them.
|
{dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer-ideas.ipynb
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
|
-
name: dftracer-2.2.0.
|
|
2
|
+
name: dftracer-2.2.0.post10.dev0/examples/dfanalyzer/dfanalyzer-ideas.ipynb
|
|
3
3
|
size: 52418033 bytes
|
|
4
4
|
sha256: e4b283c4e2e7dd17e9f5452b2fb101d1d9f32d4dd13fa56742629faea6700b55
|
{dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/enumeration.h
RENAMED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
#ifndef DFTRACER_ENUMERATION_H
|
|
6
6
|
#define DFTRACER_ENUMERATION_H
|
|
7
|
-
#include <
|
|
7
|
+
#include <cstdint>
|
|
8
|
+
#include <string>
|
|
9
|
+
|
|
8
10
|
enum WriterType : uint8_t { CHROME = 0 };
|
|
9
11
|
enum ProfilerStage : uint8_t {
|
|
10
12
|
PROFILER_INIT = 0,
|
|
@@ -179,17 +181,6 @@ inline void convert(const std::string& s, ProfileInitType& type) {
|
|
|
179
181
|
type = ProfileInitType::PROFILER_INIT_NONE;
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
|
-
inline void convert(const std::string& s, cpplogger::LoggerType& type) {
|
|
183
|
-
if (s == "DEBUG") {
|
|
184
|
-
type = cpplogger::LoggerType::CPP_LOGGER_DEBUG;
|
|
185
|
-
} else if (s == "INFO") {
|
|
186
|
-
type = cpplogger::LoggerType::CPP_LOGGER_INFO;
|
|
187
|
-
} else if (s == "WARN") {
|
|
188
|
-
type = cpplogger::LoggerType::CPP_LOGGER_WARN;
|
|
189
|
-
} else {
|
|
190
|
-
type = cpplogger::LoggerType::CPP_LOGGER_ERROR;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
184
|
inline void convert(const std::string& s, AggregationType& type) {
|
|
194
185
|
if (s == "FULL") {
|
|
195
186
|
type = AggregationType::AGGREGATION_TYPE_FULL;
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '2.2.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 2, 0, '
|
|
21
|
+
__version__ = version = '2.2.0.post10.dev0'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 0, 'post10', 'dev0')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dftracer
|
|
3
|
-
Version: 2.2.0.
|
|
3
|
+
Version: 2.2.0.post10.dev0
|
|
4
4
|
Summary: I/O profiler for deep learning python apps. Specifically for dlio_benchmark.
|
|
5
5
|
Author-email: "Hariharan Devarajan (Hari)" <hariharandev1@llnl.gov>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,9 +14,13 @@ Checks, in order:
|
|
|
14
14
|
3. every bundled shared library dlopen()s
|
|
15
15
|
4. every native executable in dftracer/bin starts (catches ELF corruption
|
|
16
16
|
from the auditwheel/patchelf rewrite, which segfaults before main)
|
|
17
|
-
5.
|
|
17
|
+
5. every shipped dftracer/ public header, except the bundled
|
|
18
|
+
dftracer-utils ones under dftracer/utils/, compiles against the wheel's
|
|
19
|
+
own include/ directory alone (catches a header that includes a
|
|
20
|
+
dependency whose headers the wheel does not ship, e.g. cpp-logger)
|
|
21
|
+
6. a real trace is produced: dftracer_service + an LD_PRELOAD'd workload,
|
|
18
22
|
and the resulting .pfw trace contains the I/O events
|
|
19
|
-
|
|
23
|
+
7. the pydftracer Python API layer, if installed, can log through the wheel
|
|
20
24
|
"""
|
|
21
25
|
|
|
22
26
|
from __future__ import annotations
|
|
@@ -27,6 +31,7 @@ import glob
|
|
|
27
31
|
import gzip
|
|
28
32
|
import json
|
|
29
33
|
import os
|
|
34
|
+
import shutil
|
|
30
35
|
import subprocess
|
|
31
36
|
import sys
|
|
32
37
|
import tempfile
|
|
@@ -214,6 +219,41 @@ def main() -> int:
|
|
|
214
219
|
if broken:
|
|
215
220
|
raise AssertionError("executables crash on startup: " + ", ".join(broken))
|
|
216
221
|
|
|
222
|
+
@check("public headers compile standalone")
|
|
223
|
+
def _headers():
|
|
224
|
+
include_dir = pkg_dir / "include"
|
|
225
|
+
# dftracer/utils/ holds the bundled dftracer-utils headers, which are
|
|
226
|
+
# C++20 and owned by that package, so only dftracer's own are checked.
|
|
227
|
+
utils_dir = include_dir / "dftracer" / "utils"
|
|
228
|
+
headers = sorted(
|
|
229
|
+
h
|
|
230
|
+
for h in (include_dir / "dftracer").rglob("*.h")
|
|
231
|
+
if utils_dir not in h.parents
|
|
232
|
+
)
|
|
233
|
+
if not headers:
|
|
234
|
+
raise AssertionError("no dftracer/ headers found in the wheel")
|
|
235
|
+
cxx = shutil.which(os.environ.get("CXX", "c++"))
|
|
236
|
+
if cxx is None:
|
|
237
|
+
raise Skip("no C++ compiler on PATH")
|
|
238
|
+
broken = []
|
|
239
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
240
|
+
for header in headers:
|
|
241
|
+
rel = header.relative_to(include_dir).as_posix()
|
|
242
|
+
tu = Path(tmp) / "tu.cpp"
|
|
243
|
+
tu.write_text(f"#include <{rel}>\nint main() {{ return 0; }}\n")
|
|
244
|
+
# Only the wheel's include/ on the path: a user compiling
|
|
245
|
+
# against the installed wheel has nothing else.
|
|
246
|
+
proc = run(
|
|
247
|
+
[cxx, "-std=c++17", "-fsyntax-only", f"-I{include_dir}", str(tu)]
|
|
248
|
+
)
|
|
249
|
+
if proc.returncode != 0:
|
|
250
|
+
broken.append(rel)
|
|
251
|
+
print(f"BROKEN : {rel}\n{proc.stdout.strip()}")
|
|
252
|
+
else:
|
|
253
|
+
print(f"compiles : {rel}")
|
|
254
|
+
if broken:
|
|
255
|
+
raise AssertionError("headers do not compile: " + ", ".join(broken))
|
|
256
|
+
|
|
217
257
|
if args.no_trace:
|
|
218
258
|
print("\nskipping runtime tracing checks (--no-trace)", flush=True)
|
|
219
259
|
return report()
|
|
@@ -9,6 +9,21 @@
|
|
|
9
9
|
|
|
10
10
|
#include <string>
|
|
11
11
|
#include <vector>
|
|
12
|
+
|
|
13
|
+
// Kept out of the public enumeration.h so installed headers do not
|
|
14
|
+
// depend on cpp-logger, which is a private dependency.
|
|
15
|
+
inline void convert(const std::string& s, cpplogger::LoggerType& type) {
|
|
16
|
+
if (s == "DEBUG") {
|
|
17
|
+
type = cpplogger::LoggerType::CPP_LOGGER_DEBUG;
|
|
18
|
+
} else if (s == "INFO") {
|
|
19
|
+
type = cpplogger::LoggerType::CPP_LOGGER_INFO;
|
|
20
|
+
} else if (s == "WARN") {
|
|
21
|
+
type = cpplogger::LoggerType::CPP_LOGGER_WARN;
|
|
22
|
+
} else {
|
|
23
|
+
type = cpplogger::LoggerType::CPP_LOGGER_ERROR;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
12
27
|
namespace dftracer {
|
|
13
28
|
class Metadata;
|
|
14
29
|
struct ExecInfo {
|
|
@@ -846,6 +846,20 @@ set_tests_properties(check_file_exists_${test_name} PROPERTIES DEPENDS ${test_na
|
|
|
846
846
|
# ########################################################################
|
|
847
847
|
|
|
848
848
|
# This test verifies the CMake package config works correctly
|
|
849
|
+
# Installed public headers must compile without any private dependency
|
|
850
|
+
# (cpp-logger, brahma, ...), since wheels and installs do not ship those.
|
|
851
|
+
set(test_name test_public_headers_self_contained)
|
|
852
|
+
add_test(NAME ${test_name}
|
|
853
|
+
COMMAND ${CMAKE_COMMAND}
|
|
854
|
+
"-DHEADERS=${DFTRACER_CORE_PUBLIC_INCLUDE}"
|
|
855
|
+
-DSOURCE_ROOT=${PROJECT_SOURCE_DIR}/include
|
|
856
|
+
-DSTAGE_DIR=${CMAKE_CURRENT_BINARY_DIR}/public_headers
|
|
857
|
+
-DCXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
858
|
+
-DC_COMPILER=${CMAKE_C_COMPILER}
|
|
859
|
+
"-DC_HEADERS=dftracer/dftracer.h;dftracer/core/common/constants.h;dftracer/core/common/typedef.h;dftracer/core/common/entity.h"
|
|
860
|
+
-P ${CMAKE_CURRENT_SOURCE_DIR}/check_public_headers.cmake
|
|
861
|
+
)
|
|
862
|
+
|
|
849
863
|
set(test_name test_package_find_build_tree)
|
|
850
864
|
find_program(SYSTEM_CMAKE cmake PATHS /usr/bin /usr/local/bin NO_DEFAULT_PATH)
|
|
851
865
|
set(_dftracer_package_find_cmake_args
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Checks that every installed public header compiles on its own.
|
|
2
|
+
#
|
|
3
|
+
# A wheel or `make install` ships only the headers in
|
|
4
|
+
# DFTRACER_CORE_PUBLIC_INCLUDE. Private dependencies (cpp-logger, brahma,
|
|
5
|
+
# gotcha, yaml-cpp, ...) are not shipped, so a public header that includes
|
|
6
|
+
# one breaks every downstream C/C++ build. This script copies the public
|
|
7
|
+
# headers into an empty include tree and compiles each one with only that
|
|
8
|
+
# tree on the include path.
|
|
9
|
+
#
|
|
10
|
+
# Inputs (-D):
|
|
11
|
+
# HEADERS ;-list of absolute public header paths
|
|
12
|
+
# SOURCE_ROOT directory the include paths are relative to (<src>/include)
|
|
13
|
+
# STAGE_DIR scratch directory, wiped on every run
|
|
14
|
+
# CXX_COMPILER C++ compiler
|
|
15
|
+
# C_COMPILER C compiler
|
|
16
|
+
# C_HEADERS ;-list of headers (relative to SOURCE_ROOT) that must also
|
|
17
|
+
# compile as C
|
|
18
|
+
|
|
19
|
+
foreach(var HEADERS SOURCE_ROOT STAGE_DIR CXX_COMPILER C_COMPILER)
|
|
20
|
+
if(NOT DEFINED ${var} OR "${${var}}" STREQUAL "")
|
|
21
|
+
message(FATAL_ERROR "check_public_headers: ${var} is not set")
|
|
22
|
+
endif()
|
|
23
|
+
endforeach()
|
|
24
|
+
|
|
25
|
+
file(REMOVE_RECURSE "${STAGE_DIR}")
|
|
26
|
+
set(stage_include "${STAGE_DIR}/include")
|
|
27
|
+
file(MAKE_DIRECTORY "${stage_include}")
|
|
28
|
+
|
|
29
|
+
set(relative_headers)
|
|
30
|
+
foreach(header ${HEADERS})
|
|
31
|
+
file(RELATIVE_PATH rel "${SOURCE_ROOT}" "${header}")
|
|
32
|
+
if(rel MATCHES "^\\.\\./")
|
|
33
|
+
message(FATAL_ERROR "check_public_headers: ${header} is not under ${SOURCE_ROOT}")
|
|
34
|
+
endif()
|
|
35
|
+
get_filename_component(rel_dir "${rel}" DIRECTORY)
|
|
36
|
+
file(COPY "${header}" DESTINATION "${stage_include}/${rel_dir}")
|
|
37
|
+
list(APPEND relative_headers "${rel}")
|
|
38
|
+
endforeach()
|
|
39
|
+
|
|
40
|
+
set(failures 0)
|
|
41
|
+
|
|
42
|
+
function(compile_header compiler lang std rel)
|
|
43
|
+
string(MAKE_C_IDENTIFIER "${rel}_${lang}" stem)
|
|
44
|
+
set(tu "${STAGE_DIR}/${stem}.${lang}")
|
|
45
|
+
file(WRITE "${tu}" "#include <${rel}>\nint main(void) { return 0; }\n")
|
|
46
|
+
execute_process(
|
|
47
|
+
COMMAND "${compiler}" ${std} -fsyntax-only -I "${stage_include}" "${tu}"
|
|
48
|
+
RESULT_VARIABLE rc
|
|
49
|
+
OUTPUT_VARIABLE out
|
|
50
|
+
ERROR_VARIABLE out)
|
|
51
|
+
if(rc EQUAL 0)
|
|
52
|
+
message(STATUS "PASS [${lang}] ${rel}")
|
|
53
|
+
else()
|
|
54
|
+
message(STATUS "FAIL [${lang}] ${rel}\n${out}")
|
|
55
|
+
math(EXPR n "${failures} + 1")
|
|
56
|
+
set(failures ${n} PARENT_SCOPE)
|
|
57
|
+
endif()
|
|
58
|
+
endfunction()
|
|
59
|
+
|
|
60
|
+
foreach(rel ${relative_headers})
|
|
61
|
+
compile_header("${CXX_COMPILER}" cpp -std=c++17 "${rel}")
|
|
62
|
+
endforeach()
|
|
63
|
+
foreach(rel ${C_HEADERS})
|
|
64
|
+
compile_header("${C_COMPILER}" c -std=c99 "${rel}")
|
|
65
|
+
endforeach()
|
|
66
|
+
|
|
67
|
+
if(failures GREATER 0)
|
|
68
|
+
message(FATAL_ERROR
|
|
69
|
+
"${failures} public header check(s) failed: an installed header includes "
|
|
70
|
+
"something that is not installed with it.")
|
|
71
|
+
endif()
|