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

daisytuner / docc / 22994637400

12 Mar 2026 09:13AM UTC coverage: 63.488% (-1.1%) from 64.629%
22994637400

Pull #570

github

web-flow
Merge 4acc9e80f into 607827514
Pull Request #570: Added ET target tests to github CI

24709 of 38919 relevant lines covered (63.49%)

369.41 hits per line

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

62.5
/sdfg/src/data_flow/library_nodes/barrier_local_node.cpp
1
#include "sdfg/data_flow/library_nodes/barrier_local_node.h"
2

3
#include "sdfg/codegen/language_extensions/c_language_extension.h"
4
#include "sdfg/codegen/language_extensions/cpp_language_extension.h"
5
#include "sdfg/codegen/language_extensions/cuda_language_extension.h"
6
#include "sdfg/codegen/language_extensions/rocm_language_extension.h"
7

8
namespace sdfg {
9
namespace data_flow {
10

11
BarrierLocalNode::
12
    BarrierLocalNode(size_t element_id, const DebugInfo& debug_info, const graph::Vertex vertex, DataFlowGraph& parent)
13
    : LibraryNode(
15✔
14
          element_id, debug_info, vertex, parent, LibraryNodeType_BarrierLocal, {}, {}, true, ImplementationType_NONE
15✔
15
      ) {
15✔
16

17
      };
15✔
18

19
void BarrierLocalNode::validate(const Function& function) const {
70✔
20
    LibraryNode::validate(function);
70✔
21
    // No specific validation for barrier local
22
}
70✔
23

24
symbolic::SymbolSet BarrierLocalNode::symbols() const { return {}; };
32✔
25

26
std::unique_ptr<DataFlowNode> BarrierLocalNode::clone(size_t element_id, const graph::Vertex vertex, DataFlowGraph& parent)
27
    const {
1✔
28
    return std::unique_ptr<BarrierLocalNode>(new BarrierLocalNode(element_id, this->debug_info_, vertex, parent));
1✔
29
};
1✔
30

31
void BarrierLocalNode::replace(const symbolic::Expression old_expression, const symbolic::Expression new_expression) {
×
32
    // Do nothing
33
};
×
34

35
nlohmann::json BarrierLocalNodeSerializer::serialize(const sdfg::data_flow::LibraryNode& library_node) {
1✔
36
    if (library_node.code() != data_flow::LibraryNodeType_BarrierLocal) {
1✔
37
        throw std::runtime_error("Invalid library node code");
×
38
    }
×
39
    nlohmann::json j;
1✔
40
    j["code"] = std::string(library_node.code().value());
1✔
41
    return j;
1✔
42
}
1✔
43

44
data_flow::LibraryNode& BarrierLocalNodeSerializer::deserialize(
45
    const nlohmann::json& j, sdfg::builder::StructuredSDFGBuilder& builder, sdfg::structured_control_flow::Block& parent
46
) {
1✔
47
    auto code = j["code"].get<std::string>();
1✔
48
    if (code != data_flow::LibraryNodeType_BarrierLocal.value()) {
1✔
49
        throw std::runtime_error("Invalid library node code");
×
50
    }
×
51
    return builder.add_library_node<data_flow::BarrierLocalNode>(parent, DebugInfo());
1✔
52
};
1✔
53

54
BarrierLocalNodeDispatcher::BarrierLocalNodeDispatcher(
55
    codegen::LanguageExtension& language_extension,
56
    const Function& function,
57
    const data_flow::DataFlowGraph& data_flow_graph,
58
    const BarrierLocalNode& node
59
)
60
    : codegen::LibraryNodeDispatcher(language_extension, function, data_flow_graph, node) {}
1✔
61

62
void BarrierLocalNodeDispatcher::dispatch(
63
    codegen::PrettyPrinter& stream,
64
    codegen::PrettyPrinter& globals_stream,
65
    codegen::CodeSnippetFactory& library_snippet_factory
66
) {
1✔
67
    if (dynamic_cast<codegen::CLanguageExtension*>(&this->language_extension_) != nullptr) {
1✔
68
        throw std::runtime_error(
×
69
            "ThreadBarrierDispatcher is not supported for C language extension. Use CUDA or ROCM "
×
70
            "language extension instead."
×
71
        );
×
72
    } else if (dynamic_cast<codegen::CPPLanguageExtension*>(&this->language_extension_) != nullptr) {
1✔
73
        throw std::runtime_error(
×
74
            "ThreadBarrierDispatcher is not supported for C++ language extension. Use CUDA or ROCM "
×
75
            "language extension instead."
×
76
        );
×
77
    } else if (dynamic_cast<codegen::CUDALanguageExtension*>(&this->language_extension_) != nullptr) {
1✔
78
        stream << "__syncthreads();" << std::endl;
1✔
79
    } else if (dynamic_cast<codegen::ROCMLanguageExtension*>(&this->language_extension_) != nullptr) {
1✔
80
        stream << "__syncthreads();" << std::endl;
×
81
    } else {
×
82
        throw std::runtime_error("Unsupported language extension for ThreadBarrierDispatcher");
×
83
    }
×
84
}
1✔
85

86

87
} // namespace data_flow
88
} // 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