discopop 3.2.0__tar.gz → 3.2.1__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 (411) hide show
  1. {discopop-3.2.0/discopop.egg-info → discopop-3.2.1}/PKG-INFO +1 -1
  2. {discopop-3.2.0 → discopop-3.2.1/discopop.egg-info}/PKG-INFO +1 -1
  3. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/SOURCES.txt +106 -89
  4. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/PEGraphX.py +34 -1
  5. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/parser.py +7 -2
  6. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/do_all_detector.py +60 -22
  7. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/reduction_detector.py +58 -1
  8. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/ConfigProvider/ConfigProviderArguments.py +1 -0
  9. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/ConfigProvider/__main__.py +3 -0
  10. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/ConfigProvider/config_provider.py +12 -0
  11. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/__main__.py +10 -2
  12. discopop-3.2.1/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
  13. discopop-3.2.1/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
  14. discopop-3.2.1/discopop_library/global_data/version/VERSION +1 -0
  15. discopop-3.2.1/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
  16. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/global_data/version/__pycache__/utils.cpython-38.pyc +0 -0
  17. {discopop-3.2.0 → discopop-3.2.1}/requirements.txt +1 -1
  18. discopop-3.2.1/test/end_to_end/do_all/backwards_array_access/test.py +77 -0
  19. discopop-3.2.1/test/end_to_end/do_all/calls/above_nesting_level_3/test.py +77 -0
  20. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/calls/allowing/test.py +25 -17
  21. {discopop-3.2.0/test/do_all/calls/second_order/allowing → discopop-3.2.1/test/end_to_end/do_all/calls/allowing_2}/test.py +25 -17
  22. {discopop-3.2.0/test/do_all/stack_access/nested/positive → discopop-3.2.1/test/end_to_end/do_all/calls/complex}/test.py +26 -20
  23. {discopop-3.2.0/test/do_all/simple/not_nested/negative/minimal → discopop-3.2.1/test/end_to_end/do_all/calls/preventing/simple}/test.py +25 -17
  24. {discopop-3.2.0/test/do_all/calls/second_order/allowing_2 → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/allowing}/test.py +25 -17
  25. {discopop-3.2.0/test/do_all/stack_access/various/case_0 → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/allowing_2}/test.py +26 -18
  26. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/calls/second_order/preventing/test.py +25 -17
  27. {discopop-3.2.0/test/do_all/calls/preventing/simple → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/preventing_2}/test.py +25 -17
  28. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/daxpy/test.py +33 -31
  29. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays}/test.py +26 -23
  30. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct}/test.py +25 -23
  31. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/test.py +25 -23
  32. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/test.py +27 -23
  33. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/outer_loop_doall → discopop-3.2.1/test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall}/test.py +26 -19
  34. {discopop-3.2.0/test/do_all/calls/second_order/preventing_2 → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested/negative/minimal}/test.py +28 -18
  35. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/simple/not_nested/negative/stack_access/test.py +32 -18
  36. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/do_all/simple/not_nested/positive/test.py +25 -17
  37. discopop-3.2.1/test/end_to_end/do_all/stack_access/nested/positive/test.py +86 -0
  38. discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_0/test.py +85 -0
  39. discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_1/test.py +85 -0
  40. discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_2/test.py +85 -0
  41. discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_3/test.py +85 -0
  42. discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_5/test.py +85 -0
  43. discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/test.py +85 -0
  44. discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/test.py +85 -0
  45. discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/test.py +85 -0
  46. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/optimizer/loop_collapse/positive/simple_1/test.py +15 -17
  47. {discopop-3.2.0/test → discopop-3.2.1/test/end_to_end}/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/test.py +21 -20
  48. discopop-3.2.1/test/utils/existence/__init__.py +0 -0
  49. discopop-3.2.1/test/utils/existence/existence_utils.py +25 -0
  50. discopop-3.2.1/test/utils/validator_classes/__init__.py +0 -0
  51. discopop-3.2.1/test/wip_end_to_end/__init__.py +0 -0
  52. discopop-3.2.1/test/wip_end_to_end/do_all/__init__.py +0 -0
  53. discopop-3.2.1/test/wip_end_to_end/do_all/simple/__init__.py +0 -0
  54. discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/__init__.py +0 -0
  55. discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/__init__.py +0 -0
  56. discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/__init__.py +0 -0
  57. discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall/__init__.py +0 -0
  58. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/both_loops_doall → discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall}/test.py +26 -17
  59. discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall/__init__.py +0 -0
  60. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/inner_loop_doall → discopop-3.2.1/test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall}/test.py +26 -19
  61. discopop-3.2.1/test/wip_end_to_end/do_all/stack_access/__init__.py +0 -0
  62. discopop-3.2.1/test/wip_end_to_end/do_all/stack_access/various/__init__.py +0 -0
  63. discopop-3.2.1/test/wip_end_to_end/do_all/stack_access/various/case_4/__init__.py +0 -0
  64. discopop-3.2.1/test/wip_end_to_end/do_all/stack_access/various/case_4/test.py +85 -0
  65. discopop-3.2.0/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
  66. discopop-3.2.0/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
  67. discopop-3.2.0/discopop_library/global_data/version/VERSION +0 -1
  68. discopop-3.2.0/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
  69. discopop-3.2.0/test/do_all/backwards_array_access/test.py +0 -69
  70. discopop-3.2.0/test/do_all/stack_access/various/case_1/test.py +0 -69
  71. discopop-3.2.0/test/do_all/stack_access/various/case_2/test.py +0 -69
  72. discopop-3.2.0/test/do_all/stack_access/various/case_3/test.py +0 -69
  73. discopop-3.2.0/test/do_all/stack_access/various/case_4/test.py +0 -69
  74. discopop-3.2.0/test/do_all/stack_access/various/case_5/test.py +0 -69
  75. discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/test.py +0 -75
  76. discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/test.py +0 -75
  77. discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/test.py +0 -75
  78. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_profiler/__init__.py +0 -0
  79. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_profiler/__main__.py +0 -0
  80. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_profiler/utils.py +0 -0
  81. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/__init__.py +0 -0
  82. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/__main__.py +0 -0
  83. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/assets/__init__.py +0 -0
  84. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/assets/icons/__init__.py +0 -0
  85. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/Arguments.py +0 -0
  86. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/CodePreview.py +0 -0
  87. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/Console.py +0 -0
  88. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/ExecutionConfiguration.py +0 -0
  89. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/Pragma.py +0 -0
  90. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/ProfilingContainer.py +0 -0
  91. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/Settings.py +0 -0
  92. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/Suggestion.py +0 -0
  93. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/TKVarStorage.py +0 -0
  94. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/classes/__init__.py +0 -0
  95. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/headless/__init__.py +0 -0
  96. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/headless/headless_execution.py +0 -0
  97. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/__init__.py +0 -0
  98. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/execution.py +0 -0
  99. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/main.py +0 -0
  100. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/optimizer/__init__.py +0 -0
  101. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/optimizer/binding.py +0 -0
  102. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/settings.py +0 -0
  103. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/suggestions/__init__.py +0 -0
  104. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/suggestions/overview.py +0 -0
  105. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/utils.py +0 -0
  106. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/widgets/ScrollableText.py +0 -0
  107. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/screens/widgets/__init__.py +0 -0
  108. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/utils.py +0 -0
  109. {discopop-3.2.0 → discopop-3.2.1}/DEPRECATED_discopop_wizard/wizard.py +0 -0
  110. {discopop-3.2.0 → discopop-3.2.1}/LICENSE +0 -0
  111. {discopop-3.2.0 → discopop-3.2.1}/MANIFEST.in +0 -0
  112. {discopop-3.2.0 → discopop-3.2.1}/README.md +0 -0
  113. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/dependency_links.txt +0 -0
  114. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/entry_points.txt +0 -0
  115. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/requires.txt +0 -0
  116. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/top_level.txt +0 -0
  117. {discopop-3.2.0 → discopop-3.2.1}/discopop.egg-info/zip-safe +0 -0
  118. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/__init__.py +0 -0
  119. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/__main__.py +0 -0
  120. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/discopop_explorer.py +0 -0
  121. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/generate_Data_CUInst.py +0 -0
  122. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/json_serializer.py +0 -0
  123. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/parallel_utils.py +0 -0
  124. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detection.py +0 -0
  125. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/PatternBase.py +0 -0
  126. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/PatternInfo.py +0 -0
  127. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/__init__.py +0 -0
  128. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/CombinedGPURegions.py +0 -0
  129. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/__init__.py +0 -0
  130. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Aliases.py +0 -0
  131. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Dependency.py +0 -0
  132. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/EntryPoint.py +0 -0
  133. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Enums.py +0 -0
  134. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/ExitPoint.py +0 -0
  135. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Update.py +0 -0
  136. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/__init__.py +0 -0
  137. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/combined_gpu_pattern_detector.py +0 -0
  138. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/prepare_metadata.py +0 -0
  139. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_1.py +0 -0
  140. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_2.py +0 -0
  141. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_3.py +0 -0
  142. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_4.py +0 -0
  143. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_5.py +0 -0
  144. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_6.py +0 -0
  145. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/combined_gpu_patterns/utilities.py +0 -0
  146. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/device_updates.py +0 -0
  147. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/geometric_decomposition_detector.py +0 -0
  148. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/pipeline_detector.py +0 -0
  149. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPULoop.py +0 -0
  150. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPUMemory.py +0 -0
  151. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPURegions.py +0 -0
  152. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/__init__.py +0 -0
  153. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/gpu_pattern_detector.py +0 -0
  154. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/simple_gpu_patterns/utils.py +0 -0
  155. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/__init__.py +0 -0
  156. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/alias_detection.py +0 -0
  157. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/classes.py +0 -0
  158. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/filter.py +0 -0
  159. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/postprocessor.py +0 -0
  160. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/preprocessor.py +0 -0
  161. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/__init__.py +0 -0
  162. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/auxiliary.py +0 -0
  163. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/barriers.py +0 -0
  164. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/data_sharing_clauses.py +0 -0
  165. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/dependency_clauses.py +0 -0
  166. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/tasks.py +0 -0
  167. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/task_parallelism_detector.py +0 -0
  168. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/pattern_detectors/task_parallelism/tp_utils.py +0 -0
  169. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/plugins/__init__.py +0 -0
  170. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/plugins/pipeline.py +0 -0
  171. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/test/__init__.py +0 -0
  172. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/utils.py +0 -0
  173. {discopop-3.2.0 → discopop-3.2.1}/discopop_explorer/variable.py +0 -0
  174. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/ArgumentClasses/GeneralArguments.py +0 -0
  175. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/CodeGenerator.py +0 -0
  176. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/CodeGeneratorArguments.py +0 -0
  177. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/__init__.py +0 -0
  178. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/ContentBuffer.py +0 -0
  179. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/Enums.py +0 -0
  180. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/Line.py +0 -0
  181. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/Pragma.py +0 -0
  182. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/UnpackedSuggestion.py +0 -0
  183. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/CodeGenerator/classes/__init__.py +0 -0
  184. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/ConfigProvider/assets/.gitignore +0 -0
  185. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/GlobalLogger/setup.py +0 -0
  186. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/HostpotLoader/HotspotLoaderArguments.py +0 -0
  187. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/HostpotLoader/HotspotNodeType.py +0 -0
  188. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/HostpotLoader/HotspotType.py +0 -0
  189. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/HostpotLoader/hostpot_loader.py +0 -0
  190. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/JSONHandler/JSONHandler.py +0 -0
  191. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/JSONHandler/__init__.py +0 -0
  192. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/LineMapping/__init__.py +0 -0
  193. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/LineMapping/diff_modifications.py +0 -0
  194. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/LineMapping/initialize.py +0 -0
  195. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/LineMapping/load.py +0 -0
  196. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/LineMapping/save.py +0 -0
  197. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/MemoryRegions/__init__.py +0 -0
  198. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/MemoryRegions/utils.py +0 -0
  199. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/PatchApplicatorArguments.py +0 -0
  200. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/__init__.py +0 -0
  201. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/__main__.py +0 -0
  202. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/apply.py +0 -0
  203. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/clear.py +0 -0
  204. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/list.py +0 -0
  205. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/load.py +0 -0
  206. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/patch_applicator.py +0 -0
  207. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchApplicator/rollback.py +0 -0
  208. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/PatchGeneratorArguments.py +0 -0
  209. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/__init__.py +0 -0
  210. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/diffs.py +0 -0
  211. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/from_json_patterns.py +0 -0
  212. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/from_optimizer_output.py +0 -0
  213. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatchGenerator/patch_generator.py +0 -0
  214. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PathManagement/PathManagement.py +0 -0
  215. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PathManagement/__init__.py +0 -0
  216. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/PatternIdManagement/unique_pattern_id.py +0 -0
  217. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/__init__.py +0 -0
  218. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/CostModels/CostModel.py +0 -0
  219. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/CostModels/DataTransfer/DataTransferCosts.py +0 -0
  220. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/CostModels/DataTransfer/__init__.py +0 -0
  221. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/CostModels/__init__.py +0 -0
  222. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/CostModels/utilities.py +0 -0
  223. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/DataTransfers.py +0 -0
  224. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/NewDataTransfers.py +0 -0
  225. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/__init__.py +0 -0
  226. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/calculate_configuration_data_movement.py +0 -0
  227. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/prepare_force_branch_end_data_movement.py +0 -0
  228. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement.py +0 -0
  229. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement_prior_to_call.py +0 -0
  230. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/DelaunayInterpolatedMicrobench.py +0 -0
  231. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/ExtrapInterpolatedMicrobench.py +0 -0
  232. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/Microbench.py +0 -0
  233. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/MicrobenchParser.py +0 -0
  234. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/MixedMicrobench.py +0 -0
  235. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/PureDataMicrobench.py +0 -0
  236. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/__init__.py +0 -0
  237. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Microbench/utils.py +0 -0
  238. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/OptimizationGraph.py +0 -0
  239. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/OptimizerArguments.py +0 -0
  240. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/PETParser/DataAccesses/CalculateUpdates.py +0 -0
  241. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/PETParser/DataAccesses/FromCUs.py +0 -0
  242. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/PETParser/DataAccesses/__init__.py +0 -0
  243. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/PETParser/PETParser.py +0 -0
  244. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/PETParser/__init__.py +0 -0
  245. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/AddRangesToUpdates.py +0 -0
  246. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/LoopInitializationUpdates.py +0 -0
  247. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveDuplicatedUpdates.py +0 -0
  248. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveLoopIndexUpdates.py +0 -0
  249. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveSameDeviceUpdates.py +0 -0
  250. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/UpdateOptimization/main.py +0 -0
  251. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Variables/Experiment.py +0 -0
  252. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Variables/ExperimentUtils.py +0 -0
  253. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/Variables/__init__.py +0 -0
  254. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/__init__.py +0 -0
  255. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/__main__.py +0 -0
  256. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/bindings/__init__.py +0 -0
  257. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/bindings/utilities.py +0 -0
  258. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/__init__.py +0 -0
  259. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/context/ContextObject.py +0 -0
  260. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/context/ContextObjectUtils.py +0 -0
  261. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/context/Update.py +0 -0
  262. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/context/__init__.py +0 -0
  263. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/CallEdge.py +0 -0
  264. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/ChildEdge.py +0 -0
  265. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/DataFlowEdge.py +0 -0
  266. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/GenericEdge.py +0 -0
  267. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/MutuallyExclusiveEdge.py +0 -0
  268. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/OptionEdge.py +0 -0
  269. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/RequirementEdge.py +0 -0
  270. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/SuccessorEdge.py +0 -0
  271. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/TemporaryEdge.py +0 -0
  272. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/edges/__init__.py +0 -0
  273. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/enums/Distributions.py +0 -0
  274. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/enums/__init__.py +0 -0
  275. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextMerge.py +0 -0
  276. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextNode.py +0 -0
  277. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextRestore.py +0 -0
  278. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextSave.py +0 -0
  279. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshot.py +0 -0
  280. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshotPop.py +0 -0
  281. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/DeviceSwitch.py +0 -0
  282. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/FunctionReturn.py +0 -0
  283. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/FunctionRoot.py +0 -0
  284. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/GenericNode.py +0 -0
  285. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/Loop.py +0 -0
  286. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/SynchronizationTrigger.py +0 -0
  287. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/Workload.py +0 -0
  288. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/nodes/__init__.py +0 -0
  289. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/Network.py +0 -0
  290. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/System.py +0 -0
  291. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/__init__.py +0 -0
  292. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/devices/CPU.py +0 -0
  293. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/devices/Device.py +0 -0
  294. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/devices/DeviceTypeEnum.py +0 -0
  295. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/devices/GPU.py +0 -0
  296. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/devices/__init__.py +0 -0
  297. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/system/system_utils.py +0 -0
  298. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/types/Aliases.py +0 -0
  299. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/types/DataAccessType.py +0 -0
  300. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/classes/types/__init__.py +0 -0
  301. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/__init__.py +0 -0
  302. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/plotting/CostModels.py +0 -0
  303. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/plotting/__init__.py +0 -0
  304. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/presentation/ChoiceDetails.py +0 -0
  305. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/presentation/OptionTable.py +0 -0
  306. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/presentation/__init__.py +0 -0
  307. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/queries/ValueTableQuery.py +0 -0
  308. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/queries/__init__.py +0 -0
  309. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/widgets/ScrollableFrame.py +0 -0
  310. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/gui/widgets/__init__.py +0 -0
  311. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/interactive/interactive_optimizer.py +0 -0
  312. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimization/evaluate.py +0 -0
  313. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimization/evaluate_all_decision_combinations.py +0 -0
  314. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimization/evolutionary_algorithm.py +0 -0
  315. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimization/greedy.py +0 -0
  316. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimization/validation.py +0 -0
  317. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/optimizer.py +0 -0
  318. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/scheduling/__init__.py +0 -0
  319. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/scheduling/workload_delta.py +0 -0
  320. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/__init__.py +0 -0
  321. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/importers/__init__.py +0 -0
  322. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/importers/do_all.py +0 -0
  323. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/importers/main.py +0 -0
  324. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/importers/reduction.py +0 -0
  325. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/optimizers/loop_collapse.py +0 -0
  326. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/suggestions/optimizers/main.py +0 -0
  327. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/MOGUtilities.py +0 -0
  328. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/__init__.py +0 -0
  329. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/insert_device_switch_nodes.py +0 -0
  330. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization/RandomSamples.py +0 -0
  331. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization/__init__.py +0 -0
  332. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization/TopDown.py +0 -0
  333. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization/__init__.py +0 -0
  334. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/optimization/__init__.py +0 -0
  335. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/simple_utilities.py +0 -0
  336. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/visualization/__init__.py +0 -0
  337. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/visualization/plotting.py +0 -0
  338. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/discopop_optimizer/utilities/visualization/update_graph.py +0 -0
  339. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/global_data/__init__.py +0 -0
  340. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/global_data/version/__init__.py +0 -0
  341. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/global_data/version/utils.py +0 -0
  342. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/py.typed +0 -0
  343. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/result_classes/DetectionResult.py +0 -0
  344. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/result_classes/MergedPattern.py +0 -0
  345. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/result_classes/OptimizerOutputPattern.py +0 -0
  346. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/result_classes/PatternStorage.py +0 -0
  347. {discopop-3.2.0 → discopop-3.2.1}/discopop_library/result_classes/__init__.py +0 -0
  348. {discopop-3.2.0 → discopop-3.2.1}/setup.cfg +0 -0
  349. {discopop-3.2.0 → discopop-3.2.1}/setup.py +0 -0
  350. {discopop-3.2.0 → discopop-3.2.1}/test/__init__.py +0 -0
  351. {discopop-3.2.0/test/do_all → discopop-3.2.1/test/end_to_end}/__init__.py +0 -0
  352. {discopop-3.2.0/test/do_all/backwards_array_access → discopop-3.2.1/test/end_to_end/do_all}/__init__.py +0 -0
  353. {discopop-3.2.0/test/do_all/calls → discopop-3.2.1/test/end_to_end/do_all/backwards_array_access}/__init__.py +0 -0
  354. {discopop-3.2.0/test/do_all/calls/allowing → discopop-3.2.1/test/end_to_end/do_all/calls}/__init__.py +0 -0
  355. {discopop-3.2.0/test/do_all/calls/preventing → discopop-3.2.1/test/end_to_end/do_all/calls/above_nesting_level_3}/__init__.py +0 -0
  356. {discopop-3.2.0/test/do_all/calls/preventing/simple → discopop-3.2.1/test/end_to_end/do_all/calls/allowing}/__init__.py +0 -0
  357. {discopop-3.2.0/test/do_all/calls/second_order → discopop-3.2.1/test/end_to_end/do_all/calls/allowing_2}/__init__.py +0 -0
  358. {discopop-3.2.0/test/do_all/calls/second_order/allowing → discopop-3.2.1/test/end_to_end/do_all/calls/complex}/__init__.py +0 -0
  359. {discopop-3.2.0/test/do_all/calls/second_order/allowing_2 → discopop-3.2.1/test/end_to_end/do_all/calls/preventing}/__init__.py +0 -0
  360. {discopop-3.2.0/test/do_all/calls/second_order/preventing → discopop-3.2.1/test/end_to_end/do_all/calls/preventing/simple}/__init__.py +0 -0
  361. {discopop-3.2.0/test/do_all/calls/second_order/preventing_2 → discopop-3.2.1/test/end_to_end/do_all/calls/second_order}/__init__.py +0 -0
  362. {discopop-3.2.0/test/do_all/daxpy → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/allowing}/__init__.py +0 -0
  363. {discopop-3.2.0/test/do_all/negative → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/allowing_2}/__init__.py +0 -0
  364. {discopop-3.2.0/test/do_all/negative/nested/OMPSCR → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/preventing}/__init__.py +0 -0
  365. {discopop-3.2.0/test/do_all/negative/nested → discopop-3.2.1/test/end_to_end/do_all/calls/second_order/preventing_2}/__init__.py +0 -0
  366. {discopop-3.2.0/test/do_all/simple → discopop-3.2.1/test/end_to_end/do_all/daxpy}/__init__.py +0 -0
  367. {discopop-3.2.0/test/do_all/simple/global_vars → discopop-3.2.1/test/end_to_end/do_all/negative}/__init__.py +0 -0
  368. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy → discopop-3.2.1/test/end_to_end/do_all/negative/nested/OMPSCR}/__init__.py +0 -0
  369. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays → discopop-3.2.1/test/end_to_end/do_all/negative/nested}/__init__.py +0 -0
  370. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct → discopop-3.2.1/test/end_to_end/do_all/simple}/__init__.py +0 -0
  371. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars}/__init__.py +0 -0
  372. {discopop-3.2.0/test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy}/__init__.py +0 -0
  373. {discopop-3.2.0/test/do_all/simple/nested → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays}/__init__.py +0 -0
  374. {discopop-3.2.0/test/do_all/simple/nested/depth_2 → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct}/__init__.py +0 -0
  375. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors}/__init__.py +0 -0
  376. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/both_loops_doall → discopop-3.2.1/test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct}/__init__.py +0 -0
  377. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/inner_loop_doall → discopop-3.2.1/test/end_to_end/do_all/simple/nested}/__init__.py +0 -0
  378. {discopop-3.2.0/test/do_all/simple/nested/depth_2/positive/outer_loop_doall → discopop-3.2.1/test/end_to_end/do_all/simple/nested/depth_2}/__init__.py +0 -0
  379. {discopop-3.2.0/test/do_all/simple/not_nested → discopop-3.2.1/test/end_to_end/do_all/simple/nested/depth_2/positive}/__init__.py +0 -0
  380. {discopop-3.2.0/test/do_all/simple/not_nested/negative → discopop-3.2.1/test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall}/__init__.py +0 -0
  381. {discopop-3.2.0/test/do_all/simple/not_nested/negative/minimal → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested}/__init__.py +0 -0
  382. {discopop-3.2.0/test/do_all/simple/not_nested/negative/stack_access → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested/negative}/__init__.py +0 -0
  383. {discopop-3.2.0/test/do_all/simple/not_nested/positive → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested/negative/minimal}/__init__.py +0 -0
  384. {discopop-3.2.0/test/do_all → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested/negative}/stack_access/__init__.py +0 -0
  385. {discopop-3.2.0/test/do_all/stack_access/nested → discopop-3.2.1/test/end_to_end/do_all/simple/not_nested/positive}/__init__.py +0 -0
  386. {discopop-3.2.0/test/do_all/stack_access/nested/positive → discopop-3.2.1/test/end_to_end/do_all/stack_access}/__init__.py +0 -0
  387. {discopop-3.2.0/test/do_all/stack_access/various → discopop-3.2.1/test/end_to_end/do_all/stack_access/nested}/__init__.py +0 -0
  388. {discopop-3.2.0/test/do_all/stack_access/various/case_0 → discopop-3.2.1/test/end_to_end/do_all/stack_access/nested/positive}/__init__.py +0 -0
  389. {discopop-3.2.0/test/do_all/stack_access/various/case_1 → discopop-3.2.1/test/end_to_end/do_all/stack_access/various}/__init__.py +0 -0
  390. {discopop-3.2.0/test/do_all/stack_access/various/case_2 → discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_0}/__init__.py +0 -0
  391. {discopop-3.2.0/test/do_all/stack_access/various/case_3 → discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_1}/__init__.py +0 -0
  392. {discopop-3.2.0/test/do_all/stack_access/various/case_4 → discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_2}/__init__.py +0 -0
  393. {discopop-3.2.0/test/do_all/stack_access/various/case_5 → discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_3}/__init__.py +0 -0
  394. {discopop-3.2.0/test/do_all/struct → discopop-3.2.1/test/end_to_end/do_all/stack_access/various/case_5}/__init__.py +0 -0
  395. {discopop-3.2.0/test/do_all/struct/positive → discopop-3.2.1/test/end_to_end/do_all/struct}/__init__.py +0 -0
  396. {discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy → discopop-3.2.1/test/end_to_end/do_all/struct/positive}/__init__.py +0 -0
  397. {discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct → discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy}/__init__.py +0 -0
  398. {discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types → discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct}/__init__.py +0 -0
  399. {discopop-3.2.0/test/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types → discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types}/__init__.py +0 -0
  400. {discopop-3.2.0/test/optimizer → discopop-3.2.1/test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types}/__init__.py +0 -0
  401. {discopop-3.2.0/test/optimizer/loop_collapse → discopop-3.2.1/test/end_to_end/optimizer}/__init__.py +0 -0
  402. {discopop-3.2.0/test/optimizer/loop_collapse/positive → discopop-3.2.1/test/end_to_end/optimizer/loop_collapse}/__init__.py +0 -0
  403. {discopop-3.2.0/test/optimizer/loop_collapse/positive/simple_1 → discopop-3.2.1/test/end_to_end/optimizer/loop_collapse/positive}/__init__.py +0 -0
  404. {discopop-3.2.0/test/reduction_pattern → discopop-3.2.1/test/end_to_end/optimizer/loop_collapse/positive/simple_1}/__init__.py +0 -0
  405. {discopop-3.2.0/test/reduction_pattern/positive → discopop-3.2.1/test/end_to_end/reduction_pattern}/__init__.py +0 -0
  406. {discopop-3.2.0/test/reduction_pattern/positive/nested/OMPSCR → discopop-3.2.1/test/end_to_end/reduction_pattern/positive}/__init__.py +0 -0
  407. {discopop-3.2.0/test/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot → discopop-3.2.1/test/end_to_end/reduction_pattern/positive/nested/OMPSCR}/__init__.py +0 -0
  408. {discopop-3.2.0/test/reduction_pattern/positive/nested → discopop-3.2.1/test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot}/__init__.py +0 -0
  409. {discopop-3.2.0/test/utils → discopop-3.2.1/test/end_to_end/reduction_pattern/positive/nested}/__init__.py +0 -0
  410. {discopop-3.2.0/test/utils/validator_classes → discopop-3.2.1/test/utils}/__init__.py +0 -0
  411. {discopop-3.2.0 → discopop-3.2.1}/test/utils/validator_classes/DoAllInfoForValidation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: discopop
