MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / setUnion

Function setUnion

src/backend/oneapi/set.cpp:58–85  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56
57template<typename T>
58Array<T> setUnion(const Array<T> &first, const Array<T> &second,
59 const bool is_unique) {
60 Array<T> unique_first = first;
61 Array<T> unique_second = second;
62
63 if (!is_unique) {
64 unique_first = setUnique(first, false);
65 unique_second = setUnique(second, false);
66 }
67
68 size_t out_size = unique_first.elements() + unique_second.elements();
69 Array<T> out = createEmptyArray<T>(dim4(out_size, 1, 1, 1));
70
71 auto dpl_policy = ::oneapi::dpl::execution::make_device_policy(getQueue());
72
73 auto first_begin = ::oneapi::dpl::begin(*unique_first.get());
74 auto first_end = first_begin + unique_first.elements();
75
76 auto second_begin = ::oneapi::dpl::begin(*unique_second.get());
77 auto second_end = second_begin + unique_second.elements();
78
79 auto out_begin = ::oneapi::dpl::begin(*out.get());
80
81 auto out_end = std::set_union(dpl_policy, first_begin, first_end,
82 second_begin, second_end, out_begin);
83 out.resetDims(dim4(std::distance(out_begin, out_end), 1, 1, 1));
84 return out;
85}
86
87template<typename T>
88Array<T> setIntersect(const Array<T> &first, const Array<T> &second,

Callers

nothing calls this directly

Calls 8

beginFunction · 0.85
setUniqueFunction · 0.70
dim4Class · 0.50
getQueueFunction · 0.50
distanceFunction · 0.50
elementsMethod · 0.45
getMethod · 0.45
resetDimsMethod · 0.45

Tested by

no test coverage detected