discopop 4.0.1__tar.gz → 4.1.0__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 (559) hide show
  1. {discopop-4.0.1 → discopop-4.1.0}/PKG-INFO +1 -1
  2. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/PKG-INFO +1 -1
  3. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/SOURCES.txt +54 -0
  4. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/entry_points.txt +5 -0
  5. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/requires.txt +1 -0
  6. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/__main__.py +6 -0
  7. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/Node.py +6 -0
  8. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/PatternBase.py +10 -0
  9. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/discopop_explorer.py +7 -0
  10. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/gephi.py +1 -1
  11. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/parent.py +17 -1
  12. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_1.py +1 -1
  13. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_2.py +2 -2
  14. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_3.py +2 -2
  15. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_6.py +1 -1
  16. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/do_all_detector.py +23 -1
  17. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/reduction_detector.py +23 -1
  18. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/collect_statistics.py +4 -0
  19. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/boxplot.py +12 -6
  20. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/cc_dictionary.py +10 -6
  21. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/total.py +14 -6
  22. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/num_function_calls.py +2 -0
  23. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utils.py +2 -2
  24. discopop-4.1.0/discopop_library/Aliases/aliases.py +9 -0
  25. discopop-4.1.0/discopop_library/DependencyComparator/DependencyComparatorArguments.py +20 -0
  26. discopop-4.1.0/discopop_library/DependencyComparator/__main__.py +45 -0
  27. discopop-4.1.0/discopop_library/DependencyComparator/dependency_comparator.py +91 -0
  28. discopop-4.1.0/discopop_library/EmpiricalAutotuning/ArgumentClasses.py +64 -0
  29. discopop-4.1.0/discopop_library/EmpiricalAutotuning/Autotuner.py +266 -0
  30. discopop-4.1.0/discopop_library/EmpiricalAutotuning/Classes/CodeConfiguration.py +197 -0
  31. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Classes/ExecutionResult.py +12 -2
  32. discopop-4.1.0/discopop_library/EmpiricalAutotuning/__main__.py +66 -0
  33. discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/check_single_combination.py +138 -0
  34. discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/dump_greedy.py.txt +164 -0
  35. discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination.py +95 -0
  36. discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination_with_refinement.py +165 -0
  37. discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/measure_only.py +95 -0
  38. discopop-4.1.0/discopop_library/EmpiricalAutotuning/output/intermediate.py +61 -0
  39. discopop-4.1.0/discopop_library/EmpiricalAutotuning/priorities.py +48 -0
  40. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/utils.py +1 -5
  41. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/FolderStructure/setup.py +27 -8
  42. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/FolderStructure/teardown.py +18 -8
  43. discopop-4.1.0/discopop_library/HostpotLoader/utilities.py +78 -0
  44. discopop-4.1.0/discopop_library/PreProcessor/PreProcessorArguments.py +25 -0
  45. discopop-4.1.0/discopop_library/PreProcessor/__main__.py +45 -0
  46. discopop-4.1.0/discopop_library/PreProcessor/demangle/data_xml.py +72 -0
  47. discopop-4.1.0/discopop_library/PreProcessor/demangle/dependency_metadata.py +84 -0
  48. discopop-4.1.0/discopop_library/PreProcessor/demangle/driver.py +42 -0
  49. discopop-4.1.0/discopop_library/PreProcessor/demangle/dynamic_dependencies.py +112 -0
  50. discopop-4.1.0/discopop_library/PreProcessor/demangle/reduction.py +74 -0
  51. discopop-4.1.0/discopop_library/PreProcessor/demangle/static_dependencies.py +112 -0
  52. discopop-4.1.0/discopop_library/PreProcessor/demangle/utilities.py +26 -0
  53. discopop-4.1.0/discopop_library/PreProcessor/pre_processor.py +41 -0
  54. discopop-4.1.0/discopop_library/ProjectManager/ProjectManager.py +53 -0
  55. discopop-4.1.0/discopop_library/ProjectManager/ProjectManagerArguments.py +74 -0
  56. discopop-4.1.0/discopop_library/ProjectManager/__main__.py +73 -0
  57. discopop-4.1.0/discopop_library/ProjectManager/configurations/copying.py +86 -0
  58. discopop-4.1.0/discopop_library/ProjectManager/configurations/deletion.py +26 -0
  59. discopop-4.1.0/discopop_library/ProjectManager/configurations/execution.py +170 -0
  60. discopop-4.1.0/discopop_library/ProjectManager/reports/console.py +107 -0
  61. discopop-4.1.0/discopop_library/ProjectManager/reports/csv.py +98 -0
  62. discopop-4.1.0/discopop_library/ProjectManager/reports/efficiency.py +137 -0
  63. discopop-4.1.0/discopop_library/ProjectManager/reports/execution_time.py +128 -0
  64. discopop-4.1.0/discopop_library/ProjectManager/reports/full.py +64 -0
  65. discopop-4.1.0/discopop_library/ProjectManager/reports/speedup.py +137 -0
  66. discopop-4.1.0/discopop_library/ProjectManager/utilities/CLI/listConfiguration.py +344 -0
  67. discopop-4.1.0/discopop_library/ProjectManager/utilities/deriveSettingsFiles.py +56 -0
  68. discopop-4.1.0/discopop_library/ProjectManager/utilities/initializeDirectories.py +33 -0
  69. discopop-4.1.0/discopop_library/ProjectManager/utilities/initializeFiles.py +65 -0
  70. discopop-4.1.0/discopop_library/ProjectManager/utilities/reset.py +41 -0
  71. {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/SanityChecker}/ArgumentClasses.py +10 -7
  72. {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/SanityChecker}/Classes/CodeConfiguration.py +34 -45
  73. discopop-4.1.0/discopop_library/SanityChecker/Classes/ExecutionResult.py +32 -0
  74. discopop-4.1.0/discopop_library/SanityChecker/SanityChecker.py +144 -0
  75. discopop-4.1.0/discopop_library/SanityChecker/Types.py +16 -0
  76. discopop-4.1.0/discopop_library/SanityChecker/__main__.py +62 -0
  77. discopop-4.1.0/discopop_library/SanityChecker/utils.py +25 -0
  78. discopop-4.1.0/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
  79. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/CostModel.py +1 -1
  80. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_force_branch_end_data_movement.py +1 -1
  81. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement_prior_to_call.py +1 -1
  82. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/ExtrapInterpolatedMicrobench.py +1 -1
  83. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/Microbench.py +2 -2
  84. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/utils.py +1 -1
  85. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/PETParser.py +3 -1
  86. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Variables/ExperimentUtils.py +1 -1
  87. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/ContextObjectUtils.py +1 -1
  88. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextNode.py +1 -1
  89. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/DeviceSwitch.py +1 -1
  90. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/SynchronizationTrigger.py +1 -1
  91. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/Network.py +1 -1
  92. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/System.py +1 -1
  93. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/CPU.py +1 -1
  94. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/Device.py +1 -1
  95. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/GPU.py +1 -1
  96. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/system_utils.py +1 -1
  97. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/plotting/CostModels.py +1 -1
  98. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/presentation/OptionTable.py +1 -1
  99. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/queries/ValueTableQuery.py +1 -1
  100. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evaluate.py +1 -1
  101. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evaluate_all_decision_combinations.py +1 -1
  102. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evolutionary_algorithm.py +1 -1
  103. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/greedy.py +1 -1
  104. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/do_all.py +1 -1
  105. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/optimizers/loop_collapse.py +1 -1
  106. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization/RandomSamples.py +1 -1
  107. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization/TopDown.py +1 -1
  108. discopop-4.1.0/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
  109. discopop-4.1.0/discopop_library/global_data/version/VERSION +1 -0
  110. discopop-4.1.0/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
  111. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/global_data/version/__pycache__/utils.cpython-38.pyc +0 -0
  112. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/PatternStorage.py +8 -0
  113. discopop-4.1.0/requirements.txt +45 -0
  114. {discopop-4.0.1 → discopop-4.1.0}/setup.py +7 -1
  115. discopop-4.1.0/test/wip_end_to_end/do_all/stack_access/various/case_4/__init__.py +0 -0
  116. discopop-4.1.0/test/wip_end_to_end/reduction_pattern/__init__.py +0 -0
  117. discopop-4.1.0/test/wip_end_to_end/reduction_pattern/negative/__init__.py +0 -0
  118. discopop-4.1.0/test/wip_end_to_end/reduction_pattern/negative/case_2/__init__.py +0 -0
  119. discopop-4.1.0/test/wip_end_to_end/sharing_clauses/__init__.py +0 -0
  120. discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/__init__.py +0 -0
  121. discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/first_private/__init__.py +0 -0
  122. discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/first_private/case_2/__init__.py +0 -0
  123. discopop-4.0.1/discopop_library/EmpiricalAutotuning/Autotuner.py +0 -302
  124. discopop-4.0.1/discopop_library/EmpiricalAutotuning/__main__.py +0 -52
  125. discopop-4.0.1/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
  126. discopop-4.0.1/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
  127. discopop-4.0.1/discopop_library/global_data/version/VERSION +0 -1
  128. discopop-4.0.1/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
  129. discopop-4.0.1/requirements.txt +0 -58
  130. {discopop-4.0.1 → discopop-4.1.0}/LICENSE +0 -0
  131. {discopop-4.0.1 → discopop-4.1.0}/MANIFEST.in +0 -0
  132. {discopop-4.0.1 → discopop-4.1.0}/README.md +0 -0
  133. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/dependency_links.txt +0 -0
  134. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/top_level.txt +0 -0
  135. {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/zip-safe +0 -0
  136. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/__init__.py +0 -0
  137. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/LineID.py +0 -0
  138. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/MemoryRegion.py +0 -0
  139. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/NodeID.py +0 -0
  140. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/__init__.py +0 -0
  141. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/CUNode.py +0 -0
  142. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/Dependency.py +0 -0
  143. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/DummyNode.py +0 -0
  144. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/FunctionNode.py +0 -0
  145. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/LoopNode.py +0 -0
  146. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/NodeT.py +0 -0
  147. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/PEGraphX.py +0 -0
  148. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/__init__.py +0 -0
  149. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/__init__.py +0 -0
  150. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/PatternInfo.py +0 -0
  151. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/__init__.py +0 -0
  152. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/variable.py +0 -0
  153. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/DepType.py +0 -0
  154. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/EdgeType.py +0 -0
  155. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/MWType.py +0 -0
  156. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/NodeType.py +0 -0
  157. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/__init__.py +0 -0
  158. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/__init__.py +0 -0
  159. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/__init__.py +0 -0
  160. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/json.py +0 -0
  161. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/__init__.py +0 -0
  162. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/check_reachability.py +0 -0
  163. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/depends_ignore_readonly.py +0 -0
  164. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_loop_index.py +0 -0
  165. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_passed_by_reference.py +0 -0
  166. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_predecessor.py +0 -0
  167. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_readonly_inside_loop_body.py +0 -0
  168. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_reduction_var_by_name.py +0 -0
  169. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_scalar_val.py +0 -0
  170. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/__init__.py +0 -0
  171. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/edges.py +0 -0
  172. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/memory_regions.py +0 -0
  173. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/nodes.py +0 -0
  174. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/paths.py +0 -0
  175. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/reductions.py +0 -0
  176. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/subtree.py +0 -0
  177. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/variables.py +0 -0
  178. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/__init__.py +0 -0
  179. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/children.py +0 -0
  180. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/successors.py +0 -0
  181. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/unused/__init__.py +0 -0
  182. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/unused/unused_functions.py +0 -0
  183. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/__init__.py +0 -0
  184. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/json_serializer.py +0 -0
  185. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/parallel_utils.py +0 -0
  186. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detection.py +0 -0
  187. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/__init__.py +0 -0
  188. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/CombinedGPURegions.py +0 -0
  189. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/__init__.py +0 -0
  190. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Aliases.py +0 -0
  191. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Dependency.py +0 -0
  192. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/EntryPoint.py +0 -0
  193. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Enums.py +0 -0
  194. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/ExitPoint.py +0 -0
  195. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Update.py +0 -0
  196. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/__init__.py +0 -0
  197. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/combined_gpu_pattern_detector.py +0 -0
  198. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/prepare_metadata.py +0 -0
  199. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_4.py +0 -0
  200. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_5.py +0 -0
  201. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/utilities.py +0 -0
  202. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/device_updates.py +0 -0
  203. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/geometric_decomposition_detector.py +0 -0
  204. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/pipeline_detector.py +0 -0
  205. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPULoop.py +0 -0
  206. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPUMemory.py +0 -0
  207. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPURegions.py +0 -0
  208. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/__init__.py +0 -0
  209. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/gpu_pattern_detector.py +0 -0
  210. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/utils.py +0 -0
  211. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/__init__.py +0 -0
  212. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/alias_detection.py +0 -0
  213. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/classes.py +0 -0
  214. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/filter.py +0 -0
  215. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/postprocessor.py +0 -0
  216. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/preprocessor.py +0 -0
  217. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/__init__.py +0 -0
  218. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/auxiliary.py +0 -0
  219. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/barriers.py +0 -0
  220. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/data_sharing_clauses.py +0 -0
  221. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/dependency_clauses.py +0 -0
  222. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/tasks.py +0 -0
  223. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/task_parallelism_detector.py +0 -0
  224. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/tp_utils.py +0 -0
  225. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/plugins/__init__.py +0 -0
  226. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/plugins/pipeline.py +0 -0
  227. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/test/__init__.py +0 -0
  228. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/PEGraphConstructionUtilities.py +0 -0
  229. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/ParserUtilities.py +0 -0
  230. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/__init__.py +0 -0
  231. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/DependenceItem.py +0 -0
  232. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/LoopData.py +0 -0
  233. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/__init__.py +0 -0
  234. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/parser.py +0 -0
  235. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/__init__.py +0 -0
  236. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/general/__init__.py +0 -0
  237. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/general/generate_Data_CUInst.py +0 -0
  238. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/__init__.py +0 -0
  239. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/__init__.py +0 -0
  240. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/subtree.py +0 -0
  241. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/maximum_call_path_depth.py +0 -0
  242. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/num_function_calls.py +0 -0
  243. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/output_statistics.py +0 -0
  244. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_call_path_depths.py +0 -0
  245. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_cyclomatic_complexity.py +0 -0
  246. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_lines_of_code.py +0 -0
  247. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/__init__.py +0 -0
  248. {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/call_path_depth.py +0 -0
  249. {discopop-4.0.1/discopop_library/CodeGenerator → discopop-4.1.0/discopop_library/Aliases}/__init__.py +0 -0
  250. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ArgumentClasses/GeneralArguments.py +0 -0
  251. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/CodeGenerator.py +0 -0
  252. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/CodeGeneratorArguments.py +0 -0
  253. {discopop-4.0.1/discopop_library/CodeGenerator/classes → discopop-4.1.0/discopop_library/CodeGenerator}/__init__.py +0 -0
  254. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/ContentBuffer.py +0 -0
  255. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Enums.py +0 -0
  256. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Line.py +0 -0
  257. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Pragma.py +0 -0
  258. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/UnpackedSuggestion.py +0 -0
  259. {discopop-4.0.1/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover → discopop-4.1.0/discopop_library/CodeGenerator/classes}/__init__.py +0 -0
  260. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/ArgumentClasses.py +0 -0
  261. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/GEPDependencyRemover.py +0 -0
  262. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/Types.py +0 -0
  263. {discopop-4.0.1/discopop_library/Compatibility/LegacyDiscoPoP → discopop-4.1.0/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover}/__init__.py +0 -0
  264. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/__main__.py +0 -0
  265. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/utils.py +0 -0
  266. {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/Compatibility/LegacyDiscoPoP}/__init__.py +0 -0
  267. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/ConfigProviderArguments.py +0 -0
  268. {discopop-4.0.1/discopop_library/FolderStructure → discopop-4.1.0/discopop_library/ConfigProvider}/__init__.py +0 -0
  269. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/__main__.py +0 -0
  270. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/assets/.gitignore +0 -0
  271. {discopop-4.0.1/discopop_library/JSONHandler → discopop-4.1.0/discopop_library/ConfigProvider/assets}/__init__.py +0 -0
  272. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/config_provider.py +0 -0
  273. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/DependencyMetadata/compare_metadata.py +0 -0
  274. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Statistics/StatisticsGraph.py +0 -0
  275. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Types.py +0 -0
  276. {discopop-4.0.1/discopop_library/LineMapping → discopop-4.1.0/discopop_library/EmpiricalAutotuning}/__init__.py +0 -0
  277. {discopop-4.0.1/discopop_library/MemoryRegions → discopop-4.1.0/discopop_library/FolderStructure}/__init__.py +0 -0
  278. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/GlobalLogger/setup.py +0 -0
  279. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotLoaderArguments.py +0 -0
  280. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotNodeType.py +0 -0
  281. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotType.py +0 -0
  282. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/hostpot_loader.py +0 -0
  283. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/JSONHandler/JSONHandler.py +0 -0
  284. {discopop-4.0.1/discopop_library/PatchApplicator → discopop-4.1.0/discopop_library/JSONHandler}/__init__.py +0 -0
  285. {discopop-4.0.1/discopop_library/PatchGenerator → discopop-4.1.0/discopop_library/LineMapping}/__init__.py +0 -0
  286. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/delete.py +0 -0
  287. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/diff_modifications.py +0 -0
  288. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/initialize.py +0 -0
  289. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/load.py +0 -0
  290. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/save.py +0 -0
  291. {discopop-4.0.1/discopop_library/PathManagement → discopop-4.1.0/discopop_library/MemoryRegions}/__init__.py +0 -0
  292. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/MemoryRegions/utils.py +0 -0
  293. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/PatchApplicatorArguments.py +0 -0
  294. {discopop-4.0.1/discopop_library → discopop-4.1.0/discopop_library/PatchApplicator}/__init__.py +0 -0
  295. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/__main__.py +0 -0
  296. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/apply.py +0 -0
  297. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/clear.py +0 -0
  298. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/list.py +0 -0
  299. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/load.py +0 -0
  300. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/patch_applicator.py +0 -0
  301. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/rollback.py +0 -0
  302. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/PatchGeneratorArguments.py +0 -0
  303. {discopop-4.0.1/discopop_library/discopop_optimizer/CostModels/DataTransfer → discopop-4.1.0/discopop_library/PatchGenerator}/__init__.py +0 -0
  304. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/__main__.py +0 -0
  305. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/diffs.py +0 -0
  306. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/from_json_patterns.py +0 -0
  307. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/from_optimizer_output.py +0 -0
  308. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/patch_generator.py +0 -0
  309. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PathManagement/PathManagement.py +0 -0
  310. {discopop-4.0.1/discopop_library/discopop_optimizer/CostModels → discopop-4.1.0/discopop_library/PathManagement}/__init__.py +0 -0
  311. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatternIdManagement/unique_pattern_id.py +0 -0
  312. {discopop-4.0.1/discopop_library/discopop_optimizer/DataTransfers → discopop-4.1.0/discopop_library/PreProcessor}/__init__.py +0 -0
  313. {discopop-4.0.1/discopop_library/discopop_optimizer/Microbench → discopop-4.1.0/discopop_library/ProjectManager}/__init__.py +0 -0
  314. {discopop-4.0.1/discopop_library/discopop_optimizer/PETParser/DataAccesses → discopop-4.1.0/discopop_library/ProjectManager/utilities/CLI}/__init__.py +0 -0
  315. {discopop-4.0.1/discopop_library/discopop_optimizer/PETParser → discopop-4.1.0/discopop_library/ProjectManager/utilities}/__init__.py +0 -0
  316. {discopop-4.0.1/discopop_library/discopop_optimizer/Variables → discopop-4.1.0/discopop_library/SanityChecker}/__init__.py +0 -0
  317. {discopop-4.0.1/discopop_library/discopop_optimizer → discopop-4.1.0/discopop_library}/__init__.py +0 -0
  318. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/DataTransfer/DataTransferCosts.py +0 -0
  319. {discopop-4.0.1/discopop_library/discopop_optimizer/bindings → discopop-4.1.0/discopop_library/discopop_optimizer/CostModels/DataTransfer}/__init__.py +0 -0
  320. {discopop-4.0.1/discopop_library/discopop_optimizer/classes → discopop-4.1.0/discopop_library/discopop_optimizer/CostModels}/__init__.py +0 -0
  321. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/utilities.py +0 -0
  322. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/DataTransfers.py +0 -0
  323. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/NewDataTransfers.py +0 -0
  324. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/context → discopop-4.1.0/discopop_library/discopop_optimizer/DataTransfers}/__init__.py +0 -0
  325. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/calculate_configuration_data_movement.py +0 -0
  326. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement.py +0 -0
  327. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/DelaunayInterpolatedMicrobench.py +0 -0
  328. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/MicrobenchParser.py +0 -0
  329. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/MixedMicrobench.py +0 -0
  330. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/PureDataMicrobench.py +0 -0
  331. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/edges → discopop-4.1.0/discopop_library/discopop_optimizer/Microbench}/__init__.py +0 -0
  332. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/OptimizationGraph.py +0 -0
  333. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/OptimizerArguments.py +0 -0
  334. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/DataAccesses/CalculateUpdates.py +0 -0
  335. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/DataAccesses/FromCUs.py +0 -0
  336. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/enums → discopop-4.1.0/discopop_library/discopop_optimizer/PETParser/DataAccesses}/__init__.py +0 -0
  337. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/nodes → discopop-4.1.0/discopop_library/discopop_optimizer/PETParser}/__init__.py +0 -0
  338. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/AddRangesToUpdates.py +0 -0
  339. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/LoopInitializationUpdates.py +0 -0
  340. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveDuplicatedUpdates.py +0 -0
  341. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveLoopIndexUpdates.py +0 -0
  342. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveSameDeviceUpdates.py +0 -0
  343. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/main.py +0 -0
  344. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Variables/Experiment.py +0 -0
  345. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/system → discopop-4.1.0/discopop_library/discopop_optimizer/Variables}/__init__.py +0 -0
  346. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/system/devices → discopop-4.1.0/discopop_library/discopop_optimizer}/__init__.py +0 -0
  347. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/__main__.py +0 -0
  348. {discopop-4.0.1/discopop_library/discopop_optimizer/classes/types → discopop-4.1.0/discopop_library/discopop_optimizer/bindings}/__init__.py +0 -0
  349. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/bindings/utilities.py +0 -0
  350. {discopop-4.0.1/discopop_library/discopop_optimizer/gui → discopop-4.1.0/discopop_library/discopop_optimizer/classes}/__init__.py +0 -0
  351. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/ContextObject.py +0 -0
  352. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/Update.py +0 -0
  353. {discopop-4.0.1/discopop_library/discopop_optimizer/gui/plotting → discopop-4.1.0/discopop_library/discopop_optimizer/classes/context}/__init__.py +0 -0
  354. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/CallEdge.py +0 -0
  355. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/ChildEdge.py +0 -0
  356. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/DataFlowEdge.py +0 -0
  357. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/GenericEdge.py +0 -0
  358. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/MutuallyExclusiveEdge.py +0 -0
  359. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/OptionEdge.py +0 -0
  360. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/RequirementEdge.py +0 -0
  361. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/SuccessorEdge.py +0 -0
  362. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/TemporaryEdge.py +0 -0
  363. {discopop-4.0.1/discopop_library/discopop_optimizer/gui/presentation → discopop-4.1.0/discopop_library/discopop_optimizer/classes/edges}/__init__.py +0 -0
  364. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/enums/Distributions.py +0 -0
  365. {discopop-4.0.1/discopop_library/discopop_optimizer/gui/queries → discopop-4.1.0/discopop_library/discopop_optimizer/classes/enums}/__init__.py +0 -0
  366. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextMerge.py +0 -0
  367. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextRestore.py +0 -0
  368. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSave.py +0 -0
  369. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshot.py +0 -0
  370. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshotPop.py +0 -0
  371. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/FunctionReturn.py +0 -0
  372. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/FunctionRoot.py +0 -0
  373. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/GenericNode.py +0 -0
  374. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/Loop.py +0 -0
  375. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/Workload.py +0 -0
  376. {discopop-4.0.1/discopop_library/discopop_optimizer/gui/widgets → discopop-4.1.0/discopop_library/discopop_optimizer/classes/nodes}/__init__.py +0 -0
  377. {discopop-4.0.1/discopop_library/discopop_optimizer/scheduling → discopop-4.1.0/discopop_library/discopop_optimizer/classes/system}/__init__.py +0 -0
  378. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/DeviceTypeEnum.py +0 -0
  379. {discopop-4.0.1/discopop_library/discopop_optimizer/suggestions → discopop-4.1.0/discopop_library/discopop_optimizer/classes/system/devices}/__init__.py +0 -0
  380. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/types/Aliases.py +0 -0
  381. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/types/DataAccessType.py +0 -0
  382. {discopop-4.0.1/discopop_library/discopop_optimizer/suggestions/importers → discopop-4.1.0/discopop_library/discopop_optimizer/classes/types}/__init__.py +0 -0
  383. {discopop-4.0.1/discopop_library/discopop_optimizer/utilities → discopop-4.1.0/discopop_library/discopop_optimizer/gui}/__init__.py +0 -0
  384. {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/plotting}/__init__.py +0 -0
  385. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/presentation/ChoiceDetails.py +0 -0
  386. {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/presentation}/__init__.py +0 -0
  387. {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/optimization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/queries}/__init__.py +0 -0
  388. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/widgets/ScrollableFrame.py +0 -0
  389. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/widgets/ScrollableText.py +0 -0
  390. {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/visualization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/widgets}/__init__.py +0 -0
  391. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/interactive/interactive_optimizer.py +0 -0
  392. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/validation.py +0 -0
  393. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimizer.py +0 -0
  394. {discopop-4.0.1/discopop_library/global_data → discopop-4.1.0/discopop_library/discopop_optimizer/scheduling}/__init__.py +0 -0
  395. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/scheduling/workload_delta.py +0 -0
  396. {discopop-4.0.1/discopop_library/global_data/version → discopop-4.1.0/discopop_library/discopop_optimizer/suggestions}/__init__.py +0 -0
  397. {discopop-4.0.1/discopop_library/result_classes → discopop-4.1.0/discopop_library/discopop_optimizer/suggestions/importers}/__init__.py +0 -0
  398. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/main.py +0 -0
  399. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/reduction.py +0 -0
  400. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/optimizers/main.py +0 -0
  401. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/MOGUtilities.py +0 -0
  402. {discopop-4.0.1/test → discopop-4.1.0/discopop_library/discopop_optimizer/utilities}/__init__.py +0 -0
  403. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/insert_device_switch_nodes.py +0 -0
  404. {discopop-4.0.1/test/end_to_end → discopop-4.1.0/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization}/__init__.py +0 -0
  405. {discopop-4.0.1/test/end_to_end/do_all → discopop-4.1.0/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization}/__init__.py +0 -0
  406. {discopop-4.0.1/test/end_to_end/do_all/backwards_array_access → discopop-4.1.0/discopop_library/discopop_optimizer/utilities/optimization}/__init__.py +0 -0
  407. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/simple_utilities.py +0 -0
  408. {discopop-4.0.1/test/end_to_end/do_all/calls → discopop-4.1.0/discopop_library/discopop_optimizer/utilities/visualization}/__init__.py +0 -0
  409. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/visualization/plotting.py +0 -0
  410. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/visualization/update_graph.py +0 -0
  411. {discopop-4.0.1/test/end_to_end/do_all/calls/above_nesting_level_3 → discopop-4.1.0/discopop_library/global_data}/__init__.py +0 -0
  412. {discopop-4.0.1/test/end_to_end/do_all/calls/allowing → discopop-4.1.0/discopop_library/global_data/version}/__init__.py +0 -0
  413. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/global_data/version/utils.py +0 -0
  414. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/py.typed +0 -0
  415. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/DetectionResult.py +0 -0
  416. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/MergedPattern.py +0 -0
  417. {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/OptimizerOutputPattern.py +0 -0
  418. {discopop-4.0.1/test/end_to_end/do_all/calls/allowing_2 → discopop-4.1.0/discopop_library/result_classes}/__init__.py +0 -0
  419. {discopop-4.0.1 → discopop-4.1.0}/setup.cfg +0 -0
  420. {discopop-4.0.1/test/end_to_end/do_all/calls/complex → discopop-4.1.0/test}/__init__.py +0 -0
  421. {discopop-4.0.1/test/end_to_end/do_all/calls/complex_no_varname_duplicates → discopop-4.1.0/test/end_to_end}/__init__.py +0 -0
  422. {discopop-4.0.1/test/end_to_end/do_all/calls/preventing → discopop-4.1.0/test/end_to_end/do_all}/__init__.py +0 -0
  423. {discopop-4.0.1/test/end_to_end/do_all/calls/preventing/simple → discopop-4.1.0/test/end_to_end/do_all/backwards_array_access}/__init__.py +0 -0
  424. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/backwards_array_access/test.py +0 -0
  425. {discopop-4.0.1/test/end_to_end/do_all/calls/second_order → discopop-4.1.0/test/end_to_end/do_all/calls}/__init__.py +0 -0
  426. {discopop-4.0.1/test/end_to_end/do_all/calls/second_order/allowing → discopop-4.1.0/test/end_to_end/do_all/calls/above_nesting_level_3}/__init__.py +0 -0
  427. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/above_nesting_level_3/test.py +0 -0
  428. {discopop-4.0.1/test/end_to_end/do_all/calls/second_order/allowing_2 → discopop-4.1.0/test/end_to_end/do_all/calls/allowing}/__init__.py +0 -0
  429. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/allowing/test.py +0 -0
  430. {discopop-4.0.1/test/end_to_end/do_all/calls/second_order/preventing → discopop-4.1.0/test/end_to_end/do_all/calls/allowing_2}/__init__.py +0 -0
  431. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/allowing_2/test.py +0 -0
  432. {discopop-4.0.1/test/end_to_end/do_all/calls/second_order/preventing_2 → discopop-4.1.0/test/end_to_end/do_all/calls/complex}/__init__.py +0 -0
  433. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/complex/test.py +0 -0
  434. {discopop-4.0.1/test/end_to_end/do_all/daxpy → discopop-4.1.0/test/end_to_end/do_all/calls/complex_no_varname_duplicates}/__init__.py +0 -0
  435. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/complex_no_varname_duplicates/test.py +0 -0
  436. {discopop-4.0.1/test/end_to_end/do_all/negative → discopop-4.1.0/test/end_to_end/do_all/calls/preventing}/__init__.py +0 -0
  437. {discopop-4.0.1/test/end_to_end/do_all/negative/nested/OMPSCR → discopop-4.1.0/test/end_to_end/do_all/calls/preventing/simple}/__init__.py +0 -0
  438. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/preventing/simple/test.py +0 -0
  439. {discopop-4.0.1/test/end_to_end/do_all/negative/nested → discopop-4.1.0/test/end_to_end/do_all/calls/second_order}/__init__.py +0 -0
  440. {discopop-4.0.1/test/end_to_end/do_all/simple → discopop-4.1.0/test/end_to_end/do_all/calls/second_order/allowing}/__init__.py +0 -0
  441. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/allowing/test.py +0 -0
  442. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars → discopop-4.1.0/test/end_to_end/do_all/calls/second_order/allowing_2}/__init__.py +0 -0
  443. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/allowing_2/test.py +0 -0
  444. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy → discopop-4.1.0/test/end_to_end/do_all/calls/second_order/preventing}/__init__.py +0 -0
  445. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/preventing/test.py +0 -0
  446. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays → discopop-4.1.0/test/end_to_end/do_all/calls/second_order/preventing_2}/__init__.py +0 -0
  447. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/preventing_2/test.py +0 -0
  448. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct → discopop-4.1.0/test/end_to_end/do_all/daxpy}/__init__.py +0 -0
  449. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/daxpy/test.py +0 -0
  450. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors → discopop-4.1.0/test/end_to_end/do_all/negative}/__init__.py +0 -0
  451. {discopop-4.0.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct → discopop-4.1.0/test/end_to_end/do_all/negative/nested/OMPSCR}/__init__.py +0 -0
  452. {discopop-4.0.1/test/end_to_end/do_all/simple → discopop-4.1.0/test/end_to_end/do_all/negative}/nested/__init__.py +0 -0
  453. {discopop-4.0.1/test/end_to_end/do_all/simple/nested/depth_2 → discopop-4.1.0/test/end_to_end/do_all/simple}/__init__.py +0 -0
  454. {discopop-4.0.1/test/end_to_end/do_all/simple/nested/depth_2/positive → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars}/__init__.py +0 -0
  455. {discopop-4.0.1/test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy}/__init__.py +0 -0
  456. {discopop-4.0.1/test/end_to_end/do_all/simple/not_nested → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays}/__init__.py +0 -0
  457. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays/test.py +0 -0
  458. {discopop-4.0.1/test/end_to_end/do_all/simple/not_nested/negative → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct}/__init__.py +0 -0
  459. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct/test.py +0 -0
  460. {discopop-4.0.1/test/end_to_end/do_all/simple/not_nested/negative/minimal → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors}/__init__.py +0 -0
  461. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/test.py +0 -0
  462. {discopop-4.0.1/test/end_to_end/do_all/simple/not_nested/negative/stack_access → discopop-4.1.0/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct}/__init__.py +0 -0
  463. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/test.py +0 -0
  464. {discopop-4.0.1/test/end_to_end/do_all/simple/not_nested/positive → discopop-4.1.0/test/end_to_end/do_all/simple/nested}/__init__.py +0 -0
  465. {discopop-4.0.1/test/end_to_end/do_all/stack_access → discopop-4.1.0/test/end_to_end/do_all/simple/nested/depth_2}/__init__.py +0 -0
  466. {discopop-4.0.1/test/end_to_end/do_all/stack_access/nested → discopop-4.1.0/test/end_to_end/do_all/simple/nested/depth_2/positive}/__init__.py +0 -0
  467. {discopop-4.0.1/test/end_to_end/do_all/stack_access/nested/positive → discopop-4.1.0/test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall}/__init__.py +0 -0
  468. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall/test.py +0 -0
  469. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various → discopop-4.1.0/test/end_to_end/do_all/simple/not_nested}/__init__.py +0 -0
  470. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various/case_0 → discopop-4.1.0/test/end_to_end/do_all/simple/not_nested/negative}/__init__.py +0 -0
  471. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various/case_1 → discopop-4.1.0/test/end_to_end/do_all/simple/not_nested/negative/minimal}/__init__.py +0 -0
  472. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/negative/minimal/test.py +0 -0
  473. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various/case_2 → discopop-4.1.0/test/end_to_end/do_all/simple/not_nested/negative/stack_access}/__init__.py +0 -0
  474. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/negative/stack_access/test.py +0 -0
  475. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various/case_3 → discopop-4.1.0/test/end_to_end/do_all/simple/not_nested/positive}/__init__.py +0 -0
  476. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/positive/test.py +0 -0
  477. {discopop-4.0.1/test/end_to_end/do_all/stack_access/various/case_5 → discopop-4.1.0/test/end_to_end/do_all/stack_access}/__init__.py +0 -0
  478. {discopop-4.0.1/test/end_to_end/do_all/struct → discopop-4.1.0/test/end_to_end/do_all/stack_access/nested}/__init__.py +0 -0
  479. {discopop-4.0.1/test/end_to_end/do_all/struct → discopop-4.1.0/test/end_to_end/do_all/stack_access/nested}/positive/__init__.py +0 -0
  480. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/nested/positive/test.py +0 -0
  481. {discopop-4.0.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy → discopop-4.1.0/test/end_to_end/do_all/stack_access/various}/__init__.py +0 -0
  482. {discopop-4.0.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct → discopop-4.1.0/test/end_to_end/do_all/stack_access/various/case_0}/__init__.py +0 -0
  483. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_0/test.py +0 -0
  484. {discopop-4.0.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types → discopop-4.1.0/test/end_to_end/do_all/stack_access/various/case_1}/__init__.py +0 -0
  485. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_1/test.py +0 -0
  486. {discopop-4.0.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types → discopop-4.1.0/test/end_to_end/do_all/stack_access/various/case_2}/__init__.py +0 -0
  487. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_2/test.py +0 -0
  488. {discopop-4.0.1/test/end_to_end/optimizer → discopop-4.1.0/test/end_to_end/do_all/stack_access/various/case_3}/__init__.py +0 -0
  489. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_3/test.py +0 -0
  490. {discopop-4.0.1/test/end_to_end/optimizer/loop_collapse → discopop-4.1.0/test/end_to_end/do_all/stack_access/various/case_5}/__init__.py +0 -0
  491. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_5/test.py +0 -0
  492. {discopop-4.0.1/test/end_to_end/optimizer/loop_collapse/positive → discopop-4.1.0/test/end_to_end/do_all/struct}/__init__.py +0 -0
  493. {discopop-4.0.1/test/end_to_end/optimizer/loop_collapse/positive/simple_1 → discopop-4.1.0/test/end_to_end/do_all/struct/positive}/__init__.py +0 -0
  494. {discopop-4.0.1/test/end_to_end/reduction_pattern → discopop-4.1.0/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy}/__init__.py +0 -0
  495. {discopop-4.0.1/test/end_to_end/reduction_pattern/negative → discopop-4.1.0/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct}/__init__.py +0 -0
  496. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/test.py +0 -0
  497. {discopop-4.0.1/test/end_to_end/reduction_pattern/negative/case_1 → discopop-4.1.0/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types}/__init__.py +0 -0
  498. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/test.py +0 -0
  499. {discopop-4.0.1/test/end_to_end/reduction_pattern/positive → discopop-4.1.0/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types}/__init__.py +0 -0
  500. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/test.py +0 -0
  501. {discopop-4.0.1/test/end_to_end/reduction_pattern/positive/nested/OMPSCR → discopop-4.1.0/test/end_to_end/optimizer}/__init__.py +0 -0
  502. {discopop-4.0.1/test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot → discopop-4.1.0/test/end_to_end/optimizer/loop_collapse}/__init__.py +0 -0
  503. {discopop-4.0.1/test/end_to_end/reduction_pattern/positive/nested → discopop-4.1.0/test/end_to_end/optimizer/loop_collapse/positive}/__init__.py +0 -0
  504. {discopop-4.0.1/test/end_to_end/sharing_clauses → discopop-4.1.0/test/end_to_end/optimizer/loop_collapse/positive/simple_1}/__init__.py +0 -0
  505. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/optimizer/loop_collapse/positive/simple_1/test.py +0 -0
  506. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all → discopop-4.1.0/test/end_to_end/reduction_pattern}/__init__.py +0 -0
  507. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/first_private → discopop-4.1.0/test/end_to_end/reduction_pattern/negative}/__init__.py +0 -0
  508. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/first_private → discopop-4.1.0/test/end_to_end/reduction_pattern/negative}/case_1/__init__.py +0 -0
  509. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/reduction_pattern/negative/case_1/test.py +0 -0
  510. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/last_private → discopop-4.1.0/test/end_to_end/reduction_pattern/positive}/__init__.py +0 -0
  511. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/last_private/case_1 → discopop-4.1.0/test/end_to_end/reduction_pattern/positive/nested/OMPSCR}/__init__.py +0 -0
  512. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/no_clause → discopop-4.1.0/test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot}/__init__.py +0 -0
  513. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/test.py +0 -0
  514. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/no_clause/case_1 → discopop-4.1.0/test/end_to_end/reduction_pattern/positive/nested}/__init__.py +0 -0
  515. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/private → discopop-4.1.0/test/end_to_end/sharing_clauses}/__init__.py +0 -0
  516. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/private/case_1 → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all}/__init__.py +0 -0
  517. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/private/case_2 → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/first_private}/__init__.py +0 -0
  518. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/shared → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/first_private/case_1}/__init__.py +0 -0
  519. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/first_private/case_1/test.py +0 -0
  520. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/shared/case_1 → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/last_private}/__init__.py +0 -0
  521. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/shared/case_2 → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/last_private/case_1}/__init__.py +0 -0
  522. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/last_private/case_1/test.py +0 -0
  523. {discopop-4.0.1/test/end_to_end/sharing_clauses/do_all/shared/case_3 → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/no_clause}/__init__.py +0 -0
  524. {discopop-4.0.1/test/utils → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/no_clause/case_1}/__init__.py +0 -0
  525. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/no_clause/case_1/test.py +0 -0
  526. {discopop-4.0.1/test/utils/existence → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/private}/__init__.py +0 -0
  527. {discopop-4.0.1/test/utils/sharing_clauses → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/private/case_1}/__init__.py +0 -0
  528. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/private/case_1/test.py +0 -0
  529. {discopop-4.0.1/test/utils/validator_classes → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/private/case_2}/__init__.py +0 -0
  530. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/private/case_2/test.py +0 -0
  531. {discopop-4.0.1/test/wip_end_to_end → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/shared}/__init__.py +0 -0
  532. {discopop-4.0.1/test/wip_end_to_end/do_all → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/shared/case_1}/__init__.py +0 -0
  533. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_1/test.py +0 -0
  534. {discopop-4.0.1/test/wip_end_to_end/do_all/simple → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/shared/case_2}/__init__.py +0 -0
  535. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_2/test.py +0 -0
  536. {discopop-4.0.1/test/wip_end_to_end/do_all/simple/nested → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/shared/case_3}/__init__.py +0 -0
  537. {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_3/test.py +0 -0
  538. {discopop-4.0.1/test/wip_end_to_end/do_all/simple/nested/depth_2 → discopop-4.1.0/test/utils}/__init__.py +0 -0
  539. {discopop-4.0.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive → discopop-4.1.0/test/utils/existence}/__init__.py +0 -0
  540. {discopop-4.0.1 → discopop-4.1.0}/test/utils/existence/existence_utils.py +0 -0
  541. {discopop-4.0.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall → discopop-4.1.0/test/utils/sharing_clauses}/__init__.py +0 -0
  542. {discopop-4.0.1 → discopop-4.1.0}/test/utils/sharing_clauses/clauses_utils.py +0 -0
  543. {discopop-4.0.1 → discopop-4.1.0}/test/utils/validator_classes/DoAllInfoForValidation.py +0 -0
  544. {discopop-4.0.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall → discopop-4.1.0/test/utils/validator_classes}/__init__.py +0 -0
  545. {discopop-4.0.1/test/wip_end_to_end/do_all/stack_access → discopop-4.1.0/test/wip_end_to_end}/__init__.py +0 -0
  546. {discopop-4.0.1/test/wip_end_to_end/do_all/stack_access/various → discopop-4.1.0/test/wip_end_to_end/do_all}/__init__.py +0 -0
  547. {discopop-4.0.1/test/wip_end_to_end/do_all/stack_access/various/case_4 → discopop-4.1.0/test/wip_end_to_end/do_all/simple}/__init__.py +0 -0
  548. {discopop-4.0.1/test/wip_end_to_end/reduction_pattern → discopop-4.1.0/test/wip_end_to_end/do_all/simple/nested}/__init__.py +0 -0
  549. {discopop-4.0.1/test/wip_end_to_end/reduction_pattern/negative → discopop-4.1.0/test/wip_end_to_end/do_all/simple/nested/depth_2}/__init__.py +0 -0
  550. {discopop-4.0.1/test/wip_end_to_end/reduction_pattern/negative/case_2 → discopop-4.1.0/test/wip_end_to_end/do_all/simple/nested/depth_2/positive}/__init__.py +0 -0
  551. {discopop-4.0.1/test/wip_end_to_end/sharing_clauses → discopop-4.1.0/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall}/__init__.py +0 -0
  552. {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall/test.py +0 -0
  553. {discopop-4.0.1/test/wip_end_to_end/sharing_clauses/do_all → discopop-4.1.0/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall}/__init__.py +0 -0
  554. {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall/test.py +0 -0
  555. {discopop-4.0.1/test/wip_end_to_end/sharing_clauses/do_all/first_private → discopop-4.1.0/test/wip_end_to_end/do_all/stack_access}/__init__.py +0 -0
  556. {discopop-4.0.1/test/wip_end_to_end/sharing_clauses/do_all/first_private/case_2 → discopop-4.1.0/test/wip_end_to_end/do_all/stack_access/various}/__init__.py +0 -0
  557. {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/do_all/stack_access/various/case_4/test.py +0 -0
  558. {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/reduction_pattern/negative/case_2/test.py +0 -0
  559. {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/sharing_clauses/do_all/first_private/case_2/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: discopop
3
- Version: 4.0.1
3
+ Version: 4.1.0
4
4
  Summary: DiscoPoP is a tool that helps software developers parallelize their programs with threads. It discovers potential parallelism in a sequential program and makes recommendations on how to exploit it.
5
5
  Home-page: https://www.discopop.tu-darmstadt.de/
6
6
  Author: TU Darmstadt and Iowa State University
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: discopop
3
- Version: 4.0.1
3
+ Version: 4.1.0
4
4
  Summary: DiscoPoP is a tool that helps software developers parallelize their programs with threads. It discovers potential parallelism in a sequential program and makes recommendations on how to exploit it.
5
5
  Home-page: https://www.discopop.tu-darmstadt.de/
6
6
  Author: TU Darmstadt and Iowa State University
@@ -143,6 +143,8 @@ discopop_explorer/utilities/statistics/utilities/call_path_depth.py
143
143
  discopop_explorer/utilities/statistics/utilities/num_function_calls.py
144
144
  discopop_library/__init__.py
145
145
  discopop_library/py.typed
146
+ discopop_library/Aliases/__init__.py
147
+ discopop_library/Aliases/aliases.py
146
148
  discopop_library/ArgumentClasses/GeneralArguments.py
147
149
  discopop_library/CodeGenerator/CodeGenerator.py
148
150
  discopop_library/CodeGenerator/CodeGeneratorArguments.py
@@ -161,19 +163,31 @@ discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/__init__.py
161
163
  discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/__main__.py
162
164
  discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/utils.py
163
165
  discopop_library/ConfigProvider/ConfigProviderArguments.py
166
+ discopop_library/ConfigProvider/__init__.py
164
167
  discopop_library/ConfigProvider/__main__.py
165
168
  discopop_library/ConfigProvider/config_provider.py
166
169
  discopop_library/ConfigProvider/assets/.gitignore
170
+ discopop_library/ConfigProvider/assets/__init__.py
171
+ discopop_library/DependencyComparator/DependencyComparatorArguments.py
172
+ discopop_library/DependencyComparator/__main__.py
173
+ discopop_library/DependencyComparator/dependency_comparator.py
167
174
  discopop_library/DependencyMetadata/compare_metadata.py
168
175
  discopop_library/EmpiricalAutotuning/ArgumentClasses.py
169
176
  discopop_library/EmpiricalAutotuning/Autotuner.py
170
177
  discopop_library/EmpiricalAutotuning/Types.py
171
178
  discopop_library/EmpiricalAutotuning/__init__.py
172
179
  discopop_library/EmpiricalAutotuning/__main__.py
180
+ discopop_library/EmpiricalAutotuning/priorities.py
173
181
  discopop_library/EmpiricalAutotuning/utils.py
174
182
  discopop_library/EmpiricalAutotuning/Classes/CodeConfiguration.py
175
183
  discopop_library/EmpiricalAutotuning/Classes/ExecutionResult.py
176
184
  discopop_library/EmpiricalAutotuning/Statistics/StatisticsGraph.py
185
+ discopop_library/EmpiricalAutotuning/optimization/check_single_combination.py
186
+ discopop_library/EmpiricalAutotuning/optimization/dump_greedy.py.txt
187
+ discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination.py
188
+ discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination_with_refinement.py
189
+ discopop_library/EmpiricalAutotuning/optimization/measure_only.py
190
+ discopop_library/EmpiricalAutotuning/output/intermediate.py
177
191
  discopop_library/FolderStructure/__init__.py
178
192
  discopop_library/FolderStructure/setup.py
179
193
  discopop_library/FolderStructure/teardown.py
@@ -182,6 +196,7 @@ discopop_library/HostpotLoader/HotspotLoaderArguments.py
182
196
  discopop_library/HostpotLoader/HotspotNodeType.py
183
197
  discopop_library/HostpotLoader/HotspotType.py
184
198
  discopop_library/HostpotLoader/hostpot_loader.py
199
+ discopop_library/HostpotLoader/utilities.py
185
200
  discopop_library/JSONHandler/JSONHandler.py
186
201
  discopop_library/JSONHandler/__init__.py
187
202
  discopop_library/LineMapping/__init__.py
@@ -211,6 +226,45 @@ discopop_library/PatchGenerator/patch_generator.py
211
226
  discopop_library/PathManagement/PathManagement.py
212
227
  discopop_library/PathManagement/__init__.py
213
228
  discopop_library/PatternIdManagement/unique_pattern_id.py
229
+ discopop_library/PreProcessor/PreProcessorArguments.py
230
+ discopop_library/PreProcessor/__init__.py
231
+ discopop_library/PreProcessor/__main__.py
232
+ discopop_library/PreProcessor/pre_processor.py
233
+ discopop_library/PreProcessor/demangle/data_xml.py
234
+ discopop_library/PreProcessor/demangle/dependency_metadata.py
235
+ discopop_library/PreProcessor/demangle/driver.py
236
+ discopop_library/PreProcessor/demangle/dynamic_dependencies.py
237
+ discopop_library/PreProcessor/demangle/reduction.py
238
+ discopop_library/PreProcessor/demangle/static_dependencies.py
239
+ discopop_library/PreProcessor/demangle/utilities.py
240
+ discopop_library/ProjectManager/ProjectManager.py
241
+ discopop_library/ProjectManager/ProjectManagerArguments.py
242
+ discopop_library/ProjectManager/__init__.py
243
+ discopop_library/ProjectManager/__main__.py
244
+ discopop_library/ProjectManager/configurations/copying.py
245
+ discopop_library/ProjectManager/configurations/deletion.py
246
+ discopop_library/ProjectManager/configurations/execution.py
247
+ discopop_library/ProjectManager/reports/console.py
248
+ discopop_library/ProjectManager/reports/csv.py
249
+ discopop_library/ProjectManager/reports/efficiency.py
250
+ discopop_library/ProjectManager/reports/execution_time.py
251
+ discopop_library/ProjectManager/reports/full.py
252
+ discopop_library/ProjectManager/reports/speedup.py
253
+ discopop_library/ProjectManager/utilities/__init__.py
254
+ discopop_library/ProjectManager/utilities/deriveSettingsFiles.py
255
+ discopop_library/ProjectManager/utilities/initializeDirectories.py
256
+ discopop_library/ProjectManager/utilities/initializeFiles.py
257
+ discopop_library/ProjectManager/utilities/reset.py
258
+ discopop_library/ProjectManager/utilities/CLI/__init__.py
259
+ discopop_library/ProjectManager/utilities/CLI/listConfiguration.py
260
+ discopop_library/SanityChecker/ArgumentClasses.py
261
+ discopop_library/SanityChecker/SanityChecker.py
262
+ discopop_library/SanityChecker/Types.py
263
+ discopop_library/SanityChecker/__init__.py
264
+ discopop_library/SanityChecker/__main__.py
265
+ discopop_library/SanityChecker/utils.py
266
+ discopop_library/SanityChecker/Classes/CodeConfiguration.py
267
+ discopop_library/SanityChecker/Classes/ExecutionResult.py
214
268
  discopop_library/__pycache__/__init__.cpython-38.pyc
215
269
  discopop_library/discopop_optimizer/OptimizationGraph.py
216
270
  discopop_library/discopop_optimizer/OptimizerArguments.py
@@ -1,8 +1,13 @@
1
1
  [console_scripts]
2
2
  discopop_auto_tuner = discopop_library.EmpiricalAutotuning.__main__:main
3
3
  discopop_config_provider = discopop_library.ConfigProvider.__main__:main
4
+ discopop_configuration_manager = discopop_library.ConfigurationManager.__main__:main
5
+ discopop_dependency_comparator = discopop_library.DependencyComparator.__main__:main
4
6
  discopop_explorer = discopop_explorer.__main__:main
5
7
  discopop_optimizer = discopop_library.discopop_optimizer.__main__:main
6
8
  discopop_patch_applicator = discopop_library.PatchApplicator.__main__:main
7
9
  discopop_patch_generator = discopop_library.PatchGenerator.__main__:main
10
+ discopop_preprocessor = discopop_library.PreProcessor.__main__:main
11
+ discopop_project_manager = discopop_library.ProjectManager.__main__:main
12
+ discopop_sanity_checker = discopop_library.SanityChecker.__main__:main
8
13
 
@@ -15,6 +15,7 @@ sympy_plot_backends
15
15
  alive_progress
16
16
  filelock
17
17
  pydot
18
+ tabulate
18
19
 
19
20
  [ci]
20
21
  mypy
@@ -108,6 +108,10 @@ def parse_args() -> ExplorerArguments:
108
108
  experimental_parser.add_argument(
109
109
  "--enable-statistics", action="store_true", help="Disable the calculation and storing of statistics for code and generated suggestions."
110
110
  )
111
+ experimental_parser.add_argument(
112
+ "--plot-pet", type=str, nargs="?", default=None, const="explorer/pet_plot.gexf",
113
+ help="Plots PET as a GEXF file. If a path is given (file extension has to be .gexf), the PET Graph is written to the given file, otherwise to pet_plot.gexf"
114
+ )
111
115
  # fmt: on
112
116
 
113
117
  arguments = parser.parse_args()
@@ -135,6 +139,7 @@ def parse_args() -> ExplorerArguments:
135
139
  arguments.dump_pet = get_path_or_none(arguments.path, arguments.dump_pet)
136
140
  arguments.dump_detection_result = get_path_or_none(arguments.path, arguments.dump_detection_result)
137
141
  arguments.microbench_file = get_path_or_none(arguments.path, arguments.microbench_file)
142
+ arguments.plot_pet = get_path_or_none(arguments.path, arguments.plot_pet)
138
143
 
139
144
  return ExplorerArguments(
140
145
  discopop_build_path=arguments.dp_build_path,
@@ -162,6 +167,7 @@ def parse_args() -> ExplorerArguments:
162
167
  load_existing_doall_and_reduction_patterns=arguments.load_existing_doall_and_reduction_patterns,
163
168
  collect_statistics=arguments.enable_statistics,
164
169
  jobs=arguments.jobs,
170
+ enable_pet_plot_file=arguments.plot_pet,
165
171
  )
166
172
 
167
173
 
@@ -87,6 +87,12 @@ class Node:
87
87
  return True
88
88
  return False
89
89
 
90
+ def get_contained_line_ids(self) -> List[LineID]:
91
+ result: List[LineID] = []
92
+ for i in range(self.start_line, self.end_line + 1):
93
+ result.append(LineID(str(self.file_id) + ":" + str(i)))
94
+ return result
95
+
90
96
  def __str__(self) -> str:
91
97
  return self.id
92
98
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  import json
10
10
  import os
11
+ from typing import List, Optional
11
12
 
12
13
  from filelock import FileLock # type: ignore
13
14
  from discopop_explorer.classes.PEGraph.Node import Node
@@ -19,11 +20,13 @@ class PatternBase(object):
19
20
  """Base class for pattern info"""
20
21
 
21
22
  pattern_id: int
23
+ pattern_tag: str
22
24
  _node: Node
23
25
  node_id: NodeID
24
26
  start_line: LineID
25
27
  end_line: LineID
26
28
  applicable_pattern: bool
29
+ affected_cu_ids: List[NodeID]
27
30
 
28
31
  def __init__(self, node: Node):
29
32
  # create a file lock to synchronize processes
@@ -45,6 +48,8 @@ class PatternBase(object):
45
48
  self.start_line = node.start_position()
46
49
  self.end_line = node.end_position()
47
50
  self.applicable_pattern = True
51
+ self.pattern_tag = ""
52
+ self.affected_cu_ids = []
48
53
 
49
54
  def to_json(self) -> str:
50
55
  dic = self.__dict__
@@ -54,3 +59,8 @@ class PatternBase(object):
54
59
  del dic[key]
55
60
 
56
61
  return json.dumps(dic, indent=2, default=lambda o: o.toJSON()) # , default=lambda o: "<not serializable>")
62
+
63
+ def get_tag(self) -> str:
64
+ result = "" + self.__class__.__name__
65
+ result += "@" + self.start_line + "-" + self.end_line
66
+ return result
@@ -21,6 +21,7 @@ from typing import Dict, List, Optional, Tuple
21
21
  import pstats2 # type:ignore
22
22
  from pluginbase import PluginBase # type: ignore
23
23
  from discopop_explorer.functions.PEGraph.output.json import dump_to_pickled_json
24
+ from discopop_explorer.functions.PEGraph.output.gephi import dump_to_gephi_file
24
25
  from discopop_explorer.utilities.statistics.collect_statistics import collect_statistics
25
26
  from discopop_library.ArgumentClasses.GeneralArguments import GeneralArguments # type: ignore
26
27
  from discopop_library.FolderStructure.setup import setup_explorer
@@ -74,6 +75,7 @@ class ExplorerArguments(GeneralArguments):
74
75
  microbench_file: Optional[str]
75
76
  load_existing_doall_and_reduction_patterns: bool
76
77
  collect_statistics: bool
78
+ enable_pet_plot_file: Optional[str] # None means no dump, otherwise the path
77
79
 
78
80
  def __post_init__(self) -> None:
79
81
  self.__validate()
@@ -258,6 +260,11 @@ def run(arguments: ExplorerArguments) -> None:
258
260
  f.flush()
259
261
  f.close()
260
262
 
263
+ # experimental
264
+ # dumps gexf plot of pet
265
+ if arguments.enable_pet_plot_file is not None:
266
+ dump_to_gephi_file(res.pet, arguments.enable_pet_plot_file)
267
+
261
268
  if arguments.enable_detection_result_dump_file is not None:
262
269
  with open(arguments.enable_detection_result_dump_file, "w+") as f:
263
270
  f.write(res.dump_to_pickled_json())
@@ -12,7 +12,7 @@ from discopop_explorer.enums.EdgeType import EdgeType
12
12
  import networkx as nx # type: ignore
13
13
 
14
14
 
15
- def dump_to_gephi_file(pet: PEGraphX, name: str = "pet.gexf") -> None:
15
+ def dump_to_gephi_file(pet: PEGraphX, name: str) -> None:
16
16
  """Note: Destroys the PETGraph!"""
17
17
  # replace node data with label
18
18
  for node_id in pet.g.nodes:
@@ -6,7 +6,7 @@
6
6
  # the 3-Clause BSD License. See the LICENSE file in the package base
7
7
  # directory for details.
8
8
  from __future__ import annotations
9
- from typing import TYPE_CHECKING, Optional, cast
9
+ from typing import TYPE_CHECKING, List, Optional, cast
10
10
  from discopop_explorer.classes.PEGraph.FunctionNode import FunctionNode
11
11
  from discopop_explorer.classes.PEGraph.Node import Node
12
12
 
@@ -41,3 +41,19 @@ def get_parent_function(pet: PEGraphX, node: Node) -> FunctionNode:
41
41
 
42
42
  assert node.parent_function_id
43
43
  return cast(FunctionNode, pet.node_at(node.parent_function_id))
44
+
45
+
46
+ def get_all_parent_functions(pet: PEGraphX, node: Node) -> List[FunctionNode]:
47
+ queue: List[Node] = [node]
48
+ result: set[FunctionNode] = set()
49
+ while queue:
50
+ current = queue.pop()
51
+ current_parent = get_parent_function(pet, current)
52
+ if current_parent not in queue and current_parent not in result:
53
+ queue.append(current_parent)
54
+ if current_parent not in result:
55
+ result.add(current_parent)
56
+ for in_edge in in_edges(pet, current.id, EdgeType.CALLSNODE):
57
+ queue.append(pet.node_at(in_edge[0]))
58
+
59
+ return list(result)
@@ -106,7 +106,7 @@ def get_cu_and_varname_to_memory_regions(
106
106
 
107
107
 
108
108
  def get_memory_region_to_cu_and_variables_dict(
109
- cu_and_variable_to_memory_regions: Dict[NodeID, Dict[VarName, Set[MemoryRegion]]]
109
+ cu_and_variable_to_memory_regions: Dict[NodeID, Dict[VarName, Set[MemoryRegion]]],
110
110
  ) -> Dict[MemoryRegion, Dict[NodeID, Set[VarName]]]:
111
111
  # inverts the given cu_and_variable_to_memory_regions dictionary
112
112
  result_dict: Dict[MemoryRegion, Dict[NodeID, Set[VarName]]] = dict()
@@ -97,7 +97,7 @@ def add_memory_regions_to_device_liveness(
97
97
 
98
98
 
99
99
  def propagate_memory_regions(
100
- device_liveness_plus_memory_regions: Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]]
100
+ device_liveness_plus_memory_regions: Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]],
101
101
  ) -> Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]]:
102
102
  """Propagate memory regions for variables"""
103
103
  result_dict: Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]] = dict()