3
- Version: 3.2.0
3
+ Version: 3.2.1
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: 3.2.0
3
+ Version: 3.2.1
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
@@ -286,94 +286,111 @@ discopop_library/result_classes/OptimizerOutputPattern.py
286
286
  discopop_library/result_classes/PatternStorage.py
287
287
  discopop_library/result_classes/__init__.py
288
288
  test/__init__.py
289
- test/do_all/__init__.py
290
- test/do_all/backwards_array_access/__init__.py
291
- test/do_all/backwards_array_access/test.py
292
- test/do_all/calls/__init__.py
293
- test/do_all/calls/allowing/__init__.py
294
- test/do_all/calls/allowing/test.py
295
- test/do_all/calls/preventing/__init__.py
296
- test/do_all/calls/preventing/simple/__init__.py
297
- test/do_all/calls/preventing/simple/test.py
298
- test/do_all/calls/second_order/__init__.py
299
- test/do_all/calls/second_order/allowing/__init__.py
300
- test/do_all/calls/second_order/allowing/test.py
301
- test/do_all/calls/second_order/allowing_2/__init__.py
302
- test/do_all/calls/second_order/allowing_2/test.py
303
- test/do_all/calls/second_order/preventing/__init__.py
304
- test/do_all/calls/second_order/preventing/test.py
305
- test/do_all/calls/second_order/preventing_2/__init__.py
306
- test/do_all/calls/second_order/preventing_2/test.py
307
- test/do_all/daxpy/__init__.py
308
- test/do_all/daxpy/test.py
309
- test/do_all/negative/__init__.py
310
- test/do_all/negative/nested/__init__.py
311
- test/do_all/negative/nested/OMPSCR/__init__.py
312
- test/do_all/simple/__init__.py
313
- test/do_all/simple/global_vars/__init__.py
314
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/__init__.py
315
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays/__init__.py
316
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays/test.py
317
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct/__init__.py
318
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct/test.py
319
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/__init__.py
320
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/test.py
321
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/__init__.py
322
- test/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/test.py
323
- test/do_all/simple/nested/__init__.py
324
- test/do_all/simple/nested/depth_2/__init__.py
325
- test/do_all/simple/nested/depth_2/positive/__init__.py
326
- test/do_all/simple/nested/depth_2/positive/both_loops_doall/__init__.py
327
- test/do_all/simple/nested/depth_2/positive/both_loops_doall/test.py
328
- test/do_all/simple/nested/depth_2/positive/inner_loop_doall/__init__.py
329
- test/do_all/simple/nested/depth_2/positive/inner_loop_doall/test.py
330
- test/do_all/simple/nested/depth_2/positive/outer_loop_doall/__init__.py
331
- test/do_all/simple/nested/depth_2/positive/outer_loop_doall/test.py
332
- test/do_all/simple/not_nested/__init__.py
333
- test/do_all/simple/not_nested/negative/__init__.py
334
- test/do_all/simple/not_nested/negative/minimal/__init__.py
335
- test/do_all/simple/not_nested/negative/minimal/test.py
336
- test/do_all/simple/not_nested/negative/stack_access/__init__.py
337
- test/do_all/simple/not_nested/negative/stack_access/test.py
338
- test/do_all/simple/not_nested/positive/__init__.py
339
- test/do_all/simple/not_nested/positive/test.py
340
- test/do_all/stack_access/__init__.py
341
- test/do_all/stack_access/nested/__init__.py
342
- test/do_all/stack_access/nested/positive/__init__.py
343
- test/do_all/stack_access/nested/positive/test.py
344
- test/do_all/stack_access/various/__init__.py
345
- test/do_all/stack_access/various/case_0/__init__.py
346
- test/do_all/stack_access/various/case_0/test.py
347
- test/do_all/stack_access/various/case_1/__init__.py
348
- test/do_all/stack_access/various/case_1/test.py
349
- test/do_all/stack_access/various/case_2/__init__.py
350
- test/do_all/stack_access/various/case_2/test.py
351
- test/do_all/stack_access/various/case_3/__init__.py
352
- test/do_all/stack_access/various/case_3/test.py
353
- test/do_all/stack_access/various/case_4/__init__.py
354
- test/do_all/stack_access/various/case_4/test.py
355
- test/do_all/stack_access/various/case_5/__init__.py
356
- test/do_all/stack_access/various/case_5/test.py
357
- test/do_all/struct/__init__.py
358
- test/do_all/struct/positive/__init__.py
359
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/__init__.py
360
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/__init__.py
361
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/test.py
362
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/__init__.py
363
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/test.py
364
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/__init__.py
365
- test/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/test.py
366
- test/optimizer/__init__.py
367
- test/optimizer/loop_collapse/__init__.py
368
- test/optimizer/loop_collapse/positive/__init__.py
369
- test/optimizer/loop_collapse/positive/simple_1/__init__.py
370
- test/optimizer/loop_collapse/positive/simple_1/test.py
371
- test/reduction_pattern/__init__.py
372
- test/reduction_pattern/positive/__init__.py
373
- test/reduction_pattern/positive/nested/__init__.py
374
- test/reduction_pattern/positive/nested/OMPSCR/__init__.py
375
- test/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/__init__.py
376
- test/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/test.py
289
+ test/end_to_end/__init__.py
290
+ test/end_to_end/do_all/__init__.py
291
+ test/end_to_end/do_all/backwards_array_access/__init__.py
292
+ test/end_to_end/do_all/backwards_array_access/test.py
293
+ test/end_to_end/do_all/calls/__init__.py
294
+ test/end_to_end/do_all/calls/above_nesting_level_3/__init__.py
295
+ test/end_to_end/do_all/calls/above_nesting_level_3/test.py
296
+ test/end_to_end/do_all/calls/allowing/__init__.py
297
+ test/end_to_end/do_all/calls/allowing/test.py
298
+ test/end_to_end/do_all/calls/allowing_2/__init__.py
299
+ test/end_to_end/do_all/calls/allowing_2/test.py
300
+ test/end_to_end/do_all/calls/complex/__init__.py
301
+ test/end_to_end/do_all/calls/complex/test.py
302
+ test/end_to_end/do_all/calls/preventing/__init__.py
303
+ test/end_to_end/do_all/calls/preventing/simple/__init__.py
304
+ test/end_to_end/do_all/calls/preventing/simple/test.py
305
+ test/end_to_end/do_all/calls/second_order/__init__.py
306
+ test/end_to_end/do_all/calls/second_order/allowing/__init__.py
307
+ test/end_to_end/do_all/calls/second_order/allowing/test.py
308
+ test/end_to_end/do_all/calls/second_order/allowing_2/__init__.py
309
+ test/end_to_end/do_all/calls/second_order/allowing_2/test.py
310
+ test/end_to_end/do_all/calls/second_order/preventing/__init__.py
311
+ test/end_to_end/do_all/calls/second_order/preventing/test.py
312
+ test/end_to_end/do_all/calls/second_order/preventing_2/__init__.py
313
+ test/end_to_end/do_all/calls/second_order/preventing_2/test.py
314
+ test/end_to_end/do_all/daxpy/__init__.py
315
+ test/end_to_end/do_all/daxpy/test.py
316
+ test/end_to_end/do_all/negative/__init__.py
317
+ test/end_to_end/do_all/negative/nested/__init__.py
318
+ test/end_to_end/do_all/negative/nested/OMPSCR/__init__.py
319
+ test/end_to_end/do_all/simple/__init__.py
320
+ test/end_to_end/do_all/simple/global_vars/__init__.py
321
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/__init__.py
322
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays/__init__.py
323
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_arrays/test.py
324
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct/__init__.py
325
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_struct/test.py
326
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/__init__.py
327
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors/test.py
328
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/__init__.py
329
+ test/end_to_end/do_all/simple/global_vars/miniFE_CSRMatrix_proxy/global_vectors_and_struct/test.py
330
+ test/end_to_end/do_all/simple/nested/__init__.py
331
+ test/end_to_end/do_all/simple/nested/depth_2/__init__.py
332
+ test/end_to_end/do_all/simple/nested/depth_2/positive/__init__.py
333
+ test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall/__init__.py
334
+ test/end_to_end/do_all/simple/nested/depth_2/positive/both_loops_doall/test.py
335
+ test/end_to_end/do_all/simple/not_nested/__init__.py
336
+ test/end_to_end/do_all/simple/not_nested/negative/__init__.py
337
+ test/end_to_end/do_all/simple/not_nested/negative/minimal/__init__.py
338
+ test/end_to_end/do_all/simple/not_nested/negative/minimal/test.py
339
+ test/end_to_end/do_all/simple/not_nested/negative/stack_access/__init__.py
340
+ test/end_to_end/do_all/simple/not_nested/negative/stack_access/test.py
341
+ test/end_to_end/do_all/simple/not_nested/positive/__init__.py
342
+ test/end_to_end/do_all/simple/not_nested/positive/test.py
343
+ test/end_to_end/do_all/stack_access/__init__.py
344
+ test/end_to_end/do_all/stack_access/nested/__init__.py
345
+ test/end_to_end/do_all/stack_access/nested/positive/__init__.py
346
+ test/end_to_end/do_all/stack_access/nested/positive/test.py
347
+ test/end_to_end/do_all/stack_access/various/__init__.py
348
+ test/end_to_end/do_all/stack_access/various/case_0/__init__.py
349
+ test/end_to_end/do_all/stack_access/various/case_0/test.py
350
+ test/end_to_end/do_all/stack_access/various/case_1/__init__.py
351
+ test/end_to_end/do_all/stack_access/various/case_1/test.py
352
+ test/end_to_end/do_all/stack_access/various/case_2/__init__.py
353
+ test/end_to_end/do_all/stack_access/various/case_2/test.py
354
+ test/end_to_end/do_all/stack_access/various/case_3/__init__.py
355
+ test/end_to_end/do_all/stack_access/various/case_3/test.py
356
+ test/end_to_end/do_all/stack_access/various/case_5/__init__.py
357
+ test/end_to_end/do_all/stack_access/various/case_5/test.py
358
+ test/end_to_end/do_all/struct/__init__.py
359
+ test/end_to_end/do_all/struct/positive/__init__.py
360
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/__init__.py
361
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/__init__.py
362
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/access_outside_struct/test.py
363
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/__init__.py
364
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/std_data_types/test.py
365
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/__init__.py
366
+ test/end_to_end/do_all/struct/positive/miniFE_CSRMatrix_proxy/template_data_types/test.py
367
+ test/end_to_end/optimizer/__init__.py
368
+ test/end_to_end/optimizer/loop_collapse/__init__.py
369
+ test/end_to_end/optimizer/loop_collapse/positive/__init__.py
370
+ test/end_to_end/optimizer/loop_collapse/positive/simple_1/__init__.py
371
+ test/end_to_end/optimizer/loop_collapse/positive/simple_1/test.py
372
+ test/end_to_end/reduction_pattern/__init__.py
373
+ test/end_to_end/reduction_pattern/positive/__init__.py
374
+ test/end_to_end/reduction_pattern/positive/nested/__init__.py
375
+ test/end_to_end/reduction_pattern/positive/nested/OMPSCR/__init__.py
376
+ test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/__init__.py
377
+ test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/test.py
377
378
  test/utils/__init__.py
