• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / sdfglib / 17797968732

17 Sep 2025 12:42PM UTC coverage: 60.537%. Remained the same
17797968732

push

github

web-flow
Revert "Omp interface fix (#222)" (#229)

This reverts commit 0b5356da9.

5 of 5 new or added lines in 1 file covered. (100.0%)

13 existing lines in 2 files now uncovered.

9445 of 15602 relevant lines covered (60.54%)

106.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

61.82
/src/codegen/dispatchers/map_dispatcher.cpp
1
#include "sdfg/codegen/dispatchers/map_dispatcher.h"
2

3
#include "sdfg/analysis/users.h"
4
#include "sdfg/codegen/dispatchers/node_dispatcher_registry.h"
5
#include "sdfg/codegen/dispatchers/sequence_dispatcher.h"
6

7
namespace sdfg {
8
namespace codegen {
9

10
MapDispatcher::MapDispatcher(
1✔
11
    LanguageExtension& language_extension,
12
    StructuredSDFG& sdfg,
13
    structured_control_flow::Map& node,
14
    InstrumentationPlan& instrumentation_plan
15
)
16
    : NodeDispatcher(language_extension, sdfg, node, instrumentation_plan), node_(node) {
1✔
17

18
      };
1✔
19

20
void MapDispatcher::dispatch_node(
1✔
21
    PrettyPrinter& main_stream, PrettyPrinter& globals_stream, CodeSnippetFactory& library_snippet_factory
22
) {
23
    auto dispatcher = MapDispatcherRegistry::instance().get_map_dispatcher(node_.schedule_type().value());
1✔
24
    if (dispatcher) {
1✔
25
        auto dispatcher_ptr = dispatcher(language_extension_, sdfg_, node_, instrumentation_plan_);
1✔
26
        dispatcher_ptr->dispatch_node(main_stream, globals_stream, library_snippet_factory);
1✔
27
    } else {
1✔
UNCOV
28
        throw std::runtime_error("Unsupported map schedule type: " + std::string(node_.schedule_type().value()));
×
29
    }
30
};
1✔
31

32
SequentialMapDispatcher::SequentialMapDispatcher(
1✔
33
    LanguageExtension& language_extension,
34
    StructuredSDFG& sdfg,
35
    structured_control_flow::Map& node,
36
    InstrumentationPlan& instrumentation_plan
37
)
38
    : NodeDispatcher(language_extension, sdfg, node, instrumentation_plan), node_(node) {
1✔
39

40
      };
1✔
41

42
void SequentialMapDispatcher::dispatch_node(
1✔
43
    PrettyPrinter& main_stream, PrettyPrinter& globals_stream, CodeSnippetFactory& library_snippet_factory
44
) {
45
    main_stream << "// Map" << std::endl;
1✔
46
    main_stream << "for";
1✔
47
    main_stream << "(";
1✔
48
    main_stream << node_.indvar()->get_name();
1✔
49
    main_stream << " = ";
1✔
50
    main_stream << language_extension_.expression(node_.init());
1✔
51
    main_stream << ";";
1✔
52
    main_stream << language_extension_.expression(node_.condition());
1✔
53
    main_stream << ";";
1✔
54
    main_stream << node_.indvar()->get_name();
1✔
55
    main_stream << " = ";
1✔
56
    main_stream << language_extension_.expression(node_.update());
1✔
57
    main_stream << ")" << std::endl;
1✔
58
    main_stream << "{" << std::endl;
1✔
59

60
    main_stream.setIndent(main_stream.indent() + 4);
1✔
61
    SequenceDispatcher dispatcher(language_extension_, sdfg_, node_.root(), instrumentation_plan_);
1✔
62
    dispatcher.dispatch(main_stream, globals_stream, library_snippet_factory);
1✔
63
    main_stream.setIndent(main_stream.indent() - 4);
1✔
64

65
    main_stream << "}" << std::endl;
1✔
66
};
1✔
67

UNCOV
68
CPUParallelMapDispatcher::CPUParallelMapDispatcher(
×
69
    LanguageExtension& language_extension,
70
    StructuredSDFG& sdfg,
71
    structured_control_flow::Map& node,
72
    InstrumentationPlan& instrumentation_plan
73
)
UNCOV
74
    : NodeDispatcher(language_extension, sdfg, node, instrumentation_plan), node_(node) {
×
75

UNCOV
76
      };
×
77

UNCOV
78
void CPUParallelMapDispatcher::dispatch_node(
×
79
    PrettyPrinter& main_stream, PrettyPrinter& globals_stream, CodeSnippetFactory& library_snippet_factory
80
) {
81
    // Mark written locals as private
82
    analysis::AnalysisManager analysis_manager(sdfg_);
×
83
    auto& users = analysis_manager.get<analysis::Users>();
×
UNCOV
84
    analysis::UsersView users_view(users, node_.root());
×
85

86
    std::vector<std::string> locals;
×
87
    for (auto& entry : users.locals(node_.root())) {
×
88
        if (users_view.writes(entry).size() > 0 || users_view.moves(entry).size() > 0) {
×
89
            locals.push_back(entry);
×
UNCOV
90
        }
×
91
    }
92

93
    // Generate code
94
    main_stream << "#pragma omp parallel for";
×
95
    if (locals.size() > 0) {
×
96
        main_stream << " private(" << helpers::join(locals, ", ") << ")";
×
UNCOV
97
    }
×
UNCOV
98
    main_stream << std::endl;
×
99

UNCOV
100
    SequentialMapDispatcher dispatcher(language_extension_, sdfg_, node_, instrumentation_plan_);
×
UNCOV
101
    dispatcher.dispatch(main_stream, globals_stream, library_snippet_factory);
×
UNCOV
102
};
×
103

104
} // namespace codegen
105
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc