Skip to content

Commit

Permalink
ANN_BENCH: enable move semantics for configured_raft_resources
Browse files Browse the repository at this point in the history
  • Loading branch information
achirkin committed May 14, 2024
1 parent 0b55c33 commit 2e71386
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions cpp/bench/ann/src/raft/raft_ann_bench_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,9 @@ class configured_raft_resources {
* It's used by the copy constructor.
*/
explicit configured_raft_resources(const std::shared_ptr<shared_raft_resources>& shared_res)
: shared_res_{shared_res}, res_{rmm::cuda_stream_view(get_stream_from_global_pool())}
: shared_res_{shared_res},
res_{std::make_unique<raft::device_resources>(
rmm::cuda_stream_view(get_stream_from_global_pool()))}
{
}

Expand All @@ -131,9 +133,9 @@ class configured_raft_resources {
{
}

configured_raft_resources(configured_raft_resources&&) = delete;
configured_raft_resources& operator=(configured_raft_resources&&) = delete;
~configured_raft_resources() = default;
configured_raft_resources(configured_raft_resources&&);
configured_raft_resources& operator=(configured_raft_resources&&);
~configured_raft_resources() = default;
configured_raft_resources(const configured_raft_resources& res)
: configured_raft_resources{res.shared_res_}
{
Expand All @@ -144,11 +146,11 @@ class configured_raft_resources {
return *this;
}

operator raft::resources&() noexcept { return res_; }
operator const raft::resources&() const noexcept { return res_; }
operator raft::resources&() noexcept { return *res_; }
operator const raft::resources&() const noexcept { return *res_; }

/** Get the main stream */
[[nodiscard]] auto get_sync_stream() const noexcept { return resource::get_cuda_stream(res_); }
[[nodiscard]] auto get_sync_stream() const noexcept { return resource::get_cuda_stream(*res_); }

private:
/** The resources shared among multiple raft handles / threads. */
Expand All @@ -157,7 +159,11 @@ class configured_raft_resources {
* Until we make the use of copies of raft::resources thread-safe, each benchmark wrapper must
* have its own copy of it.
*/
raft::device_resources res_;
std::unique_ptr<raft::device_resources> res_ = std::make_unique<raft::device_resources>();
};

inline configured_raft_resources::configured_raft_resources(configured_raft_resources&&) = default;
inline configured_raft_resources& configured_raft_resources::operator=(
configured_raft_resources&&) = default;

} // namespace raft::bench::ann

0 comments on commit 2e71386

Please sign in to comment.