379
+ test/utils/existence/__init__.py
380
+ test/utils/existence/existence_utils.py
378
381
  test/utils/validator_classes/DoAllInfoForValidation.py
379
- test/utils/validator_classes/__init__.py
382
+ test/utils/validator_classes/__init__.py
383
+ test/wip_end_to_end/__init__.py
384
+ test/wip_end_to_end/do_all/__init__.py
385
+ test/wip_end_to_end/do_all/simple/__init__.py
386
+ test/wip_end_to_end/do_all/simple/nested/__init__.py
387
+ test/wip_end_to_end/do_all/simple/nested/depth_2/__init__.py
388
+ test/wip_end_to_end/do_all/simple/nested/depth_2/positive/__init__.py
389
+ test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall/__init__.py
390
+ test/wip_end_to_end/do_all/simple/nested/depth_2/positive/inner_loop_doall/test.py
391
+ test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall/__init__.py
392
+ test/wip_end_to_end/do_all/simple/nested/depth_2/positive/outer_loop_doall/test.py
393
+ test/wip_end_to_end/do_all/stack_access/__init__.py
394
+ test/wip_end_to_end/do_all/stack_access/various/__init__.py
395
+ test/wip_end_to_end/do_all/stack_access/various/case_4/__init__.py
396
+ test/wip_end_to_end/do_all/stack_access/various/case_4/test.py
@@ -142,6 +142,10 @@ class Dependency:
142
142
  sink_line: Optional[LineID] = None
