Skip to content
This repository was archived by the owner on Sep 22, 2025. It is now read-only.

Commit dc89bc8

Browse files
author
Mikolaj Komar
committed
Fix formatting
1 parent 2bf503e commit dc89bc8

File tree

8 files changed

+86
-79
lines changed

8 files changed

+86
-79
lines changed

examples/mp/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ add_mp_example(hello_world)
3434
add_mp_example_no_test(sparse_matrix)
3535
add_mp_example_no_test(sparse_benchmark)
3636
add_mp_example_no_test(sparse_matrix_matrix_mul)
37-
add_mp_example_no_test(local_issue)
3837

3938
if(OpenMP_FOUND)
4039
add_executable(vector-add-ref vector-add-ref.cpp)

include/dr/detail/multiply_view.hpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313

1414
namespace dr::__detail {
1515

16-
template <std::random_access_iterator Iter>
17-
class multiply_iterator {
16+
template <std::random_access_iterator Iter> class multiply_iterator {
1817
public:
1918
using value_type = std::iter_value_t<Iter>;
2019
using difference_type = long long;
@@ -25,7 +24,8 @@ class multiply_iterator {
2524

2625
using iterator_category = std::random_access_iterator_tag;
2726

28-
multiply_iterator(Iter iter, std::size_t len, long long pos) noexcept : iter_(iter), len_(len), pos_(pos) {}
27+
multiply_iterator(Iter iter, std::size_t len, long long pos) noexcept
28+
: iter_(iter), len_(len), pos_(pos) {}
2929
multiply_iterator() noexcept = default;
3030
~multiply_iterator() noexcept = default;
3131
multiply_iterator(const multiply_iterator &) noexcept = default;
@@ -55,13 +55,9 @@ class multiply_iterator {
5555

5656
bool operator>(iterator other) const noexcept { return pos_ > other.pos_; }
5757

58-
bool operator<=(iterator other) const noexcept {
59-
return pos_ <= other.pos_;
60-
}
58+
bool operator<=(iterator other) const noexcept { return pos_ <= other.pos_; }
6159

62-
bool operator>=(iterator other) const noexcept {
63-
return pos_ >= other.pos_;
64-
}
60+
bool operator>=(iterator other) const noexcept { return pos_ >= other.pos_; }
6561

6662
iterator &operator++() noexcept {
6763
++pos_;
@@ -119,22 +115,24 @@ class multiply_iterator {
119115
};
120116

121117
template <rng::random_access_range V>
122-
requires(rng::sized_range<V>)
118+
requires(rng::sized_range<V>)
123119
class multiply_view : public rng::view_interface<multiply_view<V>> {
124120
public:
125121
template <rng::viewable_range R>
126122
multiply_view(R &&r, std::size_t n)
127123
: base_(rng::views::all(std::forward<R>(r))), n_(n) {}
128124

129-
auto begin() const { return multiply_iterator(rng::begin(base_), base_.size(), 0); }
130-
131-
auto end() const { return multiply_iterator(rng::begin(base_), base_.size(), n_ * base_.size()); }
125+
auto begin() const {
126+
return multiply_iterator(rng::begin(base_), base_.size(), 0);
127+
}
132128

133-
auto size() const
134-
{
135-
return rng::size(base_);
129+
auto end() const {
130+
return multiply_iterator(rng::begin(base_), base_.size(),
131+
n_ * base_.size());
136132
}
137133

134+
auto size() const { return rng::size(base_); }
135+
138136
private:
139137
V base_;
140138
std::size_t n_;
@@ -143,4 +141,4 @@ class multiply_view : public rng::view_interface<multiply_view<V>> {
143141
template <rng::viewable_range R>
144142
multiply_view(R &&r, std::size_t n) -> multiply_view<rng::views::all_t<R>>;
145143

146-
} // namespace dr
144+
} // namespace dr::__detail

include/dr/mp/containers/matrix_formats/csr_eq_distribution.hpp

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
// SPDX-License-Identifier: BSD-3-Clause
44
#pragma once
55
#include <dr/detail/matrix_entry.hpp>
6+
#include <dr/detail/multiply_view.hpp>
67
#include <dr/mp/containers/matrix_formats/csr_eq_segment.hpp>
78
#include <dr/views/csr_matrix_view.hpp>
8-
#include <dr/detail/multiply_view.hpp>
99

1010
namespace dr::mp {
1111

1212
template <typename T, typename I, class BackendT = MpiBackend>
1313
class csr_eq_distribution {
14-
using view_tuple = std::tuple<std::size_t, std::size_t, std::size_t, I*>;
14+
using view_tuple = std::tuple<std::size_t, std::size_t, std::size_t, I *>;
15+
1516
public:
1617
using value_type = dr::matrix_entry<T, I>;
1718
using segment_type = csr_eq_segment<csr_eq_distribution>;
@@ -302,59 +303,63 @@ class csr_eq_distribution {
302303
}
303304
fence();
304305
auto local_rows = rows_data_;
305-
auto real_val_size = std::min(vals_data_->segment_size(), nnz_ - vals_data_->segment_size() * rank);
306-
auto my_tuple = std::make_tuple(row_size_, row_offsets_[rank], segment_size_ * rank, local_rows);
306+
auto real_val_size = std::min(vals_data_->segment_size(),
307+
nnz_ - vals_data_->segment_size() * rank);
308+
auto my_tuple = std::make_tuple(row_size_, row_offsets_[rank],
309+
segment_size_ * rank, local_rows);
307310
view_helper_const = tuple_alloc.allocate(1);
308311

309-
310312
if (use_sycl()) {
311-
sycl_queue().memcpy(view_helper_const, &my_tuple, sizeof(view_tuple)).wait();
313+
sycl_queue()
314+
.memcpy(view_helper_const, &my_tuple, sizeof(view_tuple))
315+
.wait();
312316
} else {
313317
view_helper_const[0] = my_tuple;
314318
}
315319

316320
auto local_cols = cols_data_->segments()[rank].begin().local();
317321
auto local_vals = vals_data_->segments()[rank].begin().local();
318-
local_view = std::make_shared<view_type>(get_elem_view(real_val_size, view_helper_const, local_cols, local_vals, rank));
322+
local_view = std::make_shared<view_type>(get_elem_view(
323+
real_val_size, view_helper_const, local_cols, local_vals, rank));
319324
}
320325

321-
322-
static auto get_elem_view(
323-
std::size_t vals_size,
324-
view_tuple* helper_tuple,
325-
index_type *local_cols,
326-
elem_type *local_vals,
327-
std::size_t rank) {
326+
static auto get_elem_view(std::size_t vals_size, view_tuple *helper_tuple,
327+
index_type *local_cols, elem_type *local_vals,
328+
std::size_t rank) {
328329
auto local_vals_range = rng::subrange(local_vals, local_vals + vals_size);
329330
auto local_cols_range = rng::subrange(local_cols, local_cols + vals_size);
330331
auto zipped_results = rng::views::zip(local_vals_range, local_cols_range);
331332
auto enumerated_zipped = rng::views::enumerate(zipped_results);
332-
// we need to use multiply_view here,
333+
// we need to use multiply_view here,
333334
// because lambda is not properly copied to sycl environment
334-
// when we use variable capture
335-
auto multiply_range = dr::__detail::multiply_view(rng::subrange(helper_tuple, helper_tuple + 1), vals_size);
336-
auto enumerted_with_data = rng::views::zip(enumerated_zipped, multiply_range);
337-
335+
// when we use variable capture
336+
auto multiply_range = dr::__detail::multiply_view(
337+
rng::subrange(helper_tuple, helper_tuple + 1), vals_size);
338+
auto enumerted_with_data =
339+
rng::views::zip(enumerated_zipped, multiply_range);
340+
338341
auto transformer = [=](auto x) {
339342
auto [entry, tuple] = x;
340343
auto [row_size, row_offset, offset, local_rows] = tuple;
341344
auto [index, pair] = entry;
342345
auto [val, column] = pair;
343-
auto row = rng::distance(
344-
local_rows,
345-
std::upper_bound(local_rows, local_rows + row_size, offset + index) -
346-
1) + row_offset;
346+
auto row =
347+
rng::distance(local_rows,
348+
std::upper_bound(local_rows, local_rows + row_size,
349+
offset + index) -
350+
1) +
351+
row_offset;
347352
dr::index<index_type> index_obj(row, column);
348353
value_type entry_obj(index_obj, val);
349354
return entry_obj;
350355
};
351356
return rng::transform_view(enumerted_with_data, std::move(transformer));
352357
}
353358

354-
using view_type = decltype(get_elem_view(0, nullptr, nullptr, nullptr,0));
359+
using view_type = decltype(get_elem_view(0, nullptr, nullptr, nullptr, 0));
355360

356361
dr::mp::__detail::allocator<view_tuple> tuple_alloc;
357-
view_tuple* view_helper_const;
362+
view_tuple *view_helper_const;
358363
std::shared_ptr<view_type> local_view;
359364

360365
std::size_t segment_size_ = 0;

include/dr/mp/containers/matrix_formats/csr_eq_segment.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ template <typename DSM> class csr_eq_segment_iterator {
235235
return dr::__detail::drop_segments(dsm_->segments(), segment_index_,
236236
index_);
237237
}
238-
238+
239239
auto local() const {
240240
const auto my_process_segment_index = dsm_->rows_backend_.getrank();
241241
assert(my_process_segment_index == segment_index_);

include/dr/mp/containers/matrix_formats/csr_row_distribution.hpp

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
// SPDX-License-Identifier: BSD-3-Clause
44
#pragma once
55
#include <dr/detail/matrix_entry.hpp>
6+
#include <dr/detail/multiply_view.hpp>
67
#include <dr/mp/containers/matrix_formats/csr_row_segment.hpp>
78
#include <dr/views/csr_matrix_view.hpp>
8-
#include <dr/detail/multiply_view.hpp>
99
#include <fmt/core.h>
1010

1111
namespace dr::mp {
1212
template <typename T, typename I, class BackendT = MpiBackend>
1313
class csr_row_distribution {
14-
using view_tuple = std::tuple<std::size_t, std::size_t, std::size_t, I*>;
14+
using view_tuple = std::tuple<std::size_t, std::size_t, std::size_t, I *>;
15+
1516
public:
1617
using value_type = dr::matrix_entry<T, I>;
1718
using segment_type = csr_row_segment<csr_row_distribution>;
@@ -291,56 +292,62 @@ class csr_row_distribution {
291292
fence();
292293
auto local_rows = rows_data_->segments()[rank].begin().local();
293294
auto offset = val_offsets_[rank];
294-
auto real_row_size = std::min(rows_data_->segment_size(), shape_.first - rows_data_->segment_size() * rank);
295-
auto my_tuple = std::make_tuple(real_row_size, segment_size_ * rank, offset, local_rows);
295+
auto real_row_size =
296+
std::min(rows_data_->segment_size(),
297+
shape_.first - rows_data_->segment_size() * rank);
298+
auto my_tuple = std::make_tuple(real_row_size, segment_size_ * rank, offset,
299+
local_rows);
296300
view_helper_const = alloc.allocate(1);
297301

298-
299302
if (use_sycl()) {
300-
sycl_queue().memcpy(view_helper_const, &my_tuple, sizeof(view_tuple)).wait();
303+
sycl_queue()
304+
.memcpy(view_helper_const, &my_tuple, sizeof(view_tuple))
305+
.wait();
301306
} else {
302307
view_helper_const[0] = my_tuple;
303308
}
304309

305-
local_view = std::make_shared<view_type>(get_elem_view(vals_size_, view_helper_const, cols_data_, vals_data_, rank));
310+
local_view = std::make_shared<view_type>(get_elem_view(
311+
vals_size_, view_helper_const, cols_data_, vals_data_, rank));
306312
}
307313

308-
static auto get_elem_view(
309-
std::size_t vals_size,
310-
view_tuple* helper_tuple,
311-
index_type *local_cols,
312-
elem_type *local_vals,
313-
std::size_t rank) {
314+
static auto get_elem_view(std::size_t vals_size, view_tuple *helper_tuple,
315+
index_type *local_cols, elem_type *local_vals,
316+
std::size_t rank) {
314317
auto local_vals_range = rng::subrange(local_vals, local_vals + vals_size);
315318
auto local_cols_range = rng::subrange(local_cols, local_cols + vals_size);
316319
auto zipped_results = rng::views::zip(local_vals_range, local_cols_range);
317320
auto enumerated_zipped = rng::views::enumerate(zipped_results);
318-
// we need to use multiply_view here,
321+
// we need to use multiply_view here,
319322
// because lambda is not properly copied to sycl environment
320-
// when we use variable capture
321-
auto multiply_range = dr::__detail::multiply_view(rng::subrange(helper_tuple, helper_tuple + 1), vals_size);
322-
auto enumerted_with_data = rng::views::zip(enumerated_zipped, multiply_range);
323-
323+
// when we use variable capture
324+
auto multiply_range = dr::__detail::multiply_view(
325+
rng::subrange(helper_tuple, helper_tuple + 1), vals_size);
326+
auto enumerted_with_data =
327+
rng::views::zip(enumerated_zipped, multiply_range);
328+
324329
auto transformer = [=](auto x) {
325330
auto [entry, tuple] = x;
326331
auto [row_size, row_offset, offset, local_rows] = tuple;
327332
auto [index, pair] = entry;
328333
auto [val, column] = pair;
329-
auto row = rng::distance(
330-
local_rows,
331-
std::upper_bound(local_rows, local_rows + row_size, offset + index) -
332-
1) + row_offset;
334+
auto row =
335+
rng::distance(local_rows,
336+
std::upper_bound(local_rows, local_rows + row_size,
337+
offset + index) -
338+
1) +
339+
row_offset;
333340
dr::index<index_type> index_obj(row, column);
334341
value_type entry_obj(index_obj, val);
335342
return entry_obj;
336343
};
337344
return rng::transform_view(enumerted_with_data, std::move(transformer));
338345
}
339346

340-
using view_type = decltype(get_elem_view(0, nullptr, nullptr, nullptr,0));
347+
using view_type = decltype(get_elem_view(0, nullptr, nullptr, nullptr, 0));
341348

342349
dr::mp::__detail::allocator<view_tuple> alloc;
343-
view_tuple* view_helper_const;
350+
view_tuple *view_helper_const;
344351
std::shared_ptr<view_type> local_view;
345352

346353
std::size_t segment_size_ = 0;

include/dr/mp/containers/matrix_formats/csr_row_segment.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
#pragma once
66

7-
87
namespace dr::mp {
98
template <typename DSM> class csr_row_segment_iterator;
109

@@ -223,7 +222,7 @@ template <typename DSM> class csr_row_segment_iterator {
223222
assert(dsm_ != nullptr);
224223
return dr::__detail::drop_segments(dsm_->segments(), segment_index_,
225224
index_);
226-
}
225+
}
227226

228227
auto local() const {
229228
const auto my_process_segment_index = dsm_->vals_backend_.getrank();
@@ -232,7 +231,6 @@ template <typename DSM> class csr_row_segment_iterator {
232231
}
233232

234233
private:
235-
236234
// all fields need to be initialized by default ctor so every default
237235
// constructed iter is equal to any other default constructed iter
238236
DSM *dsm_ = nullptr;

include/dr/mp/sycl_support.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ sycl::queue &sycl_queue();
1717

1818
namespace dr::mp::__detail {
1919

20-
//sometimes we only want to dereference iterator inside SYCL
20+
// sometimes we only want to dereference iterator inside SYCL
2121
template <typename T> auto sycl_get_deref(T v) {
2222
using deref_type = std::remove_reference<decltype(*v)>::type;
2323
deref_type temp;
2424
{
2525
sycl::buffer<deref_type> buff(&temp, 1);
26-
sycl_queue().submit([&](auto &&h) {
27-
sycl::accessor access(buff, h, sycl::write_only, sycl::no_init);
28-
h.single_task([=](auto i) { access[0] = *v;});
29-
}).wait();
26+
sycl_queue()
27+
.submit([&](auto &&h) {
28+
sycl::accessor access(buff, h, sycl::write_only, sycl::no_init);
29+
h.single_task([=](auto i) { access[0] = *v; });
30+
})
31+
.wait();
3032
}
3133
return temp;
3234
}

test/gtest/mp/reduce.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ TYPED_TEST(ReduceMP, RootIterators) {
4141
TYPED_TEST(ReduceMP, TransformReduce) {
4242
Ops1<TypeParam> ops(10);
4343

44-
auto add = [](auto &&elem) {
45-
return elem + 1;
46-
};
44+
auto add = [](auto &&elem) { return elem + 1; };
4745

4846
auto added = dr::mp::views::transform(ops.dist_vec, add);
4947
auto min = [](double x, double y) { return std::min(x, y); };

0 commit comments

Comments
 (0)