Skip to content

Commit 5ceb091

Browse files
committed
Fixing test
Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
1 parent 1413cae commit 5ceb091

2 files changed

Lines changed: 24 additions & 19 deletions

File tree

libs/core/execution/include/hpx/execution/executors/execution_parameters.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -820,16 +820,16 @@ namespace hpx::execution::experimental::detail {
820820
};
821821

822822
template <typename T, typename Wrapper>
823-
struct mark_partition_call_helper<T, Wrapper>
823+
struct mark_partition_call_helper<T, Wrapper,
824+
std::enable_if_t<has_mark_partition_v<T>>>
824825
{
825826
template <typename Executor, typename... Args>
826827
HPX_FORCEINLINE void mark_partition(
827828
Executor&& exec, std::size_t partition, Args&&... args)
828829
{
829830
auto& wrapped =
830831
static_cast<unwrapper<Wrapper>*>(this)->member_.get();
831-
hpx::execution::experimental::mark_partition(wrapped,
832-
HPX_FORWARD(Executor, exec), partition,
832+
wrapped.mark_partition(HPX_FORWARD(Executor, exec), partition,
833833
HPX_FORWARD(Args, args)...);
834834
}
835835
};
@@ -910,7 +910,7 @@ namespace hpx::execution::experimental::detail {
910910
///////////////////////////////////////////////////////////////////////
911911
template <typename T>
912912
struct unwrapper<::std::reference_wrapper<T>>
913-
: base_member_helper<std::reference_wrapper<T>>
913+
: base_member_helper<::std::reference_wrapper<T>>
914914
, maximal_number_of_chunks_call_helper<T, std::reference_wrapper<T>>
915915
, get_chunk_size_call_helper<T, std::reference_wrapper<T>>
916916
, measure_iteration_call_helper<T, std::reference_wrapper<T>>

libs/core/execution/tests/unit/executor_parameters_partition_hooks.cpp

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,18 @@
1616

1717
struct partition_hooks_parameters
1818
{
19-
explicit partition_hooks_parameters(std::size_t max_partitions)
20-
: values_(max_partitions, {0, 0})
21-
, seen_(max_partitions, 0)
19+
explicit partition_hooks_parameters() = default;
20+
21+
template <typename Executor>
22+
friend void tag_override_invoke(
23+
hpx::execution::experimental::collect_execution_parameters_t,
24+
partition_hooks_parameters& self, Executor&&, std::size_t const,
25+
std::size_t const, std::size_t const num_chunks,
26+
std::size_t const) noexcept
2227
{
28+
self.num_chunks_ = num_chunks;
29+
self.values_.resize(num_chunks);
30+
self.seen_.resize(num_chunks);
2331
}
2432

2533
template <typename Executor>
@@ -43,6 +51,7 @@ struct partition_hooks_parameters
4351

4452
std::vector<std::pair<std::size_t, std::size_t>> values_;
4553
std::vector<unsigned char> seen_;
54+
std::size_t num_chunks_ = 0;
4655
};
4756

4857
namespace hpx::execution::experimental {
@@ -61,17 +70,15 @@ void test_mark_partition_sync()
6170
std::iota(left.begin(), left.end(), std::uint64_t(0));
6271
std::iota(right.begin(), right.end(), std::uint64_t(left.size()));
6372

64-
partition_hooks_parameters params(left.size() + right.size());
65-
hpx::execution::experimental::chunking_parameters param{};
66-
hpx::execution::experimental::collect_chunking_parameters ccp(param);
73+
partition_hooks_parameters params;
6774

68-
auto policy = hpx::execution::par.with(std::ref(params), ccp);
75+
auto policy = hpx::execution::par.with(std::ref(params));
6976
hpx::merge(policy, left.begin(), left.end(), right.begin(), right.end(),
7077
out.begin());
7178

7279
HPX_TEST(std::is_sorted(out.begin(), out.end()));
73-
HPX_TEST_LT(std::size_t(0), param.num_chunks);
74-
HPX_TEST_EQ(params.count_seen(), param.num_chunks);
80+
HPX_TEST_LT(std::size_t(0), params.num_chunks_);
81+
HPX_TEST_EQ(params.count_seen(), params.num_chunks_);
7582
}
7683

7784
void test_mark_partition_async()
@@ -83,20 +90,18 @@ void test_mark_partition_async()
8390
std::iota(left.begin(), left.end(), std::uint64_t(0));
8491
std::iota(right.begin(), right.end(), std::uint64_t(left.size()));
8592

86-
hpx::execution::experimental::chunking_parameters param{};
87-
hpx::execution::experimental::collect_chunking_parameters ccp(param);
88-
partition_hooks_parameters params(left.size() + right.size());
93+
partition_hooks_parameters params;
8994

9095
auto policy =
91-
hpx::execution::par(hpx::execution::task).with(std::ref(params), ccp);
96+
hpx::execution::par(hpx::execution::task).with(std::ref(params));
9297
auto f = hpx::merge(policy, left.begin(), left.end(), right.begin(),
9398
right.end(), out.begin());
9499
auto result_iter = f.get();
95100
HPX_UNUSED(result_iter);
96101

97102
HPX_TEST(std::is_sorted(out.begin(), out.end()));
98-
HPX_TEST_LT(std::size_t(0), param.num_chunks);
99-
HPX_TEST_EQ(params.count_seen(), param.num_chunks);
103+
HPX_TEST_LT(std::size_t(0), params.num_chunks_);
104+
HPX_TEST_EQ(params.count_seen(), params.num_chunks_);
100105
}
101106

102107
int hpx_main()

0 commit comments

Comments
 (0)