143
143
  intra_iteration: bool = False
144
144
  intra_iteration_level: int = -1
145
+ metadata_intra_iteration_dep: Optional[List[LineID]] = None
146
+ metadata_inter_iteration_dep: Optional[List[LineID]] = None
147
+ metadata_intra_call_dep: Optional[List[LineID]] = None
148
+ metadata_inter_call_dep: Optional[List[LineID]] = None
145
149
 
146
150
  def __init__(self, type: EdgeType):
147
151
  self.etype = type
@@ -208,7 +212,9 @@ class Node:
208
212
  return LineID(f"{self.file_id}:{self.end_line}")
209
213
 
210
214
  def contains_line(self, other_line) -> bool:
211
- if other_line == "GlobalVar":
215
+ if other_line == "GlobalVar" or other_line == "LineNotFound":
216
+ return False
217
+ if not ":" in other_line:
212
218
  return False
213
219
  other_file_id = int(other_line.split(":")[0])
214
220
  other_line_num = int(other_line.split(":")[1])
@@ -567,6 +573,33 @@ def parse_dependency(dep: DependenceItem) -> Dependency:
567
573
  d.dtype = DepType[dep.type]
568
574
  d.var_name = dep.var_name
569
575
  d.memory_region = dep.memory_region
576
+ # parse metadata
577
+ if ";" in dep.metadata:
578
+ for md in dep.metadata.split(";"):
579
+ if len(md) == 0:
580
+ continue
581
+ md_type = md[: md.index(":")]
582
+ md_raw_values = md[md.index(":") + 1 :]
583
+ md_values = [tmp for tmp in md_raw_values.split(",") if len(tmp) > 0]
584
+
585
+ if md_type == "intra_iteration_dep":
586
+ if d.metadata_intra_iteration_dep is None:
587
+ d.metadata_intra_iteration_dep = []
588
+ d.metadata_intra_iteration_dep += md_values
589
+ elif md_type == "inter_iteration_dep":
590
+ if d.metadata_inter_iteration_dep is None:
591
+ d.metadata_inter_iteration_dep = []
592
+ d.metadata_inter_iteration_dep += md_values
593
+ elif md_type == "intra_call_dep":
594
+ if d.metadata_intra_call_dep is None:
595
+ d.metadata_intra_call_dep = []
596
+ d.metadata_intra_call_dep += md_values
597
+ elif md_type == "inter_call_dep":
598
+ if d.metadata_inter_call_dep is None:
599
+ d.metadata_inter_call_dep = []
600
+ d.metadata_inter_call_dep += md_values
601
+ else:
602
+ raise ValueError("Unknown metadata type: ", md_type)
570
603
  return d
