Skip to content

Commit 6212d1a

Browse files
committed
use new-style sender algo customization in stream_scheduler
1 parent 203a6bd commit 6212d1a

89 files changed

Lines changed: 1459 additions & 1191 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,12 @@ KeepEmptyLinesAtTheStartOfBlocks: true
8383
LambdaBodyIndentation: Signature
8484
LineEnding: LF
8585
Macros: [
86-
'STDEXEC_MEMFN_DECL(X)=X',
87-
'STDEXEC_MEMFN_DECL(X,Y)=X,Y',
88-
'STDEXEC_MEMFN_DECL(X,Y,Z)=X,Y,Z',
86+
'STDEXEC_MEMFN_DECL(...)=__VA_ARGS__',
8987
'STDEXEC_ATTRIBUTE(X)=[[]]',
90-
'STDEXEC_NO_UNIQUE_ADDRESS=[[no_unique_address]]',
9188
'STDEXEC_IMMOVABLE_NO_UNIQUE_ADDRESS=[[no_unique_address]]',
9289
'STDEXEC_MISSING_MEMBER(X,Y)=true',
93-
'STDEXEC_DEFINE_MEMBER(X)=void foo() {}'
90+
'STDEXEC_DEFINE_MEMBER(X)=void foo() {}',
91+
'STDEXEC_AUTO_RETURN(...)=->decltype(auto){ return __VA_ARGS__; }',
9492
]
9593
MaxEmptyLinesToKeep: 2
9694
NamespaceIndentation: All

.clang-tidy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ HeaderFileExtensions:
77
- hh
88
- hpp
99
- hxx
10+
- cuh
1011
ImplementationFileExtensions:
1112
- c
1213
- cc

.clangd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ CompileFlags:
3535

3636
# Use clang++ in CUDA mode to provide intellisense for files with `nvexec` in their path
3737
If:
38-
PathMatch: (include|examples|test)/nvexec.*
38+
PathMatch: .*\b(include|examples|test)/nvexec.*
3939
CompileFlags:
4040
Compiler: clang++
4141
Add:
@@ -54,6 +54,7 @@ CompileFlags:
5454
- "-ferror-limit=0"
5555
- "-fmacro-backtrace-limit=0"
5656
- "-ftemplate-backtrace-limit=0"
57+
- "-std=gnu++20"
5758
Remove:
5859
- "-stdpar*"
5960
# strip CUDA fatbin args

examples/benchmark/static_thread_pool_bulk_enqueue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct RunThread {
4545
auto env = exec::make_env(stdexec::prop{stdexec::get_allocator, alloc});
4646
auto [start, end] = exec::_pool_::even_share(total_scheds, tid, pool.available_parallelism());
4747
auto iterate = exec::schedule_all(pool, std::views::iota(start, end))
48-
| exec::ignore_all_values() | exec::write(env);
48+
| exec::ignore_all_values() | exec::write_env(env);
4949
# else
5050
auto [start, end] = exec::_pool_::even_share(total_scheds, tid, pool.available_parallelism());
5151
auto iterate = exec::schedule_all(pool, std::views::iota(start, end))

examples/benchmark/static_thread_pool_bulk_enqueue_nested.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct RunThread {
4646
auto env = exec::make_env(stdexec::prop{stdexec::get_allocator, alloc});
4747
auto [start, end] = exec::_pool_::even_share(total_scheds, tid, pool.available_parallelism());
4848
auto iterate = exec::iterate(std::views::iota(start, end)) | exec::ignore_all_values()
49-
| exec::write(env);
49+
| exec::write_env(env);
5050
# else
5151
auto [start, end] = exec::_pool_::even_share(total_scheds, tid, pool.available_parallelism());
5252
auto iterate = exec::iterate(std::views::iota(start, end)) | exec::ignore_all_values();

examples/nvexec/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ function(def_cpu_example example)
9292
stdexec_executable_flags
9393
)
9494
set_source_files_properties(${source} PROPERTIES LANGUAGE ${_lang_cxx})
95+
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
96+
target_link_options(${target} PRIVATE -lc++abi -ltbb)
97+
endif()
9598
endfunction()
9699

97100
foreach(example ${nvexec_cpu_examples})

examples/nvexec/maxwell/common.cuh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
17+
// clang-format Language: Cpp
18+
1619
#pragma once
1720

1821
#include "stdexec/__detail/__config.hpp"

examples/nvexec/maxwell/cpp.cuh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
17+
// clang-format Language: Cpp
18+
1619
#pragma once
1720

1821
#include "common.cuh"

examples/nvexec/maxwell/cuda.cuh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
17+
// clang-format Language: Cpp
18+
1619
#pragma once
1720

1821
#include "common.cuh"

examples/nvexec/maxwell/snr.cuh

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
17+
// clang-format Language: Cpp
18+
1619
#pragma once
1720

1821
#include "common.cuh"
@@ -54,7 +57,7 @@ STDEXEC_PRAGMA_IGNORE_GNU("-Wmissing-braces")
5457
namespace ex = stdexec;
5558

5659
#if defined(_NVHPC_CUDA) || defined(__CUDACC__)
57-
namespace nvexec::STDEXEC_STREAM_DETAIL_NS { //
60+
namespace nvexec::_strm { //
5861

5962
namespace repeat_n {
6063
template <class OpT>
@@ -188,7 +191,7 @@ namespace nvexec::STDEXEC_STREAM_DETAIL_NS { //
188191
}});
189192
}
190193
};
191-
}} // namespace nvexec::STDEXEC_STREAM_DETAIL_NS::repeat_n
194+
}} // namespace nvexec::_strm::repeat_n
192195
#endif
193196

194197
namespace repeat_n_detail {
@@ -346,7 +349,7 @@ namespace repeat_n_detail {
346349
#if defined(_NVHPC_CUDA) || defined(__CUDACC__)
347350
template <stdexec::__decays_to<repeat_n_sender_t> Self, stdexec::receiver Receiver>
348351
requires(stdexec::sender_to<Sender, Receiver>)
349-
&& (!nvexec::STDEXEC_STREAM_DETAIL_NS::receiver_with_stream_env<Receiver>)
352+
&& (!nvexec::_strm::receiver_with_stream_env<Receiver>)
350353
friend auto tag_invoke(stdexec::connect_t, Self&& self, Receiver r)
351354
-> repeat_n_detail::operation_state_t<SenderId, Closure, stdexec::__id<Receiver>> {
352355
return repeat_n_detail::operation_state_t<SenderId, Closure, stdexec::__id<Receiver>>(
@@ -355,13 +358,11 @@ namespace repeat_n_detail {
355358

356359
template <stdexec::__decays_to<repeat_n_sender_t> Self, stdexec::receiver Receiver>
357360
requires(stdexec::sender_to<Sender, Receiver>)
358-
&& (nvexec::STDEXEC_STREAM_DETAIL_NS::receiver_with_stream_env<Receiver>)
359-
friend auto
360-
tag_invoke(stdexec::connect_t, Self&& self, Receiver r) -> nvexec::STDEXEC_STREAM_DETAIL_NS::
361-
repeat_n::operation_state_t<SenderId, Closure, stdexec::__id<Receiver>> {
362-
return nvexec::STDEXEC_STREAM_DETAIL_NS::repeat_n::
363-
operation_state_t<SenderId, Closure, stdexec::__id<Receiver>>(
364-
static_cast<Sender&&>(self.sender_), self.closure_, static_cast<Receiver&&>(r), self.n_);
361+
&& (nvexec::_strm::receiver_with_stream_env<Receiver>)
362+
friend auto tag_invoke(stdexec::connect_t, Self&& self, Receiver r)
363+
-> nvexec::_strm::repeat_n::operation_state_t<SenderId, Closure, stdexec::__id<Receiver>> {
364+
return nvexec::_strm::repeat_n::operation_state_t<SenderId, Closure, stdexec::__id<Receiver>>(
365+
static_cast<Sender&&>(self.sender_), self.closure_, static_cast<Receiver&&>(r), self.n_);
365366
}
366367
#else
367368
template <stdexec::__decays_to<repeat_n_sender_t> Self, stdexec::receiver Receiver>

0 commit comments

Comments
 (0)