dftracer 2.1.1.post48.dev0__tar.gz → 2.2.0.post1.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.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/CMakeLists.txt +1 -0
- {dftracer-2.1.1.post48.dev0/python/dftracer.egg-info → dftracer-2.2.0.post1.dev0}/PKG-INFO +1 -1
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/index.rst +1 -0
- dftracer-2.2.0.post1.dev0/docs/provenance.rst +213 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/trace_format.rst +16 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/dfanalyzer-ideas.ipynb +1 -1
- dftracer-2.2.0.post1.dev0/include/dftracer/core/common/entity.h +192 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/include/dftracer/core/common/enumeration.h +7 -0
- dftracer-2.2.0.post1.dev0/include/dftracer/core/common/typedef.h +22 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/include/dftracer/dftracer.h +84 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer/_version.py +2 -2
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0/python/dftracer.egg-info}/PKG-INFO +1 -1
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/SOURCES.txt +6 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/scm_file_list.json +6 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/buffer/buffer.cpp +10 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/buffer/buffer.h +3 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/dftracer_main.h +19 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/df_logger.h +78 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/dftracer.cpp +114 -1
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/serialization/json_line.cpp +49 -1
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/serialization/json_line.h +7 -0
- dftracer-2.2.0.post1.dev0/src/dftracer/python/dftracer.cpp +110 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/python/dftracer.cpp.in +69 -1
- dftracer-2.2.0.post1.dev0/src/dftracer/python/dftracer_dbg.cpp +109 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/CMakeLists.txt +39 -2
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test_c_api_coverage.c +34 -1
- dftracer-2.2.0.post1.dev0/test/c/test_entity.c +38 -0
- dftracer-2.2.0.post1.dev0/test/check_entity_trace.py +139 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test_cpp_api_coverage.cpp +38 -0
- dftracer-2.2.0.post1.dev0/test/cpp/test_entity.cpp +32 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/CMakeLists.txt +8 -0
- dftracer-2.2.0.post1.dev0/test/unit/test_entity.cpp +86 -0
- dftracer-2.1.1.post48.dev0/include/dftracer/core/common/typedef.h +0 -13
- dftracer-2.1.1.post48.dev0/src/dftracer/python/dftracer.cpp +0 -58
- dftracer-2.1.1.post48.dev0/src/dftracer/python/dftracer_dbg.cpp +0 -57
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.actrc +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.clang-format +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.coveragerc +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.devcontainer/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.devcontainer/devcontainer-dockerfile.json +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.devcontainer/devcontainer.json +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.devcontainer/docker-compose.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/benchmark.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/ci.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/dlio-benchmark.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/docker-publish.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/format-check.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/hdf5-mpi-trace-ci.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/prerelease.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/pull_request_event.json +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/python-publish.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/valgrind-ci.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.github/workflows/wheels.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitignore +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/benchmark.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/build-test.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/distribute.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/dlio-benchmark.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/docs.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/format-check.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/hdf5-mpi-trace.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/run-in-podman.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/toolchain.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/valgrind-gates.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/flux-ci/wheels.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/build.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/build_dft.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/common.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/compare_summary.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/create_log_dir.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/dlio_benchmark_test.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/dlio_setup.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/generate_dlio_job.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/generate_dlio_jobs.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/generate_summary.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/hip_corona_requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/hip_tuo_requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/post.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/pre.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/run_dft_hip_test.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/run_dlio_training_with_service.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab/scripts/variables.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitlab-ci.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.gitpod.yml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.migration/REVERT.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.migration/dftracer.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.readthedocs.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.vscode/launch.json +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/.vscode/settings.json +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/CITATION.cff +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/COVERAGE_QUICKREF.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/DOCKER_SETUP_SUMMARY.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/Dockerfile +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/LICENSE +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/MANIFEST.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/NOTICE +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/PACKAGE_VERSION +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/VERSION +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/autobuild.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer-config-version.cmake.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer-config.cmake.build.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer-config.cmake.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer-config.cmake.install.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer_config.hpp.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer_config_dbg.hpp.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/configure_files/dftracer_module.lua.in +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/DFTracerVariorum.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/FindCUPTI.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/FindHWLOC.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/FindPAPI.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/FindVariorum.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/SetupCompiler.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/modules/dftracer-utils.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/patches/brahma_version_override.cmake +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/probes/papi_probe.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/tests/has_fd.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/tests/has_filesystem.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/cmake/tests/mpi_detect.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/compose-dev.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/.gitignore +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/GOTCHA-1.0.10.tar.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/brahma-1.1.0.tar.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/cpp-logger-0.0.8.tar.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/libuv-1.52.1.tar.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/manifest.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/dependency/source/yaml-cpp-0.6.3.tar.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docker/dl.Dockerfile +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docker/ior.Dockerfile +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/.clang-format +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/.gitignore +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/Makefile +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/_static/theme_overrides.css +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/ai_logging.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/api.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/bash_utilities.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/build.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/building_applications.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/conf.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/coverage.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/debugging.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/definitions.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/developer-guide.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_alcf_polaris.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_build.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_conf.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_custom_columns.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_distributed.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dfanalyzer_overlap_analysis.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/dftracer_service.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/docker.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/examples.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/gpu_tracing.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/overlap-analysis/overlap-analysis-summary.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/polaris/dask-scheduler-monitoring.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/polaris/run-scheduler.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/polaris/vscode-add-port-button.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/polaris/vscode-added-port.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dfanalyzer/polaris/vscode-ports-tab.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dftracer-logo-light.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dftracer-logo.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/dlio-profiler-logo.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-flags-confirm-1.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-flags-confirm-2.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-interface.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-sql-result-example-pread.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-sql-textbox-2.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-sql-textbox.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-ui-confirm.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/perfetto/perfetto-viz.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/tracing/1000genome.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/tracing/Montage_dur.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/tracing/Montage_graph.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/tracing/Montage_summary.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/images/tracing/trace.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/limitations.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/migration.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/models.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/omnistat.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/overview.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/pegasus_genome.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/pegasus_montage.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/perfetto.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/style-guides.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/testing.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/utilities.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/docs/variorum.rst +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/dfanalyzer-distributed.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/dfanalyzer.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/images/bw_timeline.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/images/dask-dashboard-load.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/images/xfer_timeline.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537780-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537781-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537782-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537783-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537784-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537785-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537786-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537787-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537788-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537789-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537790-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537791-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537793-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537796-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537798-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537799-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537800-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537801-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537802-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537803-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537804-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537805-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537806-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537807-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537808-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537809-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537810-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537811-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537812-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537813-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537814-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537815-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537816-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537817-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537818-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537819-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537820-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537821-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537822-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537823-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537824-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537825-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537826-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537827-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537828-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537829-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537830-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace-distributed/cm1_1_48_20240926/cm1-DEFAULT-3537831-preload.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/test-trace.pfw.gz +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/data.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/example.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/requirement.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/test_data1.pfw +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/graph_visualization/vis.png +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/papi_standalone/Makefile +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/papi_standalone/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/papi_standalone/papi_mpi.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/papi_standalone/papi_single_node.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/include/dftracer/core/common/constants.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/include/dftracer/core/common/cpp_typedefs.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/infrastructure/docker/Dockerfile.dev +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/infrastructure/docker/Dockerfile.prod +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/infrastructure/docker/QUICK_REFERENCE.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/infrastructure/docker/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/infrastructure/docker/build-multiplatform.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/pyproject.toml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer/__init__.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/dependency_links.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/not-zip-safe +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/requires.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/python/dftracer.egg-info/top_level.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/results/cases.csv +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/results/overhead.csv +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/README_COVERAGE.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/check_coverage.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/coverage_after_autobuild.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_anonymize +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_compact +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_compact_by_pid +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_create_index +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_event_count +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_merge +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_pgzip +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_sanitize +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_split +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/dftracer_validate +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/formatting/autoformat.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/formatting/check-formatting.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/generate_coverage.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/generate_coverage_report.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/git_sparse_clone_interactive +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/git_sparse_push_interactive +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/repo/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/repo/update_version.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/script/valgrind_gate.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/check_papi_trace.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/check_variorum_trace.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/dlio_non_valgrind_runner.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/requirements-valgrind-runners.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/run_hdf5_mpi_ci_local.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/valgrind_ctest_python_runner.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/valgrind_ctest_runner.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/valgrind_dlio_runner.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/README.md +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/build_deps.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/build_wheels.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/bundle_wheel.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/fetch_deps.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/manifest.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/repair_wheel.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/scripts/wheel/test_wheel.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/setup.cfg +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/setup.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/aggregator/aggregator.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/aggregator/aggregator.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/aggregator/rules.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/aggregator/rules.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/hdf5.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/hdf5.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/mpi.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/mpi.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/mpiio.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/mpiio.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/posix.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/posix.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/stdio.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/brahma/stdio.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/datastructure.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/datastructure.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/dftracer_main.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/error.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/event_loop.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/event_loop.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/logging.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/macros.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/common/singleton.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/compression/zlib_compression.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/compression/zlib_compression.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/datastructure.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/df_logger.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/dftracer_preload.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/dftracer_preload.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/finstrument/functions.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/finstrument/functions.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/cuda/intercept.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/cuda/intercept.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/generic_function.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/hip/intercept.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/hip/intercept.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/papi/counters.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/function/papi/counters.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/configuration_manager.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/configuration_manager.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/md5.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/md5.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/posix_bypass.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/posix_bypass.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/stdio_bypass.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/stdio_bypass.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/utils.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/utils/utils.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/writer/stdio_writer.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/core/writer/stdio_writer.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/common/datastructure.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/service.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/service.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/cpu_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/cpu_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/io_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/io_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/memory_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/memory_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/network_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/network_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/omnistat_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/omnistat_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/telemetry_factory.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/telemetry_factory.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/telemetry_interface.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/variorum_collector.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/variorum_collector.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/src/dftracer/service/telemetry/variorum_power_layout.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/analysis_ior.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test_hdf5.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test_hdf5_mpi.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test_hdf5_parallel.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/test_mpi.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/c/testlib.c +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/check_file.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/check_file_at_least.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/check_file_not.sh +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test_hdf5.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test_hdf5_mpi.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test_hdf5_parallel.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cpp/test_mpi.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cuda/check_cuda_trace.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/cuda/test_cuda.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/dfanalyzer/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/dlio_benchmark/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/ignore_result.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/test_external.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_compatible/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_compatible/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_exact/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_exact/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_higher_minor/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_higher_minor/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_incompatible_major/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_incompatible_major/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_minimum/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_minimum/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_old_major/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_old_major/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_wrong_exact/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/package_find/version_wrong_exact/test_version.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/analysis/darshan_analyzer_main.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/analysis/otf2_distributed_reader.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/analysis/recorder_distributed_reader.ipynb +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/load_darshan.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/load_recorder.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/load_scorep.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/overhead.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/overhead.csv +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/paper/overhead.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/ai_logging.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/cuda_test.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/dynamo_test.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/hip_test.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/python_test.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/requirements.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/test.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/py/test_python_api_coverage.py +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/check.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/file.dat +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/mmap +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/mmap.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_aggregated_key_hash.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_aggregated_value.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_aggregator.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_configuration.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_omnistat.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_serialization.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_service.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_trace_event_type.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/unit/test_variorum.cpp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/util.h +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/valgrind/dlio_known_external.supp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/valgrind/test_cpp_known_syscall.supp +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/yaml/benchmark-rules.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/yaml/conf.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/yaml/rules.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/test/yaml/selective-aggregation-rules.yaml +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/tools/CMakeLists.txt +0 -0
- {dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/tools/generate_interfaces_from_brahma.py +0 -0
|
@@ -1040,6 +1040,7 @@ else()
|
|
|
1040
1040
|
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/dftracer.h
|
|
1041
1041
|
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/core/common/constants.h
|
|
1042
1042
|
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/core/common/typedef.h
|
|
1043
|
+
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/core/common/entity.h
|
|
1043
1044
|
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/core/common/cpp_typedefs.h
|
|
1044
1045
|
${CMAKE_CURRENT_SOURCE_DIR}/include/dftracer/core/common/enumeration.h)
|
|
1045
1046
|
set(DFTRACER_CORE_PRIVATE_INCLUDE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dftracer
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0.post1.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,213 @@
|
|
|
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 -- a C++ function, a Python region, 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
|
+
A reader joins events to entities by id; ids from different processes and
|
|
211
|
+
languages join without coordination. ``dftracer-utils`` builds the graph
|
|
212
|
+
(``trace::provenance::extract_provenance_graph``, ``GET /api/prov/graph`` and
|
|
213
|
+
the *Provenance* tab of ``dftracer_server``).
|
|
@@ -226,6 +226,22 @@ An example of such event is below.
|
|
|
226
226
|
|
|
227
227
|
Here, the "name" "PR" represents a metadata event for process and the args contain the metadata name and its value.
|
|
228
228
|
|
|
229
|
+
.. _`Entity Records`:
|
|
230
|
+
|
|
231
|
+
Entity records (``EH``, ``ET``, ``ER``) describe the entities an application
|
|
232
|
+
works with, their types, and relations between entities; events relate to
|
|
233
|
+
entities through a ``relations`` object in their ``args`` (``used`` /
|
|
234
|
+
``generated`` / ``invalidated`` / ``updated`` arrays of entity ids). Unlike hash and custom metadata, these
|
|
235
|
+
records use named fields rather than ``name``/``value``:
|
|
236
|
+
|
|
237
|
+
.. code-block:: bash
|
|
238
|
+
|
|
239
|
+
{"name":"EH","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,"args":{"hhash":"...","id":"8f0de68c04eea0bf","type":"protein_structure","store":3,"uri":"/p/out/a.pdb"}}
|
|
240
|
+
{"name":"ET","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,"args":{"hhash":"...","type":"protein_structure","role":2,"description":"Predicted 3D structure"}}
|
|
241
|
+
{"name":"ER","cat":"dftracer","type":1,"pid":1,"tid":1,"ph":4,"args":{"hhash":"...","relation":18,"subject":"6e6d650dd131e83b","object":"8f0de68c04eea0bf"}}
|
|
242
|
+
|
|
243
|
+
See :doc:`provenance` for the API, the enum values and what each record means.
|
|
244
|
+
|
|
229
245
|
----------------------------------------
|
|
230
246
|
Lifecycle Events: "start" and "end"
|
|
231
247
|
----------------------------------------
|
{dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/examples/dfanalyzer/dfanalyzer-ideas.ipynb
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
|
-
name: dftracer-2.
|
|
2
|
+
name: dftracer-2.2.0.post1.dev0/examples/dfanalyzer/dfanalyzer-ideas.ipynb
|
|
3
3
|
size: 52418033 bytes
|
|
4
4
|
sha256: e4b283c4e2e7dd17e9f5452b2fb101d1d9f32d4dd13fa56742629faea6700b55
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
#ifndef DFTRACER_CORE_COMMON_ENTITY_H
|
|
2
|
+
#define DFTRACER_CORE_COMMON_ENTITY_H
|
|
3
|
+
/*
|
|
4
|
+
* Entities and relations -- shared definitions for the C, C++ and Python APIs.
|
|
5
|
+
*
|
|
6
|
+
* An entity is a typed instance of something an application works with (a
|
|
7
|
+
* file, a dataset shard, a checkpoint, a protein structure, a GPU buffer).
|
|
8
|
+
*
|
|
9
|
+
* identity EntityID 64-bit FNV-1a of (type, key); serialized as
|
|
10
|
+
* exactly 16 lowercase hex characters.
|
|
11
|
+
* type fixed-length string (DFT_ENTITY_TYPE_LEN), application-defined
|
|
12
|
+
* store EntityStore enum -- where the instance lives
|
|
13
|
+
* uri fixed-length string (DFT_ENTITY_URI_LEN), unique within the app
|
|
14
|
+
* role EntityRole enum -- per entity TYPE (input/output/...)
|
|
15
|
+
* description fixed-length string (DFT_ENTITY_DESC_LEN), per entity TYPE
|
|
16
|
+
* relation EntityRelation enum -- event->entity and entity->entity
|
|
17
|
+
*
|
|
18
|
+
* Enums are serialized as integers. Strings are copied into fixed buffers,
|
|
19
|
+
* truncated, and restricted to a JSON-safe character set (dft_entity_sanitize)
|
|
20
|
+
* so records never need escaping.
|
|
21
|
+
*
|
|
22
|
+
* Trace records (metadata, like the FH/SH file/string hash records):
|
|
23
|
+
* EH args: {"id":"<16-hex>","type":"<type>","store":<int>,"uri":"<uri>"}
|
|
24
|
+
* ET args: {"type":"<type>","role":<int>,"description":"<text>"}
|
|
25
|
+
* ER args: {"relation":<int>,"subject":"<16-hex>","object":"<16-hex>"}
|
|
26
|
+
* Event->entity relations are event args keyed by dft_relation_name(rel)
|
|
27
|
+
* whose value is a JSON array of 16-hex ids.
|
|
28
|
+
*/
|
|
29
|
+
#include <dftracer/core/common/typedef.h>
|
|
30
|
+
#include <stddef.h>
|
|
31
|
+
#include <stdint.h>
|
|
32
|
+
|
|
33
|
+
#ifdef __cplusplus
|
|
34
|
+
extern "C" {
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
/* Fixed string capacities, including the terminating NUL. */
|
|
38
|
+
#define DFT_ENTITY_TYPE_LEN 32
|
|
39
|
+
#define DFT_ENTITY_URI_LEN 256
|
|
40
|
+
#define DFT_ENTITY_DESC_LEN 256
|
|
41
|
+
/* 16 hex digits + NUL. */
|
|
42
|
+
#define DFT_ENTITY_HEX_LEN 17
|
|
43
|
+
|
|
44
|
+
#define DFT_ENTITY_NONE ((EntityID)0)
|
|
45
|
+
|
|
46
|
+
/* Where an entity instance lives. */
|
|
47
|
+
typedef enum {
|
|
48
|
+
DFT_STORE_MEMORY = 0,
|
|
49
|
+
DFT_STORE_GPU_MEMORY = 1,
|
|
50
|
+
DFT_STORE_LOCAL_DISK = 2,
|
|
51
|
+
DFT_STORE_PARALLEL_FS = 3,
|
|
52
|
+
DFT_STORE_BURST_BUFFER = 4,
|
|
53
|
+
DFT_STORE_OBJECT_STORE = 5,
|
|
54
|
+
DFT_STORE_DATABASE = 6,
|
|
55
|
+
DFT_STORE_NETWORK = 7,
|
|
56
|
+
DFT_STORE_OTHER = 8
|
|
57
|
+
} EntityStore;
|
|
58
|
+
|
|
59
|
+
/* Role of an entity TYPE in the workflow. */
|
|
60
|
+
typedef enum {
|
|
61
|
+
DFT_ROLE_UNKNOWN = 0,
|
|
62
|
+
DFT_ROLE_INPUT = 1, /* enters the workflow from outside */
|
|
63
|
+
DFT_ROLE_OUTPUT = 2, /* a deliverable / scientific artifact */
|
|
64
|
+
DFT_ROLE_INTERMEDIATE = 3, /* produced and consumed inside the workflow */
|
|
65
|
+
DFT_ROLE_PARAMETER = 4, /* configuration, seeds, model settings */
|
|
66
|
+
DFT_ROLE_REFERENCE = 5 /* versioned reference data (databases, weights) */
|
|
67
|
+
} EntityRole;
|
|
68
|
+
|
|
69
|
+
/* Relations. Values < 16 relate an EVENT to an entity (event args); values
|
|
70
|
+
* >= 16 relate two ENTITIES (ER records). */
|
|
71
|
+
typedef enum {
|
|
72
|
+
/* event -> entity (W3C PROV style) */
|
|
73
|
+
DFT_REL_USED = 0, /* the event consumed the entity (cause) */
|
|
74
|
+
DFT_REL_GENERATED = 1, /* the event produced the entity (effect) */
|
|
75
|
+
DFT_REL_INVALIDATED = 2, /* the event ended the entity (delete, consume) */
|
|
76
|
+
DFT_REL_UPDATED = 3, /* the event modified the entity in place */
|
|
77
|
+
/* entity -> entity (class-style) */
|
|
78
|
+
DFT_REL_DERIVED_FROM = 16, /* subject was derived from object */
|
|
79
|
+
DFT_REL_REVISION_OF = 17, /* subject is a newer version of object */
|
|
80
|
+
DFT_REL_CONTAINS = 18, /* subject has object as a member (has-a) */
|
|
81
|
+
DFT_REL_PART_OF = 19, /* subject is part of object (is-in) */
|
|
82
|
+
DFT_REL_SPECIALIZATION_OF = 20, /* subject is a kind of object (inherits) */
|
|
83
|
+
DFT_REL_ALTERNATE_OF = 21, /* same thing, another representation */
|
|
84
|
+
DFT_REL_DEPENDS_ON = 22 /* subject requires object */
|
|
85
|
+
} EntityRelation;
|
|
86
|
+
|
|
87
|
+
static inline int dft_relation_is_event(EntityRelation r) { return r < 16; }
|
|
88
|
+
|
|
89
|
+
/* Event arg holding an event's relations:
|
|
90
|
+
* "relations": {"used":["<16-hex>",...], "generated":[...], ...}
|
|
91
|
+
* One nested object, so relation names never collide with other event
|
|
92
|
+
* args (the lifecycle "end" event has its own "used" object). */
|
|
93
|
+
#define DFT_RELATIONS_ARG "relations"
|
|
94
|
+
|
|
95
|
+
/* Stable relation names (part of the trace format). */
|
|
96
|
+
static inline const char* dft_relation_name(EntityRelation r) {
|
|
97
|
+
switch (r) {
|
|
98
|
+
case DFT_REL_USED:
|
|
99
|
+
return "used";
|
|
100
|
+
case DFT_REL_GENERATED:
|
|
101
|
+
return "generated";
|
|
102
|
+
case DFT_REL_INVALIDATED:
|
|
103
|
+
return "invalidated";
|
|
104
|
+
case DFT_REL_UPDATED:
|
|
105
|
+
return "updated";
|
|
106
|
+
case DFT_REL_DERIVED_FROM:
|
|
107
|
+
return "derived_from";
|
|
108
|
+
case DFT_REL_REVISION_OF:
|
|
109
|
+
return "revision_of";
|
|
110
|
+
case DFT_REL_CONTAINS:
|
|
111
|
+
return "contains";
|
|
112
|
+
case DFT_REL_PART_OF:
|
|
113
|
+
return "part_of";
|
|
114
|
+
case DFT_REL_SPECIALIZATION_OF:
|
|
115
|
+
return "specialization_of";
|
|
116
|
+
case DFT_REL_ALTERNATE_OF:
|
|
117
|
+
return "alternate_of";
|
|
118
|
+
case DFT_REL_DEPENDS_ON:
|
|
119
|
+
return "depends_on";
|
|
120
|
+
}
|
|
121
|
+
return "related";
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* JSON-safe character set; everything else (quotes, backslash, control
|
|
125
|
+
* characters, '|', ...) becomes '_', so fields never need escaping. */
|
|
126
|
+
static inline int dft_entity_safe_char(char c) {
|
|
127
|
+
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
|
|
128
|
+
(c >= '0' && c <= '9'))
|
|
129
|
+
return 1;
|
|
130
|
+
switch (c) {
|
|
131
|
+
case '_':
|
|
132
|
+
case '-':
|
|
133
|
+
case '.':
|
|
134
|
+
case ':':
|
|
135
|
+
case '/':
|
|
136
|
+
case '@':
|
|
137
|
+
case '+':
|
|
138
|
+
case '=':
|
|
139
|
+
case ',':
|
|
140
|
+
case '~':
|
|
141
|
+
case ' ':
|
|
142
|
+
return 1;
|
|
143
|
+
default:
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Copy src into dst[cap] (truncating) with the safe character set. */
|
|
149
|
+
static inline void dft_entity_sanitize(char* dst, size_t cap, const char* src) {
|
|
150
|
+
size_t i = 0;
|
|
151
|
+
if (cap == 0) return;
|
|
152
|
+
if (src != NULL)
|
|
153
|
+
for (; src[i] != '\0' && i + 1 < cap; ++i)
|
|
154
|
+
dst[i] = dft_entity_safe_char(src[i]) ? src[i] : '_';
|
|
155
|
+
dst[i] = '\0';
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* 64-bit FNV-1a of type, a 0x1f separator, and key. Same value in every
|
|
159
|
+
* language and process; 0 is reserved for DFT_ENTITY_NONE. */
|
|
160
|
+
static inline EntityID dft_entity_hash(const char* type, const char* key) {
|
|
161
|
+
uint64_t h = 1469598103934665603ULL;
|
|
162
|
+
const unsigned char* p;
|
|
163
|
+
for (p = (const unsigned char*)(type ? type : ""); *p; ++p) {
|
|
164
|
+
h ^= *p;
|
|
165
|
+
h *= 1099511628211ULL;
|
|
166
|
+
}
|
|
167
|
+
h ^= 0x1fu;
|
|
168
|
+
h *= 1099511628211ULL;
|
|
169
|
+
for (p = (const unsigned char*)(key ? key : ""); *p; ++p) {
|
|
170
|
+
h ^= *p;
|
|
171
|
+
h *= 1099511628211ULL;
|
|
172
|
+
}
|
|
173
|
+
return h == DFT_ENTITY_NONE ? 1 : h;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* Render an id as exactly 16 lowercase hex digits into out[DFT_ENTITY_HEX_LEN].
|
|
177
|
+
*/
|
|
178
|
+
static inline void dft_entity_hex(EntityID id, char* out) {
|
|
179
|
+
static const char digits[] = "0123456789abcdef";
|
|
180
|
+
int i;
|
|
181
|
+
for (i = 15; i >= 0; --i) {
|
|
182
|
+
out[i] = digits[id & 0xfu];
|
|
183
|
+
id >>= 4;
|
|
184
|
+
}
|
|
185
|
+
out[16] = '\0';
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
#ifdef __cplusplus
|
|
189
|
+
}
|
|
190
|
+
#endif
|
|
191
|
+
|
|
192
|
+
#endif /* DFTRACER_CORE_COMMON_ENTITY_H */
|
{dftracer-2.1.1.post48.dev0 → dftracer-2.2.0.post1.dev0}/include/dftracer/core/common/enumeration.h
RENAMED
|
@@ -259,5 +259,12 @@ inline double time_metric_units_per_second(const TimeMetricType& type) {
|
|
|
259
259
|
#define METADATA_NAME_FILE_HASH "FH"
|
|
260
260
|
#define METADATA_NAME_HOSTNAME_HASH "HH"
|
|
261
261
|
#define METADATA_NAME_STRING_HASH "SH"
|
|
262
|
+
// Entities (see dftracer/core/common/entity.h):
|
|
263
|
+
// EH args: {"id":"<16-hex>","type":"<type>","store":<int>,"uri":"<uri>"}
|
|
264
|
+
// ET args: {"type":"<type>","role":<int>,"description":"<text>"}
|
|
265
|
+
// ER args: {"relation":<int>,"subject":"<16-hex>","object":"<16-hex>"}
|
|
266
|
+
#define METADATA_NAME_ENTITY_HASH "EH"
|
|
267
|
+
#define METADATA_NAME_ENTITY_TYPE "ET"
|
|
268
|
+
#define METADATA_NAME_ENTITY_RELATION "ER"
|
|
262
269
|
#define CUSTOM_METADATA "CM"
|
|
263
270
|
#endif // DFTRACER_ENUMERATION_H
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by haridev on 10/7/23.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#ifndef DFTRACER_TYPEDEF_H
|
|
6
|
+
#define DFTRACER_TYPEDEF_H
|
|
7
|
+
#include <stdint.h>
|
|
8
|
+
typedef unsigned long long int TimeResolution;
|
|
9
|
+
typedef unsigned long int ThreadID;
|
|
10
|
+
typedef int ProcessID;
|
|
11
|
+
typedef char* EventNameType;
|
|
12
|
+
typedef const char* ConstEventNameType;
|
|
13
|
+
typedef char* HashType;
|
|
14
|
+
// Entities (see core/common/entity.h). Ids are 64-bit and rendered as 16 hex
|
|
15
|
+
// characters only when written; strings are bounded by the DFT_ENTITY_*_LEN
|
|
16
|
+
// capacities and sanitized to a JSON-safe character set.
|
|
17
|
+
typedef uint64_t EntityID;
|
|
18
|
+
typedef const char* ConstEntityTypeName; // <= DFT_ENTITY_TYPE_LEN
|
|
19
|
+
typedef const char* ConstEntityKey; // hashed into EntityID, not stored
|
|
20
|
+
typedef const char* ConstEntityURI; // <= DFT_ENTITY_URI_LEN
|
|
21
|
+
typedef const char* ConstEntityDescription; // <= DFT_ENTITY_DESC_LEN
|
|
22
|
+
#endif // DFTRACER_TYPEDEF_H
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Common to both C and CPP
|
|
10
10
|
*/
|
|
11
11
|
#include <dftracer/core/common/constants.h>
|
|
12
|
+
#include <dftracer/core/common/entity.h>
|
|
12
13
|
#include <dftracer/core/common/typedef.h>
|
|
13
14
|
#define DF_DATA_EVENT 0
|
|
14
15
|
#define DF_METADATA_EVENT 1
|
|
@@ -38,6 +39,25 @@ void set_app_metadata_string(const char* key, const char* value);
|
|
|
38
39
|
// log as PYTHON, so each calls this with its own name to tell them apart.
|
|
39
40
|
// Idempotent; safe to call on every invocation.
|
|
40
41
|
void mark_used(const char* name);
|
|
42
|
+
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Entities and relations (types, enums and limits: core/common/entity.h).
|
|
45
|
+
//
|
|
46
|
+
// Declare an entity instance: (type, key) -> 64-bit id, recorded once per
|
|
47
|
+
// process as an EH record. `type` is application-defined (truncated to
|
|
48
|
+
// DFT_ENTITY_TYPE_LEN), `key` is any application identifier (hashed, never
|
|
49
|
+
// stored), `uri` is an optional locator unique within the app (truncated to
|
|
50
|
+
// DFT_ENTITY_URI_LEN). Returns DFT_ENTITY_NONE when tracing is off.
|
|
51
|
+
EntityID dftracer_declare_entity(ConstEntityTypeName type, ConstEntityKey key,
|
|
52
|
+
EntityStore store, ConstEntityURI uri);
|
|
53
|
+
// Describe an entity type once per process: its role and what it represents
|
|
54
|
+
// (description truncated to DFT_ENTITY_DESC_LEN). One ET record.
|
|
55
|
+
void dftracer_declare_entity_type(ConstEntityTypeName type, EntityRole role,
|
|
56
|
+
ConstEntityDescription description);
|
|
57
|
+
// Relate two entities (entity -> entity relations, e.g. DFT_REL_CONTAINS,
|
|
58
|
+
// DFT_REL_DERIVED_FROM). One ER record.
|
|
59
|
+
void dftracer_relate_entities(EntityRelation relation, EntityID subject,
|
|
60
|
+
EntityID object);
|
|
41
61
|
#ifdef __cplusplus
|
|
42
62
|
}
|
|
43
63
|
#endif
|
|
@@ -62,6 +82,7 @@ class DFTracer {
|
|
|
62
82
|
TraceEventType type;
|
|
63
83
|
TimeResolution start_time;
|
|
64
84
|
dftracer::Metadata* metadata;
|
|
85
|
+
void* relations; // relation name -> entity hashes; see relate()
|
|
65
86
|
|
|
66
87
|
public:
|
|
67
88
|
DFTracer(ConstEventNameType _name, ConstEventNameType _cat,
|
|
@@ -74,6 +95,25 @@ class DFTracer {
|
|
|
74
95
|
void update(const char* key, const char* value,
|
|
75
96
|
MetadataType type = MetadataType::MT_KEY);
|
|
76
97
|
|
|
98
|
+
// Relate this event to an entity under an event relation (DFT_REL_USED,
|
|
99
|
+
// DFT_REL_GENERATED, DFT_REL_INVALIDATED, DFT_REL_UPDATED). Ids are kept
|
|
100
|
+
// as integers and rendered to hex only when the event is written.
|
|
101
|
+
void relate(EntityRelation relation, EntityID entity);
|
|
102
|
+
// Declare (type, key) and relate it in one step; returns the entity id.
|
|
103
|
+
EntityID relate(EntityRelation relation, ConstEntityTypeName type,
|
|
104
|
+
ConstEntityKey key, EntityStore store = DFT_STORE_MEMORY,
|
|
105
|
+
ConstEntityURI uri = nullptr);
|
|
106
|
+
EntityID uses(ConstEntityTypeName type, ConstEntityKey key,
|
|
107
|
+
EntityStore store = DFT_STORE_MEMORY,
|
|
108
|
+
ConstEntityURI uri = nullptr) {
|
|
109
|
+
return relate(DFT_REL_USED, type, key, store, uri);
|
|
110
|
+
}
|
|
111
|
+
EntityID generates(ConstEntityTypeName type, ConstEntityKey key,
|
|
112
|
+
EntityStore store = DFT_STORE_MEMORY,
|
|
113
|
+
ConstEntityURI uri = nullptr) {
|
|
114
|
+
return relate(DFT_REL_GENERATED, type, key, store, uri);
|
|
115
|
+
}
|
|
116
|
+
|
|
77
117
|
void finalize();
|
|
78
118
|
|
|
79
119
|
~DFTracer();
|
|
@@ -125,6 +165,23 @@ class DFTracer {
|
|
|
125
165
|
#define DFTRACER_CPP_REGION_DYN_UPDATE_TYPE(name, key, val, type) \
|
|
126
166
|
profiler_##name->update(key, val, type);
|
|
127
167
|
|
|
168
|
+
// Entities and relations (see dftracer_declare_entity, core/common/entity.h).
|
|
169
|
+
#define DFTRACER_CPP_ENTITY(type, key, store, uri) \
|
|
170
|
+
dftracer_declare_entity(type, key, store, uri)
|
|
171
|
+
#define DFTRACER_CPP_ENTITY_TYPE(type, role, description) \
|
|
172
|
+
dftracer_declare_entity_type(type, role, description);
|
|
173
|
+
#define DFTRACER_CPP_ENTITY_RELATE(relation, subject, object) \
|
|
174
|
+
dftracer_relate_entities(relation, subject, object);
|
|
175
|
+
#define DFTRACER_CPP_FUNCTION_RELATE(relation, entity) \
|
|
176
|
+
profiler_dft_fn.relate(relation, entity);
|
|
177
|
+
#define DFTRACER_CPP_FUNCTION_USES(type, key) profiler_dft_fn.uses(type, key);
|
|
178
|
+
#define DFTRACER_CPP_FUNCTION_GENERATES(type, key) \
|
|
179
|
+
profiler_dft_fn.generates(type, key);
|
|
180
|
+
#define DFTRACER_CPP_REGION_RELATE(name, relation, entity) \
|
|
181
|
+
profiler_##name.relate(relation, entity);
|
|
182
|
+
#define DFTRACER_CPP_REGION_DYN_RELATE(name, relation, entity) \
|
|
183
|
+
profiler_##name->relate(relation, entity);
|
|
184
|
+
|
|
128
185
|
extern "C" {
|
|
129
186
|
#endif
|
|
130
187
|
// C APIs
|
|
@@ -147,6 +204,15 @@ void update_metadata_int_type(struct DFTracerData* data, const char* key,
|
|
|
147
204
|
void update_metadata_string_type(struct DFTracerData* data, const char* key,
|
|
148
205
|
const char* value, int type);
|
|
149
206
|
|
|
207
|
+
// Relate a region to an entity under an event relation, or declare
|
|
208
|
+
// (type, key) and relate it in one call (returns the entity id).
|
|
209
|
+
void update_relation(struct DFTracerData* data, EntityRelation relation,
|
|
210
|
+
EntityID entity);
|
|
211
|
+
EntityID update_relation_entity(struct DFTracerData* data,
|
|
212
|
+
EntityRelation relation,
|
|
213
|
+
ConstEntityTypeName type, ConstEntityKey key,
|
|
214
|
+
EntityStore store, ConstEntityURI uri);
|
|
215
|
+
|
|
150
216
|
#define DFTRACER_C_INIT(log_file, data_dirs, process_id) \
|
|
151
217
|
initialize_main(log_file, data_dirs, process_id); \
|
|
152
218
|
mark_used("C_APP");
|
|
@@ -212,6 +278,24 @@ void update_metadata_string_type(struct DFTracerData* data, const char* key,
|
|
|
212
278
|
#define DFTRACER_C_REGION_UPDATE_STR_TYPE(name, key, val, type) \
|
|
213
279
|
update_metadata_string_type(data_##name, key, val, type);
|
|
214
280
|
|
|
281
|
+
// Entities and relations (see dftracer_declare_entity, core/common/entity.h).
|
|
282
|
+
#define DFTRACER_C_ENTITY(type, key, store, uri) \
|
|
283
|
+
dftracer_declare_entity(type, key, store, uri)
|
|
284
|
+
#define DFTRACER_C_ENTITY_TYPE(type, role, description) \
|
|
285
|
+
dftracer_declare_entity_type(type, role, description);
|
|
286
|
+
#define DFTRACER_C_ENTITY_RELATE(relation, subject, object) \
|
|
287
|
+
dftracer_relate_entities(relation, subject, object);
|
|
288
|
+
#define DFTRACER_C_FUNCTION_RELATE(relation, entity) \
|
|
289
|
+
update_relation(data_fn, relation, entity);
|
|
290
|
+
#define DFTRACER_C_FUNCTION_USES(type, key) \
|
|
291
|
+
update_relation_entity(data_fn, DFT_REL_USED, type, key, DFT_STORE_MEMORY, \
|
|
292
|
+
NULL);
|
|
293
|
+
#define DFTRACER_C_FUNCTION_GENERATES(type, key) \
|
|
294
|
+
update_relation_entity(data_fn, DFT_REL_GENERATED, type, key, \
|
|
295
|
+
DFT_STORE_MEMORY, NULL);
|
|
296
|
+
#define DFTRACER_C_REGION_RELATE(name, relation, entity) \
|
|
297
|
+
update_relation(data_##name, relation, entity);
|
|
298
|
+
|
|
215
299
|
#ifdef __cplusplus
|
|
216
300
|
}
|
|
217
301
|
#endif
|
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (2,
|
|
21
|
+
__version__ = version = '2.2.0.post1.dev0'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 0, 'post1', '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.
|
|
3
|
+
Version: 2.2.0.post1.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
|