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.
- {discopop-4.0.1 → discopop-4.1.0}/PKG-INFO +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/PKG-INFO +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/SOURCES.txt +54 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/entry_points.txt +5 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/requires.txt +1 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/__main__.py +6 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/Node.py +6 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/PatternBase.py +10 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/discopop_explorer.py +7 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/gephi.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/parent.py +17 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_1.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_2.py +2 -2
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_3.py +2 -2
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_6.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/do_all_detector.py +23 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/reduction_detector.py +23 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/collect_statistics.py +4 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/boxplot.py +12 -6
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/cc_dictionary.py +10 -6
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/total.py +14 -6
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/num_function_calls.py +2 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utils.py +2 -2
- discopop-4.1.0/discopop_library/Aliases/aliases.py +9 -0
- discopop-4.1.0/discopop_library/DependencyComparator/DependencyComparatorArguments.py +20 -0
- discopop-4.1.0/discopop_library/DependencyComparator/__main__.py +45 -0
- discopop-4.1.0/discopop_library/DependencyComparator/dependency_comparator.py +91 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/ArgumentClasses.py +64 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/Autotuner.py +266 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/Classes/CodeConfiguration.py +197 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Classes/ExecutionResult.py +12 -2
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/__main__.py +66 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/check_single_combination.py +138 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/dump_greedy.py.txt +164 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination.py +95 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/linear_hotspot_combination_with_refinement.py +165 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/optimization/measure_only.py +95 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/output/intermediate.py +61 -0
- discopop-4.1.0/discopop_library/EmpiricalAutotuning/priorities.py +48 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/utils.py +1 -5
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/FolderStructure/setup.py +27 -8
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/FolderStructure/teardown.py +18 -8
- discopop-4.1.0/discopop_library/HostpotLoader/utilities.py +78 -0
- discopop-4.1.0/discopop_library/PreProcessor/PreProcessorArguments.py +25 -0
- discopop-4.1.0/discopop_library/PreProcessor/__main__.py +45 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/data_xml.py +72 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/dependency_metadata.py +84 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/driver.py +42 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/dynamic_dependencies.py +112 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/reduction.py +74 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/static_dependencies.py +112 -0
- discopop-4.1.0/discopop_library/PreProcessor/demangle/utilities.py +26 -0
- discopop-4.1.0/discopop_library/PreProcessor/pre_processor.py +41 -0
- discopop-4.1.0/discopop_library/ProjectManager/ProjectManager.py +53 -0
- discopop-4.1.0/discopop_library/ProjectManager/ProjectManagerArguments.py +74 -0
- discopop-4.1.0/discopop_library/ProjectManager/__main__.py +73 -0
- discopop-4.1.0/discopop_library/ProjectManager/configurations/copying.py +86 -0
- discopop-4.1.0/discopop_library/ProjectManager/configurations/deletion.py +26 -0
- discopop-4.1.0/discopop_library/ProjectManager/configurations/execution.py +170 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/console.py +107 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/csv.py +98 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/efficiency.py +137 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/execution_time.py +128 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/full.py +64 -0
- discopop-4.1.0/discopop_library/ProjectManager/reports/speedup.py +137 -0
- discopop-4.1.0/discopop_library/ProjectManager/utilities/CLI/listConfiguration.py +344 -0
- discopop-4.1.0/discopop_library/ProjectManager/utilities/deriveSettingsFiles.py +56 -0
- discopop-4.1.0/discopop_library/ProjectManager/utilities/initializeDirectories.py +33 -0
- discopop-4.1.0/discopop_library/ProjectManager/utilities/initializeFiles.py +65 -0
- discopop-4.1.0/discopop_library/ProjectManager/utilities/reset.py +41 -0
- {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/SanityChecker}/ArgumentClasses.py +10 -7
- {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/SanityChecker}/Classes/CodeConfiguration.py +34 -45
- discopop-4.1.0/discopop_library/SanityChecker/Classes/ExecutionResult.py +32 -0
- discopop-4.1.0/discopop_library/SanityChecker/SanityChecker.py +144 -0
- discopop-4.1.0/discopop_library/SanityChecker/Types.py +16 -0
- discopop-4.1.0/discopop_library/SanityChecker/__main__.py +62 -0
- discopop-4.1.0/discopop_library/SanityChecker/utils.py +25 -0
- discopop-4.1.0/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/CostModel.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_force_branch_end_data_movement.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement_prior_to_call.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/ExtrapInterpolatedMicrobench.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/Microbench.py +2 -2
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/utils.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/PETParser.py +3 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Variables/ExperimentUtils.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/ContextObjectUtils.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextNode.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/DeviceSwitch.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/SynchronizationTrigger.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/Network.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/System.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/CPU.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/Device.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/GPU.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/system_utils.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/plotting/CostModels.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/presentation/OptionTable.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/queries/ValueTableQuery.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evaluate.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evaluate_all_decision_combinations.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/evolutionary_algorithm.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/greedy.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/do_all.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/optimizers/loop_collapse.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization/RandomSamples.py +1 -1
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/optimization/LocalOptimization/TopDown.py +1 -1
- discopop-4.1.0/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
- discopop-4.1.0/discopop_library/global_data/version/VERSION +1 -0
- discopop-4.1.0/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/global_data/version/__pycache__/utils.cpython-38.pyc +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/PatternStorage.py +8 -0
- discopop-4.1.0/requirements.txt +45 -0
- {discopop-4.0.1 → discopop-4.1.0}/setup.py +7 -1
- discopop-4.1.0/test/wip_end_to_end/do_all/stack_access/various/case_4/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/reduction_pattern/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/reduction_pattern/negative/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/reduction_pattern/negative/case_2/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/sharing_clauses/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/first_private/__init__.py +0 -0
- discopop-4.1.0/test/wip_end_to_end/sharing_clauses/do_all/first_private/case_2/__init__.py +0 -0
- discopop-4.0.1/discopop_library/EmpiricalAutotuning/Autotuner.py +0 -302
- discopop-4.0.1/discopop_library/EmpiricalAutotuning/__main__.py +0 -52
- discopop-4.0.1/discopop_library/__pycache__/__init__.cpython-38.pyc +0 -0
- discopop-4.0.1/discopop_library/global_data/__pycache__/__init__.cpython-38.pyc +0 -0
- discopop-4.0.1/discopop_library/global_data/version/VERSION +0 -1
- discopop-4.0.1/discopop_library/global_data/version/__pycache__/__init__.cpython-38.pyc +0 -0
- discopop-4.0.1/requirements.txt +0 -58
- {discopop-4.0.1 → discopop-4.1.0}/LICENSE +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/MANIFEST.in +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/README.md +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/dependency_links.txt +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/top_level.txt +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop.egg-info/zip-safe +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/LineID.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/MemoryRegion.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/NodeID.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/aliases/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/CUNode.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/Dependency.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/DummyNode.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/FunctionNode.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/LoopNode.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/NodeT.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/PEGraphX.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/PEGraph/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/PatternInfo.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/patterns/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/classes/variable.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/DepType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/EdgeType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/MWType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/NodeType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/enums/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/output/json.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/check_reachability.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/depends_ignore_readonly.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_loop_index.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_passed_by_reference.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_predecessor.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_readonly_inside_loop_body.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_reduction_var_by_name.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/properties/is_scalar_val.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/edges.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/memory_regions.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/nodes.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/paths.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/reductions.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/subtree.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/queries/variables.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/children.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/traversal/successors.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/unused/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/PEGraph/unused/unused_functions.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/functions/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/json_serializer.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/parallel_utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detection.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/CombinedGPURegions.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Aliases.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Dependency.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/EntryPoint.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Enums.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/ExitPoint.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/Update.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/classes/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/combined_gpu_pattern_detector.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/prepare_metadata.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_4.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/step_5.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/combined_gpu_patterns/utilities.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/device_updates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/geometric_decomposition_detector.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/pipeline_detector.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPULoop.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPUMemory.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/GPURegions.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/gpu_pattern_detector.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/simple_gpu_patterns/utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/alias_detection.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/classes.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/filter.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/postprocessor.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/preprocessor.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/auxiliary.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/barriers.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/data_sharing_clauses.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/dependency_clauses.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/suggesters/tasks.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/task_parallelism_detector.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/pattern_detectors/task_parallelism/tp_utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/plugins/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/plugins/pipeline.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/test/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/PEGraphConstructionUtilities.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/ParserUtilities.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/DependenceItem.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/LoopData.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/classes/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/PEGraphConstruction/parser.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/general/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/general/generate_Data_CUInst.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/cyclomatic_complexity/subtree.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/maximum_call_path_depth.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/num_function_calls.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/output_statistics.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_call_path_depths.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_cyclomatic_complexity.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/suggestion_lines_of_code.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/utilities/call_path_depth.py +0 -0
- {discopop-4.0.1/discopop_library/CodeGenerator → discopop-4.1.0/discopop_library/Aliases}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ArgumentClasses/GeneralArguments.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/CodeGenerator.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/CodeGeneratorArguments.py +0 -0
- {discopop-4.0.1/discopop_library/CodeGenerator/classes → discopop-4.1.0/discopop_library/CodeGenerator}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/ContentBuffer.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Enums.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Line.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/Pragma.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/CodeGenerator/classes/UnpackedSuggestion.py +0 -0
- {discopop-4.0.1/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover → discopop-4.1.0/discopop_library/CodeGenerator/classes}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/ArgumentClasses.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/GEPDependencyRemover.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/Types.py +0 -0
- {discopop-4.0.1/discopop_library/Compatibility/LegacyDiscoPoP → discopop-4.1.0/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/__main__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/Compatibility/LegacyDiscoPoP/GEPDependencyRemover/utils.py +0 -0
- {discopop-4.0.1/discopop_library/EmpiricalAutotuning → discopop-4.1.0/discopop_library/Compatibility/LegacyDiscoPoP}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/ConfigProviderArguments.py +0 -0
- {discopop-4.0.1/discopop_library/FolderStructure → discopop-4.1.0/discopop_library/ConfigProvider}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/__main__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/assets/.gitignore +0 -0
- {discopop-4.0.1/discopop_library/JSONHandler → discopop-4.1.0/discopop_library/ConfigProvider/assets}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/ConfigProvider/config_provider.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/DependencyMetadata/compare_metadata.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Statistics/StatisticsGraph.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/EmpiricalAutotuning/Types.py +0 -0
- {discopop-4.0.1/discopop_library/LineMapping → discopop-4.1.0/discopop_library/EmpiricalAutotuning}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/MemoryRegions → discopop-4.1.0/discopop_library/FolderStructure}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/GlobalLogger/setup.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotLoaderArguments.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotNodeType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/HotspotType.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/HostpotLoader/hostpot_loader.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/JSONHandler/JSONHandler.py +0 -0
- {discopop-4.0.1/discopop_library/PatchApplicator → discopop-4.1.0/discopop_library/JSONHandler}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/PatchGenerator → discopop-4.1.0/discopop_library/LineMapping}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/delete.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/diff_modifications.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/initialize.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/load.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/LineMapping/save.py +0 -0
- {discopop-4.0.1/discopop_library/PathManagement → discopop-4.1.0/discopop_library/MemoryRegions}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/MemoryRegions/utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/PatchApplicatorArguments.py +0 -0
- {discopop-4.0.1/discopop_library → discopop-4.1.0/discopop_library/PatchApplicator}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/__main__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/apply.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/clear.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/list.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/load.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/patch_applicator.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchApplicator/rollback.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/PatchGeneratorArguments.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/CostModels/DataTransfer → discopop-4.1.0/discopop_library/PatchGenerator}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/__main__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/diffs.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/from_json_patterns.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/from_optimizer_output.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatchGenerator/patch_generator.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PathManagement/PathManagement.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/CostModels → discopop-4.1.0/discopop_library/PathManagement}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/PatternIdManagement/unique_pattern_id.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/DataTransfers → discopop-4.1.0/discopop_library/PreProcessor}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/Microbench → discopop-4.1.0/discopop_library/ProjectManager}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/PETParser/DataAccesses → discopop-4.1.0/discopop_library/ProjectManager/utilities/CLI}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/PETParser → discopop-4.1.0/discopop_library/ProjectManager/utilities}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/Variables → discopop-4.1.0/discopop_library/SanityChecker}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer → discopop-4.1.0/discopop_library}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/DataTransfer/DataTransferCosts.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/bindings → discopop-4.1.0/discopop_library/discopop_optimizer/CostModels/DataTransfer}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes → discopop-4.1.0/discopop_library/discopop_optimizer/CostModels}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/CostModels/utilities.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/DataTransfers.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/NewDataTransfers.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/context → discopop-4.1.0/discopop_library/discopop_optimizer/DataTransfers}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/calculate_configuration_data_movement.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/DataTransfers/prepare_forced_data_movement.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/DelaunayInterpolatedMicrobench.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/MicrobenchParser.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/MixedMicrobench.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Microbench/PureDataMicrobench.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/edges → discopop-4.1.0/discopop_library/discopop_optimizer/Microbench}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/OptimizationGraph.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/OptimizerArguments.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/DataAccesses/CalculateUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/PETParser/DataAccesses/FromCUs.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/enums → discopop-4.1.0/discopop_library/discopop_optimizer/PETParser/DataAccesses}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/nodes → discopop-4.1.0/discopop_library/discopop_optimizer/PETParser}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/AddRangesToUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/LoopInitializationUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveDuplicatedUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveLoopIndexUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/RemoveSameDeviceUpdates.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/UpdateOptimization/main.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/Variables/Experiment.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/system → discopop-4.1.0/discopop_library/discopop_optimizer/Variables}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/system/devices → discopop-4.1.0/discopop_library/discopop_optimizer}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/__main__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/classes/types → discopop-4.1.0/discopop_library/discopop_optimizer/bindings}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/bindings/utilities.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/gui → discopop-4.1.0/discopop_library/discopop_optimizer/classes}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/ContextObject.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/context/Update.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/gui/plotting → discopop-4.1.0/discopop_library/discopop_optimizer/classes/context}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/CallEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/ChildEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/DataFlowEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/GenericEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/MutuallyExclusiveEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/OptionEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/RequirementEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/SuccessorEdge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/edges/TemporaryEdge.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/gui/presentation → discopop-4.1.0/discopop_library/discopop_optimizer/classes/edges}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/enums/Distributions.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/gui/queries → discopop-4.1.0/discopop_library/discopop_optimizer/classes/enums}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextMerge.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextRestore.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSave.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshot.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/ContextSnapshotPop.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/FunctionReturn.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/FunctionRoot.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/GenericNode.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/Loop.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/nodes/Workload.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/gui/widgets → discopop-4.1.0/discopop_library/discopop_optimizer/classes/nodes}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/scheduling → discopop-4.1.0/discopop_library/discopop_optimizer/classes/system}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/system/devices/DeviceTypeEnum.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/suggestions → discopop-4.1.0/discopop_library/discopop_optimizer/classes/system/devices}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/types/Aliases.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/classes/types/DataAccessType.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/suggestions/importers → discopop-4.1.0/discopop_library/discopop_optimizer/classes/types}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/utilities → discopop-4.1.0/discopop_library/discopop_optimizer/gui}/__init__.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/presentation/ChoiceDetails.py +0 -0
- {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
- {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/optimization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/queries}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/widgets/ScrollableFrame.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/gui/widgets/ScrollableText.py +0 -0
- {discopop-4.0.1/discopop_library/discopop_optimizer/utilities/visualization → discopop-4.1.0/discopop_library/discopop_optimizer/gui/widgets}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/interactive/interactive_optimizer.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimization/validation.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/optimizer.py +0 -0
- {discopop-4.0.1/discopop_library/global_data → discopop-4.1.0/discopop_library/discopop_optimizer/scheduling}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/scheduling/workload_delta.py +0 -0
- {discopop-4.0.1/discopop_library/global_data/version → discopop-4.1.0/discopop_library/discopop_optimizer/suggestions}/__init__.py +0 -0
- {discopop-4.0.1/discopop_library/result_classes → discopop-4.1.0/discopop_library/discopop_optimizer/suggestions/importers}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/main.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/importers/reduction.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/suggestions/optimizers/main.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/MOGUtilities.py +0 -0
- {discopop-4.0.1/test → discopop-4.1.0/discopop_library/discopop_optimizer/utilities}/__init__.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/insert_device_switch_nodes.py +0 -0
- {discopop-4.0.1/test/end_to_end → discopop-4.1.0/discopop_library/discopop_optimizer/utilities/optimization/GlobalOptimization}/__init__.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/simple_utilities.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/visualization/plotting.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/discopop_optimizer/utilities/visualization/update_graph.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/global_data/version/utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/py.typed +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/DetectionResult.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/MergedPattern.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/discopop_library/result_classes/OptimizerOutputPattern.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/setup.cfg +0 -0
- {discopop-4.0.1/test/end_to_end/do_all/calls/complex → discopop-4.1.0/test}/__init__.py +0 -0
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/backwards_array_access/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/above_nesting_level_3/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/allowing/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/allowing_2/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/complex/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/complex_no_varname_duplicates/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/preventing/simple/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/allowing/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/allowing_2/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/preventing/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/calls/second_order/preventing_2/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/daxpy/test.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/negative/minimal/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/negative/stack_access/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/simple/not_nested/positive/test.py +0 -0
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/nested/positive/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_0/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_1/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_2/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_3/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/do_all/stack_access/various/case_5/test.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/optimizer/loop_collapse/positive/simple_1/test.py +0 -0
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/reduction_pattern/negative/case_1/test.py +0 -0
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/reduction_pattern/positive/nested/OMPSCR/c_Mandelbrot/test.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/first_private/case_1/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/last_private/case_1/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/no_clause/case_1/test.py +0 -0
- {discopop-4.0.1/test/utils/existence → discopop-4.1.0/test/end_to_end/sharing_clauses/do_all/private}/__init__.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/private/case_1/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/private/case_2/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_1/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_2/test.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/end_to_end/sharing_clauses/do_all/shared/case_3/test.py +0 -0
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/utils/existence/existence_utils.py +0 -0
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/utils/sharing_clauses/clauses_utils.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/test/utils/validator_classes/DoAllInfoForValidation.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/do_all/stack_access/various/case_4/test.py +0 -0
- {discopop-4.0.1 → discopop-4.1.0}/test/wip_end_to_end/reduction_pattern/negative/case_2/test.py +0 -0
- {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
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
{discopop-4.0.1 → discopop-4.1.0}/discopop_explorer/utilities/statistics/collect_statistics.py
RENAMED
|
@@ -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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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__)
|