571
604
 
572
605
 
@@ -31,6 +31,7 @@ class DependenceItem(object):
31
31
  type: Any
32
32
  var_name: Any
33
33
  memory_region: Any
34
+ metadata: Any
34
35
  # TODO improve typing
35
36
 
36
37
 
@@ -154,17 +155,21 @@ def __parse_dep_file(dep_fd, output_path: str) -> Tuple[List[DependenceItem], Li
154
155
  var_str = "" if len(source_fields) == 1 else source_fields[1]
155
156
  var_name = ""
156
157
  aa_var_name = ""
158
+ metadata = ""
157
159
  if len(var_str) > 0:
158
160
  if "(" in var_str:
159
161
  split_var_str = var_str.split("(")
160
162
  var_name = split_var_str[0]
161
163
  aa_var_name = split_var_str[1][
162
- :-1
164
+ : split_var_str[1].index(")")
163
165
  ] # name of the allocated variable which is accessed, i.e. variable name after anti aliasing
166
+ metadata_str = split_var_str[1][split_var_str[1].index(")") + 1 :]
167
+ if "[" in metadata_str:
168
+ metadata = metadata_str[1:-1]
164
169
  else:
165
170
  # compatibility with results created without alias analysis
166
171
  var_name = var_str
167
- dependencies_list.append(DependenceItem(sink, source_fields[0], type, var_name, aa_var_name))
172
+ dependencies_list.append(DependenceItem(sink, source_fields[0], type, var_name, aa_var_name, metadata))
168
173
 
169
174
  return dependencies_list, loop_data_list
170
175
 
@@ -146,6 +146,12 @@ def __detect_do_all(pet: PEGraphX, root_loop: LoopNode) -> bool:
146
146
  for v in root_children_loops:
147
147
  loop_start_lines.append(v.start_position())
148
148
  fp, p, lp, s, r = classify_loop_variables(pet, root_loop)
149
+
150
+ # get parents of root_loop
151
+ parent_loops = __get_parent_loops(pet, root_loop)
152
+ parent_function_lineid = pet.get_parent_function(root_loop).start_position()
153
+ called_functions_lineids = __get_called_functions(pet, root_loop)
154
+
149
155
  # get variables which are defined inside the loop
150
156
  defined_inside_loop: List[Tuple[Variable, Set[MemoryRegion]]] = []
151
157
  tmp_loop_variables = pet.get_variables(root_children_cus)
@@ -182,6 +188,9 @@ def __detect_do_all(pet: PEGraphX, root_loop: LoopNode) -> bool:
182
188
  p,
183
189
  lp,
184
190
  defined_inside_loop,
191
+ parent_loops,
192
+ parent_function_lineid,
193
+ called_functions_lineids,
185
194
  ):
