Skip to content
This repository was archived by the owner on Sep 22, 2025. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
262 commits
Select commit Hold shift + click to select a range
e1e9910
added dual_segment and refined dual_distributed_vector
Dec 2, 2024
bdecda7
progress
Dec 25, 2024
9e81fd7
Merge remote-tracking branch 'upstream/main'
Dec 25, 2024
811307c
tiny fix
Dec 25, 2024
a5fdcf5
Merge branch 'main' of https://github.com/quazuo/distributed-ranges
Dec 25, 2024
5353689
prog
Dec 25, 2024
6701c41
prog
Dec 25, 2024
f79fe45
prog
Dec 25, 2024
b126f8b
prog
Dec 25, 2024
e1d50c9
prog
Dec 25, 2024
0da1f2c
prog
Dec 25, 2024
871bd58
prog
Dec 27, 2024
2e3c96d
prog
Dec 27, 2024
dff502a
prog
Dec 27, 2024
89f9c18
prog
Dec 27, 2024
2e4cc88
prog
Dec 27, 2024
9c37e12
prog
Dec 27, 2024
78cbd29
prog
Dec 27, 2024
e18f59a
prog
Dec 27, 2024
3329c97
prog
Dec 27, 2024
a0e067d
prog
Dec 27, 2024
fb05c7d
prog
Dec 27, 2024
ea43af7
prog
Dec 27, 2024
4fd4d8f
prog
Dec 27, 2024
95ca6cf
prog
Dec 27, 2024
900613e
prog
Dec 27, 2024
9218cd8
prog
Dec 27, 2024
46bfa65
prog
Dec 27, 2024
3d7a9a8
prog
Dec 27, 2024
2603a6c
prog
Dec 27, 2024
cdce405
prog
Dec 27, 2024
46f6ade
prog
Jan 1, 2025
e4eafa2
prog
Jan 1, 2025
ad460d8
prog
Jan 1, 2025
bd1e8ed
prog
Jan 1, 2025
8d0f5be
prog
Jan 1, 2025
046b7e4
prog
Jan 1, 2025
5c32e9e
prog
Jan 1, 2025
6e95e27
prog
Jan 2, 2025
46dff8e
prog
Jan 2, 2025
b842cc7
prog
Jan 2, 2025
d43b9d3
prog
Jan 2, 2025
1b6b21b
prog
Jan 2, 2025
d333564
prog
Jan 2, 2025
8690c17
prog
Jan 2, 2025
3860947
prog
Jan 2, 2025
6dcd2f4
prog
Jan 2, 2025
df55977
prog
Jan 2, 2025
4b0f293
prog
Jan 2, 2025
0fe709c
prog
Jan 2, 2025
05fa8f6
prog
Jan 7, 2025
0d94948
prog
Jan 7, 2025
33a1d4f
prog
Jan 7, 2025
8dd8a00
prog
Jan 7, 2025
d04461d
prog
Jan 13, 2025
497eb8c
prog
Jan 13, 2025
29759f1
prog
Jan 21, 2025
73c78a4
prog
Jan 27, 2025
02c92d8
prog
Feb 1, 2025
6d36592
prog
Feb 1, 2025
5a48300
prog
Feb 1, 2025
2955cdc
prog
Feb 1, 2025
d5ad221
prog
Feb 1, 2025
b02102f
prog
Feb 1, 2025
8d798eb
prog
Feb 1, 2025
d658d77
prog
Feb 1, 2025
4e33bd0
prog
Feb 1, 2025
6d108c4
prog
Feb 1, 2025
381159f
prog
Feb 1, 2025
3d2edda
prog
Feb 10, 2025
ccc1033
prog
Feb 10, 2025
3723fef
prog
Feb 10, 2025
6e2f48b
prog
Feb 10, 2025
741b0d8
prog
Feb 11, 2025
a1483a2
prog
Feb 18, 2025
ffc698d
prog
Feb 25, 2025
e69d371
prog
Mar 4, 2025
92baecf
prog
Mar 4, 2025
232b66f
prog
Mar 4, 2025
7f6adc6
prog
Mar 4, 2025
f1dd4c1
prog
Mar 4, 2025
71bff7d
prog
Mar 10, 2025
8b6dc9d
prog
Mar 10, 2025
73ffe2d
prog
Mar 12, 2025
4790936
prog
Mar 12, 2025
c25edce
prog
Mar 13, 2025
68cadd5
prog
Mar 13, 2025
7efc1dd
prog
Mar 13, 2025
bfcad1a
prog
Apr 7, 2025
6a57340
prog
Apr 22, 2025
b9f85f4
prog
Apr 30, 2025
c9f663f
prog
Apr 30, 2025
91bd445
prog
Apr 30, 2025
f17cb40
prog
May 1, 2025
c3fe0df
prog
May 1, 2025
3b2a249
prog
May 6, 2025
a0e6d1a
prog
May 6, 2025
ce168f8
prog
May 6, 2025
f49db0a
prog
May 6, 2025
650ef40
prog
May 6, 2025
ecd682b
prog
May 6, 2025
459ab92
prog
May 6, 2025
c404bf5
prog
May 6, 2025
c30485c
prog
May 6, 2025
81f646a
prog
May 6, 2025
2f8558a
prog
May 6, 2025
b517be9
prog
May 6, 2025
eef815c
prog
May 6, 2025
0c8b1df
prog
May 6, 2025
cfa249e
prog
May 8, 2025
0afa41b
prog
May 8, 2025
a8063ea
prog
May 8, 2025
175843b
prog
May 8, 2025
62b282f
prog
May 8, 2025
6cd3a48
prog
May 8, 2025
6b363de
prog
May 8, 2025
a71921b
prog
May 8, 2025
3c897e4
prog
May 8, 2025
f3f5b05
prog
May 8, 2025
bbcc376
prog
May 12, 2025
d26e451
prog
May 12, 2025
5c2a3df
prog
May 12, 2025
8811883
prog
May 12, 2025
ba753d3
prog
May 12, 2025
8deeb5d
prog
May 12, 2025
4fdb6bc
prog
May 14, 2025
ad88358
prog
May 14, 2025
af75a5c
prog
May 14, 2025
cd257c9
prog
May 14, 2025
0a3c1ee
prog
May 14, 2025
73c3b05
prog
Jun 5, 2025
c54b47f
prog
Jun 5, 2025
c5262e6
prog
Jun 11, 2025
0a047e0
prog
Jun 11, 2025
86ae201
prog
Jun 11, 2025
4bb8f87
prog
Jun 11, 2025
2f4110d
prog
Jul 7, 2025
5b1cc8c
prog
Jul 10, 2025
c1beb85
prog
Jul 14, 2025
f471e5f
prog
Jul 14, 2025
d978920
prog
Jul 14, 2025
0ca7b78
prog
Jul 14, 2025
3bb2cea
prog
Jul 14, 2025
8ffc59d
prog
Jul 14, 2025
b67c6fe
prog
Jul 14, 2025
0136421
prog
Jul 14, 2025
ef414b5
prog
Jul 14, 2025
063089b
prog
Jul 15, 2025
68d2f2c
prog
Jul 17, 2025
b7de0f0
prog
Jul 17, 2025
5b84094
prog
Jul 17, 2025
bb0bc6e
prog
Jul 17, 2025
082b0df
prog
Jul 17, 2025
a47f786
prog
Jul 17, 2025
45f6642
prog
Jul 22, 2025
e119607
prog
Jul 22, 2025
75a4ba4
prog
Jul 22, 2025
4c680d5
prog
Jul 31, 2025
3e8db87
prog
Aug 5, 2025
bd7d400
prog
Aug 5, 2025
f357509
prog
Aug 5, 2025
653b628
prog
Aug 5, 2025
02da290
prog
Aug 5, 2025
74ff2c1
prog
Aug 5, 2025
c2de659
prog
Aug 5, 2025
f2fcb02
prog
Aug 6, 2025
90eac43
prog
Aug 6, 2025
1e2e2ab
prog
Aug 6, 2025
b2d1fd2
prog
Aug 6, 2025
073d76b
prog
Aug 6, 2025
4c8d23c
prog
Aug 6, 2025
577d033
prog
Aug 6, 2025
fc6ac45
prog
Aug 6, 2025
f795f9a
prog
Aug 6, 2025
debc0b0
prog
Aug 10, 2025
1c3da53
prog
Aug 10, 2025
0a1a28a
prog
Aug 10, 2025
94a0b1a
prog
Aug 10, 2025
9914310
prog
Aug 10, 2025
bcc1822
prog
Aug 13, 2025
1694d4e
prog
Aug 13, 2025
1656763
prog
Aug 13, 2025
9c6ee90
prog
Aug 13, 2025
80b518f
prog
Aug 13, 2025
f88fbc8
prog
Aug 13, 2025
64b30d6
prog
Aug 13, 2025
c31505d
prog
Aug 18, 2025
f9b8b8b
prog
Aug 18, 2025
3cd8f1e
prog
Aug 18, 2025
074c4c5
prog
Aug 18, 2025
166cd4f
prog
Aug 18, 2025
c3cbd36
prog
Aug 18, 2025
4969774
prog
Aug 18, 2025
432e0a3
prog
Aug 18, 2025
2d29367
prog
Aug 18, 2025
7841ae7
prog
Aug 18, 2025
f221e86
prog
Aug 18, 2025
b1810c3
prog
Aug 18, 2025
1f881dd
prog
Aug 18, 2025
2f3099b
prog
Aug 18, 2025
ae84fb7
prog
Aug 18, 2025
1f1f744
prog
Aug 18, 2025
a23508c
prog
Aug 18, 2025
c261441
prog
Aug 18, 2025
b66a634
prog
Aug 19, 2025
42849cc
prog
Aug 19, 2025
166971c
prog
Aug 19, 2025
1bb5765
prog
Aug 19, 2025
8a269d5
prog
Aug 25, 2025
d26589f
prog
Aug 25, 2025
f44060d
prog
Aug 25, 2025
e6ab425
prog
Aug 25, 2025
0a75dfe
prog
Aug 25, 2025
b4d01e5
prog
Aug 25, 2025
556878c
prog
Aug 25, 2025
0ddda9c
prog
Aug 25, 2025
4b89374
prog
Aug 25, 2025
8f14ddc
prog
Aug 25, 2025
7add086
prog
Aug 25, 2025
efa8681
prog
Aug 25, 2025
235d009
prog
Aug 25, 2025
ccc617f
prog
Aug 25, 2025
d7b6e47
prog
Aug 25, 2025
1970ac7
prog
Aug 25, 2025
befee8b
prog
Aug 25, 2025
5ddbe41
prog
Aug 26, 2025
6afa00e
prog
Aug 26, 2025
ca18a6b
prog
Aug 26, 2025
8363dad
prog
Aug 26, 2025
16c4959
prog
Aug 26, 2025
2e05a6e
prog
Aug 26, 2025
bb1ac96
prog
Aug 26, 2025
3d2f698
prog
Aug 30, 2025
977b908
prog
Aug 30, 2025
83e3e5a
prog
Sep 3, 2025
74a5cec
prog
Sep 3, 2025
69dc033
prog
Sep 3, 2025
b68a4d6
prog
Sep 3, 2025
2535abb
prog
Sep 3, 2025
40f7975
prog
Sep 3, 2025
65bb87f
prog
Sep 3, 2025
17d288c
prog
Sep 3, 2025
2a26e3a
prog
Sep 4, 2025
38a0930
prog
Sep 4, 2025
8d78ed1
prog
Sep 4, 2025
35c65bd
prog
Sep 4, 2025
7e15a40
prog
Sep 4, 2025
81f1a6a
prog
Sep 4, 2025
a24d8c6
prog
Sep 4, 2025
89cd83f
prog
Sep 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions include/dr/mp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,4 @@
#include <dr/mp/algorithms/transpose.hpp>
#include <dr/mp/containers/distributed_vector.hpp>
#include <dr/mp/containers/distributed_mdarray.hpp>
#include <dr/mp/containers/dual_distributed_vector.hpp>
50 changes: 48 additions & 2 deletions include/dr/mp/algorithms/for_each.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,53 @@

namespace dr::mp {

/// Collective for_each on distributed range
// the concept doesn't work yet... for some reason
template <typename R>
concept dual_vector_range =
dr::distributed_range<R> && requires(R &r) { dr::ranges::segments(r)[0].is_compute(); };

void partial_for_each(dual_vector_range auto &&dr, auto op) {
dr::drlog.debug(dr::logger::for_each, "partial_for_each: parallel execution\n");
if (rng::empty(dr)) {
return;
}

auto is_local = [](const auto &segment) {
return dr::ranges::rank(segment) == default_comm().rank();
};

for (auto &seg : dr::ranges::segments(dr) | rng::views::filter(is_local)) {
if (!seg.is_compute()) {
seg.swap_state();
continue;
}

auto b = dr::ranges::local(rng::begin(seg));
auto s = rng::subrange(b, b + rng::distance(seg));

if (mp::use_sycl()) {
dr::drlog.debug(" using sycl\n");

assert(rng::distance(s) > 0);
#ifdef SYCL_LANGUAGE_VERSION
dr::__detail::parallel_for(
dr::mp::sycl_queue(), sycl::range<1>(rng::distance(s)),
[first = rng::begin(s), op](auto idx) { op(first[idx]); })
.wait();
#else
assert(false);
#endif
} else {
dr::drlog.debug(" using cpu\n");
rng::for_each(s, op);
}

seg.swap_state();
}
// barrier();
}

// Collective for_each on distributed range
void for_each(dr::distributed_range auto &&dr, auto op) {
dr::drlog.debug(dr::logger::for_each, "for_each: parallel execution\n");
if (rng::empty(dr)) {
Expand All @@ -44,7 +90,7 @@ void for_each(dr::distributed_range auto &&dr, auto op) {
rng::for_each(s, op);
}
}
barrier();
// barrier();
}

/// Collective for_each on iterator/sentinel for a distributed range
Expand Down
Loading