@@ -117,7 +117,7 @@ def propagate_memory_regions(
117
117
 
118
118
 
119
119
  def convert_liveness(
120
- device_liveness_plus_memory_regions: Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]]
120
+ device_liveness_plus_memory_regions: Dict[VarName, List[Tuple[NodeID, Set[MemoryRegion]]]],
121
121
  ) -> Dict[MemoryRegion, List[NodeID]]:
122
122
  result_dict: Dict[MemoryRegion, List[NodeID]] = dict()
123
123
 
@@ -143,7 +143,7 @@ def propagate_writes(
143
143
 
144
144
 
145
145
  def cleanup_writes(
146
- writes: Dict[MemoryRegion, Set[Tuple[NodeID, Optional[int]]]]
146
+ writes: Dict[MemoryRegion, Set[Tuple[NodeID, Optional[int]]]],
147
147
  ) -> Dict[MemoryRegion, Set[Tuple[NodeID, Optional[int]]]]:
148
148
  """remove entries from the Sets with an second-element entry of None,
149
149
  if it is overwritten by a different memory write."""
@@ -164,7 +164,7 @@ def cleanup_writes(
164
164
 
165
165
 
166
166
  def group_writes_by_cu(
167
- writes: Dict[MemoryRegion, Set[Tuple[NodeID, Optional[int]]]]
167
+ writes: Dict[MemoryRegion, Set[Tuple[NodeID, Optional[int]]]],
168
168
  ) -> Dict[NodeID, Dict[MemoryRegion, Set[Optional[int]]]]:
169
169
  result_dict: Dict[NodeID, Dict[MemoryRegion, Set[Optional[int]]]] = dict()
170
170
 
@@ -345,7 +345,7 @@ def extend_region_liveness_using_unrolled_functions(
345
345
 
346
346
 
347
347
  def remove_duplicates(
348
- target_set: Union[Set[Update], Set[EntryPoint], Set[ExitPoint]]
348
+ target_set: Union[Set[Update], Set[EntryPoint], Set[ExitPoint]],
349
349
  ) -> Union[Set[Update], Set[EntryPoint], Set[ExitPoint]]:
350
350
  to_be_removed = []
351
351
  for element_1 in target_set:
@@ -17,7 +17,7 @@ from discopop_explorer.functions.PEGraph.queries.edges import in_edges, out_edge
17
17
  from discopop_explorer.functions.PEGraph.queries.nodes import all_nodes
18
18
  from discopop_explorer.functions.PEGraph.queries.subtree import subtree_of_type
19
19
  from discopop_explorer.functions.PEGraph.queries.variables import get_variables
20
- from discopop_explorer.functions.PEGraph.traversal.parent import get_parent_function
20
+ from discopop_explorer.functions.PEGraph.traversal.parent import get_all_parent_functions, get_parent_function
21
21
  from discopop_library.HostpotLoader.HotspotNodeType import HotspotNodeType
22
22
  from discopop_library.HostpotLoader.HotspotType import HotspotType # type: ignore
23
23
 
@@ -57,6 +57,19 @@ class DoAllInfo(PatternInfo):
57
57
  self.reduction = r
58
58
  self.scheduling_clause = "static"
59
59
  self.collapse_level = 1
60
+ self.pattern_tag = self.get_tag()
61
+
62
+ # determine affected cu and line ids
63
+ affected_cus = subtree_of_type(pet, node)
64
+ self.affected_cu_ids = [n.id for n in affected_cus]
65
+ self.affected_line_ids: List[LineID] = []
66
+ for node in affected_cus:
67
+ self.affected_line_ids += [
68
+ lid for lid in node.get_contained_line_ids() if lid not in self.affected_line_ids
69
+ ]
70
+ self.affected_functions = [
71
+ str(f.start_position()) + ":" + f.name for f in [get_parent_function(pet, node)]
72
+ ] # get_all_parent_functions(pet, node)]
60
73
 
61
74
  def __str__(self) -> str:
62
75
  return (
@@ -76,6 +89,15 @@ class DoAllInfo(PatternInfo):
76
89
  f"scheduling clause: {self.scheduling_clause}"
77
90
  )
78
91
 
92
+ def get_tag(self) -> str:
93
+ result = super().get_tag() + "_"
94
+ result += f"p({[v.name for v in self.private]})_"
95
+ result += f"s({[v.name for v in self.shared]})_"
96
+ result += f"fp({[v.name for v in self.first_private]})_"
97
+ result += f"r({[v.name for v in self.reduction]})_"
98
+ result += f"lp({[v.name for v in self.last_private]})"
99
+ return result
100
+
79
101
 
80
102
  global_pet = None
81
103
 
@@ -17,7 +17,7 @@ from discopop_explorer.functions.PEGraph.queries.edges import in_edges, out_edge
17
17
  from discopop_explorer.functions.PEGraph.queries.nodes import all_nodes
18
18
  from discopop_explorer.functions.PEGraph.queries.subtree import subtree_of_type
19
19
  from discopop_explorer.functions.PEGraph.queries.variables import get_variables
20
- from discopop_explorer.functions.PEGraph.traversal.parent import get_parent_function
20
+ from discopop_explorer.functions.PEGraph.traversal.parent import get_all_parent_functions, get_parent_function
21
21
  from discopop_library.HostpotLoader.HotspotNodeType import HotspotNodeType
22
22
  from discopop_library.HostpotLoader.HotspotType import HotspotType # type: ignore
23
23
 
@@ -56,6 +56,19 @@ class ReductionInfo(PatternInfo):
56
56
  self.last_private = lp
57
57
  self.shared = s
58
58
  self.reduction = r
59
+ self.pattern_tag = self.get_tag()
60
+
61
+ # determine affected cu and line ids
62
+ affected_cus = subtree_of_type(pet, node)
63
+ self.affected_cu_ids = [n.id for n in affected_cus]
64
+ self.affected_line_ids: List[LineID] = []
65
+ for node in affected_cus:
66
+ self.affected_line_ids += [
67
+ lid for lid in node.get_contained_line_ids() if lid not in self.affected_line_ids
68
+ ]
69
+ self.affected_functions = [
70
+ str(f.start_position()) + ":" + f.name for f in [get_parent_function(pet, node)]
71
+ ] # get_all_parent_functions(pet, node)]
59
72
 
60
73
  def __str__(self) -> str:
61
74
  return (
@@ -70,6 +83,15 @@ class ReductionInfo(PatternInfo):
70
83
  f"last private: {[v.name for v in self.last_private]}"
71
84
  )
72
85
 
86
+ def get_tag(self) -> str:
87
+ result = super().get_tag() + "_"
88
+ result += f"p({[v.name for v in self.private]})_"
89
+ result += f"s({[v.name for v in self.shared]})_"
90
+ result += f"fp({[v.name for v in self.first_private]})_"
91
+ result += f'r({[str(v.operation) + ":" + v.name for v in self.reduction]})_'
92
+ result += f"lp({[v.name for v in self.last_private]})"
93
+ return result
94
+
73
95
 
74
96
  global_pet = None
75
97
 
@@ -37,18 +37,22 @@ logger = logging.getLogger("statistics")
37
37
 
38
38
  def collect_statistics(arguments: ExplorerArguments, res: DetectionResult) -> None:
39
39
  logger.info("Collecting code statistics...")
40
+
40
41
  maximum_call_path_depth = get_maximum_call_path_depth(res.pet)
41
42
  logger.debug("--> maximum_call_path_depth: " + str(maximum_call_path_depth))
43
+
42
44
  suggestion_call_path_depths = get_suggestion_call_path_depths(res)
43
45
  logger.debug(
44
46
  "--> suggestion_call_path_depths: "
45
47
  + str([str(key) + " => " + str(suggestion_call_path_depths[key]) for key in suggestion_call_path_depths])
46
48
  )
49
+
47
50
  suggestion_num_function_calls = get_suggestion_num_function_calls(res)
48
51
  logger.debug(
49
52
  "--> suggestion_num_function_calls: "
50
53
  + str([str(key) + " => " + str(suggestion_num_function_calls[key]) for key in suggestion_num_function_calls])
51
54
  )
55
+
52
56
  suggestion_immediate_lines_of_code = get_suggestion_immediate_lines_of_code(res)
53
57
  logger.debug(
54
58
  "--> suggestion_immediate_lines_of_code: "
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  # define aliases for readability
17
17
  from subprocess import check_output
18
18
  from discopop_library.PathManagement.PathManagement import load_file_mapping
19
-
19
+ import logging
20
20
 
21
21
  MIN = int
22
22
  MAX = int
@@ -24,17 +24,23 @@ AVG = int
24
24
  LOWER_QUART = int
25
25
  UPPER_QUART = int
26
26
 
27
+ logger = logging.getLogger("statistics").getChild("CC").getChild("boxplot")
28
+
27
29
 
28
30
  def get_cyclomatic_complexities_for_boxplot(
29
31
  arguments: ExplorerArguments, res: DetectionResult
30
32
  ) -> Tuple[MIN, MAX, AVG, LOWER_QUART, UPPER_QUART]:
31
33
  file_mapping = load_file_mapping(arguments.file_mapping_file)
32
34
  # get summed cyclomatic complexity for all functions in all files
33
- cmd = ["pmccabe", "-C"]
34
- for file_id in file_mapping:
35
- file_path = file_mapping[file_id]
36
- cmd.append(str(file_path))
37
- out = check_output(cmd).decode("utf-8")
35
+ try:
36
+ cmd = ["pmccabe", "-C"]
37
+ for file_id in file_mapping:
38
+ file_path = file_mapping[file_id]
39
+ cmd.append(str(file_path))
40
+ out = check_output(cmd).decode("utf-8")
41
+ except FileNotFoundError as fnfe:
42
+ logger.error(str(fnfe))
43
+ return (0, 0, 0, 0, 0)
38
44
 
39
45
  # unpack and store results temporarily
40
46
  cyclomatic_complexities: List[int] = []
@@ -26,16 +26,20 @@ CC_DICT = Dict[FILE_ID, Dict[FUNC_NAME, CYC_COMP]]
26
26
 
27
27
 
28
28
  def get_cyclomatic_complexity_dictionary(arguments: ExplorerArguments, res: DetectionResult) -> CC_DICT:
29
+ cc_dict: Dict[FILE_ID, Dict[FUNC_NAME, CYC_COMP]] = dict()
29
30
  file_mapping = load_file_mapping(arguments.file_mapping_file)
31
+
30
32
  # get summed cyclomatic complexity for all functions in all files
31
- cmd = ["pmccabe", "-C"]
32
- for file_id in file_mapping:
33
- file_path = file_mapping[file_id]
34
- cmd.append(str(file_path))
35
- out = check_output(cmd).decode("utf-8")
33
+ try:
34
+ cmd = ["pmccabe", "-C"]
35
+ for file_id in file_mapping:
36
+ file_path = file_mapping[file_id]
37
+ cmd.append(str(file_path))
38
+ out = check_output(cmd).decode("utf-8")
39
+ except FileNotFoundError:
40
+ return cc_dict
36
41
 
37
42
  # unpack and repack results
38
- cc_dict: Dict[FILE_ID, Dict[FUNC_NAME, CYC_COMP]] = dict()
39
43
  for line in out.split("\n"):
40
44
  split_line = line.split("\t")
41
45
  if len(split_line) < 9:
@@ -17,16 +17,24 @@ from discopop_library.PathManagement.PathManagement import load_file_mapping
17
17
 
18
18
  from subprocess import check_output
19
19
 
20
+ import logging
21
+
22
+ logger = logging.getLogger("statistics").getChild("CC").getChild("total")
23
+
20
24
 
21
25
  def get_summed_cyclomatic_complexity(arguments: ExplorerArguments, res: DetectionResult) -> int:
22
26
  """calculate the total cyclomatic complexity"""
23
27
  file_mapping = load_file_mapping(arguments.file_mapping_file)
24
28
  # get summed cyclomatic complexity for all functions in all files
25
- cmd = ["pmccabe", "-T"]
26
- for file_id in file_mapping:
27
- file_path = file_mapping[file_id]
28
- cmd.append(str(file_path))
29
- out = check_output(cmd).decode("utf-8")
30
- summed_cyclomatic_complexity = int(out.split("\t")[1])
29
+ try:
30
+ cmd = ["pmccabe", "-T"]
31
+ for file_id in file_mapping:
32
+ file_path = file_mapping[file_id]
33
+ cmd.append(str(file_path))
34
+ out = check_output(cmd).decode("utf-8")
35
+ summed_cyclomatic_complexity = int(out.split("\t")[1])
36
+ except FileNotFoundError as fnfe:
37
+ logger.error(str(fnfe))
38
+ return 0
31
39
 
32
40
  return summed_cyclomatic_complexity
@@ -29,6 +29,8 @@ def get_num_function_calls(pet: PEGraphX, node: Node, visited: List[Node]) -> in
29
29
  continue
30
30
  function_calls += get_num_function_calls(pet, pet.node_at(t), copy.deepcopy(visited))
31
31
  else:
32
+ if child in visited:
33
+ continue
32
34
  function_calls += get_num_function_calls(pet, child, copy.deepcopy(visited))
33
35
 
34
36
  return function_calls
@@ -820,9 +820,9 @@ def __remove_duplicate_variables(vars: List[Variable]) -> List[Variable]:
820
820
  buffer: List[str] = []
821
821
  vars_wo_duplicates: List[Variable] = []
822
822
  for var in vars:
823
- if var.name + var.defLine not in buffer:
823
+ if str(var.name) + var.defLine not in buffer:
824
824
  vars_wo_duplicates.append(var)
825
- buffer.append(var.name + var.defLine)
825
+ buffer.append(str(var.name) + var.defLine)
826
826
  else:
827
827
  # duplicate found
828
828
  continue
@@ -0,0 +1,9 @@
1
+ # This file is part of the DiscoPoP software (http://www.discopop.tu-darmstadt.de)
2
+ #
3
+ # Copyright (c) 2020, Technische Universitaet Darmstadt, Germany
4
+ #
5
+ # This software may be modified and distributed under the terms of
6
+ # the 3-Clause BSD License. See the LICENSE file in the package base
7
+ # directory for details.
8
+
9
+ PatternID = int
@@ -0,0 +1,20 @@
1
+ # This file is part of the DiscoPoP software (http://www.discopop.tu-darmstadt.de)
2
+ #
3
+ # Copyright (c) 2020, Technische Universitaet Darmstadt, Germany
4
+ #
5
+ # This software may be modified and distributed under the terms of
6
+ # the 3-Clause BSD License. See the LICENSE file in the package base
7
+ # directory for details.
8
+ from dataclasses import dataclass
9
+
10
+
11
+ @dataclass
12
+ class DependencyComparatorArguments(object):
13
+ """Container Class for the arguments passed to the discopop_dependency_comparator"""
14
+
15
+ gold_standard: str
16
+ test_set: str
17
+ output: str
18
+
19
+ def __str__(self) -> str:
20
+ return str(self.__dict__)