MCPcopy Create free account
hub / github.com/boostorg/compute / includes

Function includes

include/boost/compute/algorithm/includes.hpp:115–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

113///
114template<class InputIterator1, class InputIterator2>
115inline bool includes(InputIterator1 first1,
116 InputIterator1 last1,
117 InputIterator2 first2,
118 InputIterator2 last2,
119 command_queue &queue = system::default_queue())
120{
121 int tile_size = 1024;
122
123 int count1 = detail::iterator_range_size(first1, last1);
124 int count2 = detail::iterator_range_size(first2, last2);
125
126 vector<uint_> tile_a((count1+count2+tile_size-1)/tile_size+1, queue.get_context());
127 vector<uint_> tile_b((count1+count2+tile_size-1)/tile_size+1, queue.get_context());
128
129 // Tile the sets
130 detail::balanced_path_kernel tiling_kernel;
131 tiling_kernel.tile_size = tile_size;
132 tiling_kernel.set_range(first1, last1, first2, last2,
133 tile_a.begin()+1, tile_b.begin()+1);
134 fill_n(tile_a.begin(), 1, 0, queue);
135 fill_n(tile_b.begin(), 1, 0, queue);
136 tiling_kernel.exec(queue);
137
138 fill_n(tile_a.end()-1, 1, count1, queue);
139 fill_n(tile_b.end()-1, 1, count2, queue);
140
141 vector<uint_> result((count1+count2+tile_size-1)/tile_size, queue.get_context());
142
143 // Find individually
144 detail::serial_includes_kernel includes_kernel;
145 includes_kernel.tile_size = tile_size;
146 includes_kernel.set_range(first1, first2, tile_a.begin(), tile_a.end(),
147 tile_b.begin(), result.begin());
148
149 includes_kernel.exec(queue);
150
151 return find(result.begin(), result.end(), 0, queue) == result.end();
152}
153
154} //end compute namespace
155} //end boost namespace

Callers 3

BOOST_AUTO_TEST_CASEFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85

Calls 8

iterator_range_sizeFunction · 0.85
fill_nFunction · 0.85
findFunction · 0.85
get_contextMethod · 0.45
set_rangeMethod · 0.45
beginMethod · 0.45
execMethod · 0.45
endMethod · 0.45

Tested by 1

BOOST_AUTO_TEST_CASEFunction · 0.68