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.
Files changed (450) hide show
  1. {dftracer-2.2.0.post8.dev0/python/dftracer.egg-info → dftracer-2.2.0.post10.dev0}/PKG-INFO +1 -1
  2. dftracer-2.2.0.post10.dev0/docs/provenance.rst +367 -0
  3. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer-ideas.ipynb +1 -1
  4. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/enumeration.h +3 -12
  5. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer/_version.py +2 -2
  6. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0/python/dftracer.egg-info}/PKG-INFO +1 -1
  7. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/SOURCES.txt +1 -0
  8. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/scm_file_list.json +1 -0
  9. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/test_wheel.py +42 -2
  10. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/configuration_manager.h +15 -0
  11. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/CMakeLists.txt +14 -0
  12. dftracer-2.2.0.post10.dev0/test/check_public_headers.cmake +71 -0
  13. dftracer-2.2.0.post8.dev0/docs/provenance.rst +0 -213
  14. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.actrc +0 -0
  15. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.clang-format +0 -0
  16. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.coveragerc +0 -0
  17. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/README.md +0 -0
  18. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/devcontainer-dockerfile.json +0 -0
  19. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/devcontainer.json +0 -0
  20. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.devcontainer/docker-compose.yml +0 -0
  21. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/benchmark.yml +0 -0
  22. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/ci.yml +0 -0
  23. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/dlio-benchmark.yml +0 -0
  24. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/docker-publish.yml +0 -0
  25. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/format-check.yml +0 -0
  26. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/hdf5-mpi-trace-ci.yml +0 -0
  27. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/prerelease.yml +0 -0
  28. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/pull_request_event.json +0 -0
  29. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/python-publish.yml +0 -0
  30. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/valgrind-ci.yml +0 -0
  31. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.github/workflows/wheels.yml +0 -0
  32. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitignore +0 -0
  33. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/benchmark.sh +0 -0
  34. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/build-test.sh +0 -0
  35. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/distribute.sh +0 -0
  36. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/dlio-benchmark.sh +0 -0
  37. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/docs.sh +0 -0
  38. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/format-check.sh +0 -0
  39. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/hdf5-mpi-trace.sh +0 -0
  40. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/run-in-podman.sh +0 -0
  41. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/toolchain.sh +0 -0
  42. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/valgrind-gates.sh +0 -0
  43. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/flux-ci/wheels.sh +0 -0
  44. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/build.sh +0 -0
  45. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/build_dft.sh +0 -0
  46. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/common.yml +0 -0
  47. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/compare_summary.py +0 -0
  48. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/create_log_dir.sh +0 -0
  49. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/dlio_benchmark_test.sh +0 -0
  50. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/dlio_setup.sh +0 -0
  51. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_dlio_job.py +0 -0
  52. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_dlio_jobs.sh +0 -0
  53. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/generate_summary.sh +0 -0
  54. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/hip_corona_requirements.txt +0 -0
  55. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/hip_tuo_requirements.txt +0 -0
  56. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/post.sh +0 -0
  57. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/pre.sh +0 -0
  58. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/requirements.txt +0 -0
  59. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/run_dft_hip_test.sh +0 -0
  60. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/run_dlio_training_with_service.sh +0 -0
  61. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab/scripts/variables.sh +0 -0
  62. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitlab-ci.yml +0 -0
  63. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.gitpod.yml +0 -0
  64. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.migration/REVERT.md +0 -0
  65. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.migration/dftracer.md +0 -0
  66. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.readthedocs.yaml +0 -0
  67. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.vscode/launch.json +0 -0
  68. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/.vscode/settings.json +0 -0
  69. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/CITATION.cff +0 -0
  70. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/CMakeLists.txt +0 -0
  71. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/COVERAGE_QUICKREF.md +0 -0
  72. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/DOCKER_SETUP_SUMMARY.md +0 -0
  73. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/Dockerfile +0 -0
  74. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/LICENSE +0 -0
  75. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/MANIFEST.in +0 -0
  76. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/NOTICE +0 -0
  77. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/PACKAGE_VERSION +0 -0
  78. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/README.md +0 -0
  79. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/VERSION +0 -0
  80. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/autobuild.sh +0 -0
  81. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config-version.cmake.in +0 -0
  82. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.build.in +0 -0
  83. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.in +0 -0
  84. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer-config.cmake.install.in +0 -0
  85. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_config.hpp.in +0 -0
  86. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_config_dbg.hpp.in +0 -0
  87. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/configure_files/dftracer_module.lua.in +0 -0
  88. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/DFTracerVariorum.cmake +0 -0
  89. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindCUPTI.cmake +0 -0
  90. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindHWLOC.cmake +0 -0
  91. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindPAPI.cmake +0 -0
  92. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/FindVariorum.cmake +0 -0
  93. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/SetupCompiler.cmake +0 -0
  94. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/modules/dftracer-utils.cmake +0 -0
  95. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/patches/brahma_version_override.cmake +0 -0
  96. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/probes/papi_probe.c +0 -0
  97. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/has_fd.cpp +0 -0
  98. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/has_filesystem.cpp +0 -0
  99. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/cmake/tests/mpi_detect.c +0 -0
  100. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/compose-dev.yaml +0 -0
  101. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/dependency/CMakeLists.txt +0 -0
  102. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/dependency/manifest.txt +0 -0
  103. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docker/dl.Dockerfile +0 -0
  104. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docker/ior.Dockerfile +0 -0
  105. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/.clang-format +0 -0
  106. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/.gitignore +0 -0
  107. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/Makefile +0 -0
  108. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/_static/theme_overrides.css +0 -0
  109. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/ai_logging.rst +0 -0
  110. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/api.rst +0 -0
  111. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/bash_utilities.rst +0 -0
  112. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/build.rst +0 -0
  113. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/building_applications.rst +0 -0
  114. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/conf.py +0 -0
  115. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/coverage.md +0 -0
  116. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/debugging.rst +0 -0
  117. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/definitions.rst +0 -0
  118. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/developer-guide.rst +0 -0
  119. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_alcf_polaris.rst +0 -0
  120. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_build.rst +0 -0
  121. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_conf.rst +0 -0
  122. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_custom_columns.rst +0 -0
  123. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_distributed.rst +0 -0
  124. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dfanalyzer_overlap_analysis.rst +0 -0
  125. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/dftracer_service.rst +0 -0
  126. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/docker.rst +0 -0
  127. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/examples.rst +0 -0
  128. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/gpu_tracing.rst +0 -0
  129. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/overlap-analysis/overlap-analysis-summary.png +0 -0
  130. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/dask-scheduler-monitoring.png +0 -0
  131. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/run-scheduler.png +0 -0
  132. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-add-port-button.png +0 -0
  133. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-added-port.png +0 -0
  134. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dfanalyzer/polaris/vscode-ports-tab.png +0 -0
  135. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dftracer-logo-light.png +0 -0
  136. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dftracer-logo.png +0 -0
  137. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/dlio-profiler-logo.png +0 -0
  138. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-flags-confirm-1.png +0 -0
  139. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-flags-confirm-2.png +0 -0
  140. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-interface.png +0 -0
  141. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-result-example-pread.png +0 -0
  142. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-textbox-2.png +0 -0
  143. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-sql-textbox.png +0 -0
  144. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-ui-confirm.png +0 -0
  145. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/perfetto/perfetto-viz.png +0 -0
  146. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/1000genome.png +0 -0
  147. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_dur.png +0 -0
  148. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_graph.png +0 -0
  149. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/Montage_summary.png +0 -0
  150. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/images/tracing/trace.png +0 -0
  151. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/index.rst +0 -0
  152. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/limitations.rst +0 -0
  153. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/migration.rst +0 -0
  154. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/models.rst +0 -0
  155. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/omnistat.rst +0 -0
  156. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/overview.rst +0 -0
  157. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/pegasus_genome.rst +0 -0
  158. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/pegasus_montage.rst +0 -0
  159. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/perfetto.rst +0 -0
  160. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/requirements.txt +0 -0
  161. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/style-guides.rst +0 -0
  162. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/testing.rst +0 -0
  163. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/trace_format.rst +0 -0
  164. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/utilities.rst +0 -0
  165. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/docs/variorum.rst +0 -0
  166. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer-distributed.ipynb +0 -0
  167. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/dfanalyzer.ipynb +0 -0
  168. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/bw_timeline.png +0 -0
  169. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/dask-dashboard-load.png +0 -0
  170. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/images/xfer_timeline.png +0 -0
  171. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/requirements.txt +0 -0
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {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
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/dfanalyzer/test-trace.pfw.gz +0 -0
  221. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/README.md +0 -0
  222. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/data.png +0 -0
  223. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/example.ipynb +0 -0
  224. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/requirement.txt +0 -0
  225. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/test_data1.pfw +0 -0
  226. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/graph_visualization/vis.png +0 -0
  227. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/Makefile +0 -0
  228. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/README.md +0 -0
  229. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/papi_mpi.cpp +0 -0
  230. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/examples/papi_standalone/papi_single_node.cpp +0 -0
  231. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/constants.h +0 -0
  232. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/cpp_typedefs.h +0 -0
  233. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/entity.h +0 -0
  234. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/core/common/typedef.h +0 -0
  235. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/include/dftracer/dftracer.h +0 -0
  236. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/Dockerfile.dev +0 -0
  237. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/Dockerfile.prod +0 -0
  238. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/QUICK_REFERENCE.md +0 -0
  239. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/README.md +0 -0
  240. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/infrastructure/docker/build-multiplatform.sh +0 -0
  241. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/pyproject.toml +0 -0
  242. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer/__init__.py +0 -0
  243. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/dependency_links.txt +0 -0
  244. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/not-zip-safe +0 -0
  245. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/requires.txt +0 -0
  246. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/python/dftracer.egg-info/top_level.txt +0 -0
  247. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/results/cases.csv +0 -0
  248. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/results/overhead.csv +0 -0
  249. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/README_COVERAGE.md +0 -0
  250. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/check_coverage.sh +0 -0
  251. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/coverage_after_autobuild.sh +0 -0
  252. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_anonymize +0 -0
  253. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_compact +0 -0
  254. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_compact_by_pid +0 -0
  255. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_create_index +0 -0
  256. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_event_count +0 -0
  257. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_merge +0 -0
  258. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_pgzip +0 -0
  259. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_sanitize +0 -0
  260. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_split +0 -0
  261. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/dftracer_validate +0 -0
  262. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/formatting/autoformat.sh +0 -0
  263. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/formatting/check-formatting.sh +0 -0
  264. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/generate_coverage.sh +0 -0
  265. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/generate_coverage_report.sh +0 -0
  266. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/git_sparse_clone_interactive +0 -0
  267. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/git_sparse_push_interactive +0 -0
  268. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/repo/README.md +0 -0
  269. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/repo/update_version.sh +0 -0
  270. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/script/valgrind_gate.py +0 -0
  271. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/check_papi_trace.py +0 -0
  272. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/check_variorum_trace.py +0 -0
  273. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/dlio_non_valgrind_runner.py +0 -0
  274. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/requirements-valgrind-runners.txt +0 -0
  275. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/run_hdf5_mpi_ci_local.sh +0 -0
  276. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_ctest_python_runner.py +0 -0
  277. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_ctest_runner.py +0 -0
  278. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/valgrind_dlio_runner.py +0 -0
  279. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/README.md +0 -0
  280. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/build_deps.sh +0 -0
  281. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/build_wheels.sh +0 -0
  282. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/bundle_wheel.py +0 -0
  283. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/manifest.py +0 -0
  284. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/scripts/wheel/repair_wheel.sh +0 -0
  285. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/setup.cfg +0 -0
  286. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/setup.py +0 -0
  287. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/aggregator.cpp +0 -0
  288. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/aggregator.h +0 -0
  289. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/rules.cpp +0 -0
  290. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/aggregator/rules.h +0 -0
  291. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/hdf5.cpp +0 -0
  292. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/hdf5.h +0 -0
  293. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpi.cpp +0 -0
  294. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpi.h +0 -0
  295. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpiio.cpp +0 -0
  296. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/mpiio.h +0 -0
  297. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/posix.cpp +0 -0
  298. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/posix.h +0 -0
  299. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/stdio.cpp +0 -0
  300. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/brahma/stdio.h +0 -0
  301. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/buffer/buffer.cpp +0 -0
  302. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/buffer/buffer.h +0 -0
  303. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/datastructure.cpp +0 -0
  304. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/datastructure.h +0 -0
  305. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/dftracer_main.cpp +0 -0
  306. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/dftracer_main.h +0 -0
  307. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/error.h +0 -0
  308. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/event_loop.cpp +0 -0
  309. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/event_loop.h +0 -0
  310. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/logging.h +0 -0
  311. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/macros.h +0 -0
  312. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/common/singleton.h +0 -0
  313. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/compression/zlib_compression.cpp +0 -0
  314. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/compression/zlib_compression.h +0 -0
  315. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/datastructure.cpp +0 -0
  316. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/df_logger.cpp +0 -0
  317. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/df_logger.h +0 -0
  318. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer.cpp +0 -0
  319. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer_preload.cpp +0 -0
  320. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/dftracer_preload.h +0 -0
  321. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/finstrument/functions.cpp +0 -0
  322. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/finstrument/functions.h +0 -0
  323. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/cuda/intercept.cpp +0 -0
  324. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/cuda/intercept.h +0 -0
  325. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/generic_function.h +0 -0
  326. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/hip/intercept.cpp +0 -0
  327. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/hip/intercept.h +0 -0
  328. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/papi/counters.cpp +0 -0
  329. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/function/papi/counters.h +0 -0
  330. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/serialization/json_line.cpp +0 -0
  331. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/serialization/json_line.h +0 -0
  332. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/configuration_manager.cpp +0 -0
  333. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/md5.cpp +0 -0
  334. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/md5.h +0 -0
  335. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/posix_bypass.cpp +0 -0
  336. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/posix_bypass.h +0 -0
  337. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/stdio_bypass.cpp +0 -0
  338. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/stdio_bypass.h +0 -0
  339. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/utils.cpp +0 -0
  340. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/utils/utils.h +0 -0
  341. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/writer/stdio_writer.cpp +0 -0
  342. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/core/writer/stdio_writer.h +0 -0
  343. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer.cpp +0 -0
  344. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer.cpp.in +0 -0
  345. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/python/dftracer_dbg.cpp +0 -0
  346. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/common/datastructure.h +0 -0
  347. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/service.cpp +0 -0
  348. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/service.h +0 -0
  349. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/cpu_collector.cpp +0 -0
  350. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/cpu_collector.h +0 -0
  351. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/io_collector.cpp +0 -0
  352. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/io_collector.h +0 -0
  353. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/memory_collector.cpp +0 -0
  354. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/memory_collector.h +0 -0
  355. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/network_collector.cpp +0 -0
  356. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/network_collector.h +0 -0
  357. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/omnistat_collector.cpp +0 -0
  358. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/omnistat_collector.h +0 -0
  359. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_factory.cpp +0 -0
  360. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_factory.h +0 -0
  361. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/telemetry_interface.h +0 -0
  362. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_collector.cpp +0 -0
  363. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_collector.h +0 -0
  364. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/src/dftracer/service/telemetry/variorum_power_layout.h +0 -0
  365. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/analysis_ior.py +0 -0
  366. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test.c +0 -0
  367. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_c_api_coverage.c +0 -0
  368. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_entity.c +0 -0
  369. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5.c +0 -0
  370. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5_mpi.c +0 -0
  371. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_hdf5_parallel.c +0 -0
  372. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_mpi.c +0 -0
  373. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_posix_fortify.c +0 -0
  374. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/test_posix_parity.c +0 -0
  375. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/c/testlib.c +0 -0
  376. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_entity_trace.py +0 -0
  377. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_events_present.sh +0 -0
  378. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file.sh +0 -0
  379. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file_at_least.sh +0 -0
  380. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/check_file_not.sh +0 -0
  381. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test.cpp +0 -0
  382. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_cpp_api_coverage.cpp +0 -0
  383. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_entity.cpp +0 -0
  384. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5.cpp +0 -0
  385. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5_mpi.cpp +0 -0
  386. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_hdf5_parallel.cpp +0 -0
  387. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cpp/test_mpi.cpp +0 -0
  388. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cuda/check_cuda_trace.py +0 -0
  389. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/cuda/test_cuda.cpp +0 -0
  390. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/dfanalyzer/CMakeLists.txt +0 -0
  391. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/dlio_benchmark/CMakeLists.txt +0 -0
  392. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/ignore_result.h +0 -0
  393. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/CMakeLists.txt +0 -0
  394. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/test_external.cpp +0 -0
  395. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_compatible/CMakeLists.txt +0 -0
  396. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_compatible/test_version.cpp +0 -0
  397. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_exact/CMakeLists.txt +0 -0
  398. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_exact/test_version.cpp +0 -0
  399. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_higher_minor/CMakeLists.txt +0 -0
  400. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_higher_minor/test_version.cpp +0 -0
  401. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_incompatible_major/CMakeLists.txt +0 -0
  402. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_incompatible_major/test_version.cpp +0 -0
  403. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_minimum/CMakeLists.txt +0 -0
  404. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_minimum/test_version.cpp +0 -0
  405. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_old_major/CMakeLists.txt +0 -0
  406. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_old_major/test_version.cpp +0 -0
  407. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_wrong_exact/CMakeLists.txt +0 -0
  408. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/package_find/version_wrong_exact/test_version.cpp +0 -0
  409. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/CMakeLists.txt +0 -0
  410. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/darshan_analyzer_main.ipynb +0 -0
  411. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/otf2_distributed_reader.ipynb +0 -0
  412. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/analysis/recorder_distributed_reader.ipynb +0 -0
  413. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_darshan.py +0 -0
  414. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_recorder.py +0 -0
  415. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/load_scorep.py +0 -0
  416. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.cpp +0 -0
  417. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.csv +0 -0
  418. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/paper/overhead.py +0 -0
  419. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/ai_logging.py +0 -0
  420. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/cuda_test.py +0 -0
  421. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/dynamo_test.py +0 -0
  422. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/hip_test.py +0 -0
  423. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/python_test.py +0 -0
  424. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/requirements.txt +0 -0
  425. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/test.py +0 -0
  426. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/py/test_python_api_coverage.py +0 -0
  427. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/CMakeLists.txt +0 -0
  428. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/check.h +0 -0
  429. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/file.dat +0 -0
  430. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/mmap +0 -0
  431. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/mmap.cpp +0 -0
  432. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregated_key_hash.cpp +0 -0
  433. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregated_value.cpp +0 -0
  434. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_aggregator.cpp +0 -0
  435. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_configuration.cpp +0 -0
  436. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_entity.cpp +0 -0
  437. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_omnistat.cpp +0 -0
  438. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_serialization.cpp +0 -0
  439. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_service.cpp +0 -0
  440. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_trace_event_type.cpp +0 -0
  441. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/unit/test_variorum.cpp +0 -0
  442. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/util.h +0 -0
  443. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/valgrind/dlio_known_external.supp +0 -0
  444. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/valgrind/test_cpp_known_syscall.supp +0 -0
  445. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/benchmark-rules.yaml +0 -0
  446. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/conf.yaml +0 -0
  447. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/rules.yaml +0 -0
  448. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/test/yaml/selective-aggregation-rules.yaml +0 -0
  449. {dftracer-2.2.0.post8.dev0 → dftracer-2.2.0.post10.dev0}/tools/CMakeLists.txt +0 -0
  450. {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.post8.dev0
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.
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
- name: dftracer-2.2.0.post8.dev0/examples/dfanalyzer/dfanalyzer-ideas.ipynb
2
+ name: dftracer-2.2.0.post10.dev0/examples/dfanalyzer/dfanalyzer-ideas.ipynb
3
3
  size: 52418033 bytes
4
4
  sha256: e4b283c4e2e7dd17e9f5452b2fb101d1d9f32d4dd13fa56742629faea6700b55
@@ -4,7 +4,9 @@
4
4
 
5
5
  #ifndef DFTRACER_ENUMERATION_H
6
6
  #define DFTRACER_ENUMERATION_H
7
- #include <cpp-logger/logger.h>
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.post8.dev0'
22
- __version_tuple__ = version_tuple = (2, 2, 0, 'post8', 'dev0')
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.post8.dev0
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
@@ -364,6 +364,7 @@ test/check_events_present.sh
364
364
  test/check_file.sh
365
365
  test/check_file_at_least.sh
366
366
  test/check_file_not.sh
367
+ test/check_public_headers.cmake
367
368
  test/ignore_result.h
368
369
  test/util.h
369
370
  test/c/test.c
@@ -368,6 +368,7 @@
368
368
  "test/check_file.sh",
369
369
  "test/check_file_at_least.sh",
370
370
  "test/check_file_not.sh",
371
+ "test/check_public_headers.cmake",
371
372
  "test/cpp/test.cpp",
372
373
  "test/cpp/test_cpp_api_coverage.cpp",
373
374
  "test/cpp/test_entity.cpp",
@@ -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. a real trace is produced: dftracer_service + an LD_PRELOAD'd workload,
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
- 6. the pydftracer Python API layer, if installed, can log through the wheel
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()