186
195
  # if pet.depends_ignore_readonly(subnodes[i], subnodes[j], root_loop):
187
196
  return False
@@ -204,6 +213,9 @@ def __check_loop_dependencies(
204
213
  privates: List[Variable],
205
214
  last_privates: List[Variable],
206
215
  defined_inside_loop: List[Tuple[Variable, Set[MemoryRegion]]],
216
+ parent_loops: List[LineID],
217
+ parent_function_lineid: LineID,
218
+ called_functions_lineids: List[LineID],
207
219
  ) -> bool:
208
220
  """Returns True, if dependencies between the respective subgraphs chave been found.
209
221
  Returns False otherwise, which results in the potential suggestion of a Do-All pattern."""
@@ -228,6 +240,9 @@ def __check_loop_dependencies(
228
240
 
229
241
  for source, target, dep in deps:
230
242
 
243
+ if root_loop.start_position() == "1:153":
244
+ pass
245
+
231
246
  # todo: move this calculation to the innermost point possible to reduce computation costs
232
247
  # get metadata for dependency
233
248
  dep_source_nesting_level = __calculate_nesting_level(pet, root_loop, source)
@@ -265,28 +280,6 @@ def __check_loop_dependencies(
265
280
  else:
266
281
  return True
267
282
 
268
- # # dep within the loop. not problematic, if intra_iteration_level == 0
269
- # if dep.intra_iteration_level == 0:
270
- # pass
271
- # else:
272
- # # might be problematic
273
- # # check if source and target in children loops
274
- # contained_in_nested_loop = False
275
- # for nested_loop in [l for l in root_children_loops if l != root_loop]:
276
- # nested_children = pet.subtree_of_type(nested_loop, (CUNode, LoopNode))
277
- # nested_children_cus = [cast(CUNode, cu) for cu in nested_children if cu.type == NodeType.CU]
278
- # if pet.node_at(source) in nested_children_cus and pet.node_at(target) in nested_children_cus:
279
- # contained_in_nested_loop = True
280
- # if not contained_in_nested_loop:
281
- # # problematic
282
- # return True
283
-
284
- # else:
285
- # # dep could belong to a parent loop
286
- # if root_loop.get_nesting_level(pet) > 1 and dep.intra_iteration_level > 0:
287
- # # dep belongs to parent loop. Can not be ignored for the inner loop
288
- # return True
289
-
290
283
  elif dep.dtype == DepType.WAR:
291
284
  # check WAR dependencies
292
285
  # WAR problematic, if it is not an intra-iteration WAR and the variable is not private or firstprivate
@@ -348,3 +341,48 @@ def __calculate_nesting_level(pet: PEGraphX, root_loop: LoopNode, cu_node_id: st
348
341
  # add new parents to the queue
349
342
  for in_child_edge in pet.in_edges(cast(NodeID, current_node_id), EdgeType.CHILD):
350
343
  potential_parents.append((in_child_edge[0], nesting_level + 1))
344
+
345
+
346
+ def __get_parent_loops(pet: PEGraphX, root_loop: LoopNode):
347
+ """duplicates exists: do_all_detector <-> reduction_detector !"""
348
+ parents: List[NodeID] = []
349
+ queue = [root_loop.id]
350
+ visited: Set[NodeID] = set()
351
+ while queue:
352
+ current = queue.pop()
353
+ visited.add(current)
354
+ if type(pet.node_at(current)) == LoopNode:
355
+ parents.append(current)
356
+
357
+ # process incoming child edges
358
+ for s, t, e in pet.in_edges(current, EdgeType.CHILD):
359
+ if s not in visited and s not in queue:
360
+ queue.append(s)
361
+ # process incoming call edges
362
+ for s, t, e in pet.in_edges(current, EdgeType.CALLSNODE):
363
+ if s not in visited and s not in queue:
364
+ queue.append(s)
365
+
366
+ parents.remove(root_loop.id)
367
+ return [pet.node_at(p).start_position() for p in parents]
368
+
369
+
370
+ def __get_called_functions(pet: PEGraphX, root_loop: LoopNode) -> List[LineID]:
371
+ """duplicates exists: do_all_detector <-> reduction_detector !"""
372
+ # identify children CUs without following function calls
373
+ called_functions: Set[NodeID] = set()
374
+ queue = [root_loop.id]
375
+ visited: Set[NodeID] = set()
376
+ while queue:
377
+ current = queue.pop()
378
+ visited.add(current)
379
+ # get called functions
380
+ for s, t, e in pet.out_edges(current, EdgeType.CALLSNODE):
381
+ called_functions.add(t)
382
+ # add children to queue
383
+ for s, t, e in pet.out_edges(current, EdgeType.CHILD):
384
+ if t not in queue and t not in visited:
385
+ queue.append(t)
386
+
387
+ # convert node ids of called functions to line ids
388
+ return [pet.node_at(n).start_position() for n in called_functions]
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
  from multiprocessing import Pool
11
- from typing import List, cast
11
+ from typing import List, cast, Set
12
12
 
13
13
  from alive_progress import alive_bar # type: ignore
14
14
 
@@ -22,6 +22,7 @@ from ..PEGraphX import (
22
22
  LineID,
23
23
  DepType,
24
24
  EdgeType,
25
+ NodeID,
25
26
  )
26
27
  from ..utils import filter_for_hotspots, is_reduction_var, classify_loop_variables
27
28
  from ..variable import Variable
@@ -136,6 +137,11 @@ def __detect_reduction(pet: PEGraphX, root: LoopNode) -> bool:
136
137
  reduction_var_names = [v.name for v in reduction_vars]
137
138
  fp, p, lp, s, r = classify_loop_variables(pet, root)
138
139
 
140
+ # get parents of loop
141
+ parent_loops = __get_parent_loops(pet, root)
142
+ parent_function_lineid = pet.get_parent_function(root).start_position()
143
+ called_functions_lineids = __get_called_functions(pet, root)
144
+
139
145
  if __check_loop_dependencies(
140
146
  pet,
141
147
  root,
@@ -146,6 +152,9 @@ def __detect_reduction(pet: PEGraphX, root: LoopNode) -> bool:
146
152
  fp,
147
153
  p,
148
154
  lp,
155
+ parent_loops,
156
+ parent_function_lineid,
157
+ called_functions_lineids,
149
158
  ):
150
159
  return False
151
160
 
@@ -167,6 +176,9 @@ def __check_loop_dependencies(
167
176
  first_privates: List[Variable],
168
177
  privates: List[Variable],
169
178
  last_privates: List[Variable],
179
+ parent_loops: List[LineID],
180
+ parent_function_lineid: LineID,
181
+ called_functions_lineids: List[LineID],
170
182
  ) -> bool:
171
183
  """Returns True, if dependencies between the respective subgraphs chave been found.
172
184
  Returns False otherwise, which results in the potential suggestion of a Reduction pattern."""
@@ -229,3 +241,48 @@ def __check_loop_dependencies(
229
241
 
230
242
  # no problem found. Potentially suggest reduction
231
243
  return False
244
+
245
+
246
+ def __get_parent_loops(pet: PEGraphX, root_loop: LoopNode):
247
+ """duplicates exists: do_all_detector <-> reduction_detector !"""
248
+ parents: List[NodeID] = []
249
+ queue = [root_loop.id]
250
+ visited: Set[NodeID] = set()
251
+ while queue:
252
+ current = queue.pop()
253
+ visited.add(current)
254
+ if type(pet.node_at(current)) == LoopNode:
255
+ parents.append(current)
256
+
257
+ # process incoming child edges
258
+ for s, t, e in pet.in_edges(current, EdgeType.CHILD):
259
+ if s not in visited and s not in queue:
260
+ queue.append(s)
261
+ # process incoming call edges
262
+ for s, t, e in pet.in_edges(current, EdgeType.CALLSNODE):
263
+ if s not in visited and s not in queue:
264
+ queue.append(s)
265
+
266
+ parents.remove(root_loop.id)
267
+ return [pet.node_at(p).start_position() for p in parents]
268
+
269
+
270
+ def __get_called_functions(pet: PEGraphX, root_loop: LoopNode) -> List[LineID]:
271
+ """duplicates exists: do_all_detector <-> reduction_detector !"""
272
+ # identify children CUs without following function calls
273
+ called_functions: Set[NodeID] = set()
274
+ queue = [root_loop.id]
275
+ visited: Set[NodeID] = set()
276
+ while queue:
277
+ current = queue.pop()
278
+ visited.add(current)
279
+ # get called functions
280
+ for s, t, e in pet.out_edges(current, EdgeType.CALLSNODE):
281
+ called_functions.add(t)
282
+ # add children to queue
283
+ for s, t, e in pet.out_edges(current, EdgeType.CHILD):
284
+ if t not in queue and t not in visited:
285
+ queue.append(t)
286
+
287
+ # convert node ids of called functions to line ids
288
+ return [pet.node_at(n).start_position() for n in called_functions]
@@ -15,6 +15,7 @@ class ConfigProviderArguments(object):
15
15
  return_dp_build_dir: bool
16
16
  return_dp_source_dir: bool
17
17
  return_llvm_bin_dir: bool
18
+ return_full_config: bool
18
19
  return_version_string: bool
19
20
 
20
21
  def __post_init__(self):
@@ -23,6 +23,8 @@ def parse_args() -> ConfigProviderArguments:
23
23
  help="Return the path to the DiscoPoP source directory")
24
24
  mutually_exclusive.add_argument("--llvm-bin-dir", action="store_true",
25
25
  help="Return the path to the LLVM bin directory")
26
+ mutually_exclusive.add_argument("-f", "--full", action="store_true",
27
+ help="Return the full configuration")
26
28
  mutually_exclusive.add_argument("-v", "--version", action="store_true",
27
29
  help="Return the version string of the DiscoPoP library")
28
30
  # EXPERIMENTAL FLAGS:
@@ -34,6 +36,7 @@ def parse_args() -> ConfigProviderArguments:
34
36
  return_dp_build_dir=arguments.dp_build_dir,
35
37
  return_dp_source_dir=arguments.dp_source_dir,
36
38
  return_llvm_bin_dir=arguments.llvm_bin_dir,
39
+ return_full_config=arguments.full,
37
40
  return_version_string=arguments.version,
38
41
  )
39
42
 
@@ -6,6 +6,8 @@
6
6
  # the 3-Clause BSD License. See the LICENSE file in the package base
7
7
  # directory for details.
8
8
 
9
+ import os
10
+ from pathlib import Path
9
11
  from discopop_library.ConfigProvider.ConfigProviderArguments import ConfigProviderArguments
10
12
  from discopop_library.ConfigProvider.assets.build_config import DP_BUILD, DP_SOURCE, LLVM_BIN_DIR # type: ignore
11
13
  from discopop_library.global_data.version.utils import get_version
@@ -20,6 +22,16 @@ def run(arguments: ConfigProviderArguments) -> str:
20
22
  return DP_SOURCE # type: ignore
21
23
  elif arguments.return_llvm_bin_dir:
22
24
  return LLVM_BIN_DIR # type: ignore
25
+ elif arguments.return_full_config:
26
+ ret_str = ""
27
+ assets_path = os.path.join(Path(__file__).parent.absolute(), "assets", "build_config.py")
28
+ with open(assets_path, "r") as f:
29
+ for line in f.readlines():
30
+ ret_str += line
31
+ # remove trailing \n
32
+ if ret_str[-1] == "\n":
33
+ ret_str = ret_str[:-1]
34
+ return ret_str
23
35
  elif arguments.return_version_string:
24
36
  return get_version()
25
37
  else:
@@ -49,14 +49,22 @@ def parse_args() -> PatchGeneratorArguments:
49
49
  # determine DP build path
50
50
  arguments.dp_build_path = run_config_provider(
51
51
  ConfigProviderArguments(
52
- return_dp_build_dir=True, return_dp_source_dir=False, return_llvm_bin_dir=False, return_version_string=False
52
+ return_dp_build_dir=True,
53
+ return_dp_source_dir=False,
54
+ return_llvm_bin_dir=False,
55
+ return_full_config=False,
56
+ return_version_string=False,
53
57
  )
54
58
  )
55
59
 
56
60
  # determine LLVM_BIN_DIR
57
61
  llvm_bin_dir = run_config_provider(
58
62
  ConfigProviderArguments(
59
- return_dp_build_dir=False, return_dp_source_dir=False, return_llvm_bin_dir=True, return_version_string=False
63
+ return_dp_build_dir=False,
64
+ return_dp_source_dir=False,
65
+ return_llvm_bin_dir=True,
66
+ return_full_config=False,
67
+ return_version_string=False,
60
68
  )
61
69
  )
62
70
  # determine CC
@@ -52,7 +52,7 @@ six==1.16.0
52
52
  sympy==1.12
53
53
  sympy-plot-backends==2.4.3
54
54
  tomli==2.0.1
55
- tqdm==4.66.1
55
+ tqdm==4.66.3
56
56
  typing_extensions==4.7.1
57
57
  typish==1.9.3
58
58
  zipp==3.16.2