33 template<
typename Predicate>
35 const int64_t parallel_grain_size,
37 const Predicate &predicate)
45 const IndexMask sub_mask = indices_to_check.slice(range);
46 Vector<int64_t> masked_indices;
47 for (const int64_t i : sub_mask) {
49 masked_indices.append(i);
52 if (!masked_indices.is_empty()) {
53 sub_masks.local().append(std::move(masked_indices));
70 const VArray<bool> &virtual_array,
72 Vector<int64_t> &r_indices);
IndexRange index_range() const
IndexMask find_indices_based_on_predicate__merge(IndexMask indices_to_check, threading::EnumerableThreadSpecific< Vector< Vector< int64_t >>> &sub_masks, Vector< int64_t > &r_indices)
IndexMask find_indices_based_on_predicate(const IndexMask indices_to_check, const int64_t parallel_grain_size, Vector< int64_t > &r_indices, const Predicate &predicate)
IndexMask find_indices_from_virtual_array(IndexMask indices_to_check, const VArray< bool > &virtual_array, int64_t parallel_grain_size, Vector< int64_t > &r_indices)
void parallel_for(IndexRange range, int64_t grain_size, const Function &function)