Skip to content

Commit 0242420

Browse files
committed
Merge remote-tracking branch 'upstream/main' into syssched-R6-work
2 parents 19c916f + 46f8c63 commit 0242420

105 files changed

Lines changed: 573 additions & 337 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.

CMakeLists.txt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -271,22 +271,28 @@ target_compile_definitions(
271271
stdexec_executable_flags INTERFACE
272272
$<$<NOT:$<AND:$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>>:STDEXEC_ENABLE_EXTRA_TYPE_CHECKING>)
273273

274-
# Support target for examples and tests
275-
add_library(nvexec_executable_flags INTERFACE)
276-
277-
target_compile_options(nvexec_executable_flags INTERFACE
278-
$<$<AND:$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>:-gpu=nomanaged>)
279-
target_link_options(nvexec_executable_flags INTERFACE
280-
$<$<AND:$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>:-gpu=nomanaged>)
281-
282274
# Set up nvexec library
283275
option(STDEXEC_ENABLE_CUDA "Enable CUDA targets for non-nvc++ compilers" OFF)
276+
284277
if(CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")
285278
set(STDEXEC_ENABLE_CUDA ON)
286279
# Unset these if using nvc++
287280
disable_compiler(LANG CUDA)
281+
282+
set(_nvhpc_seperate_memory_flags "-gpu=nomanaged")
283+
# if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 24.5.0)
284+
# set(_nvhpc_seperate_memory_flags "-gpu=mem:separate")
285+
# endif()
288286
endif()
289287

288+
# Support target for examples and tests
289+
add_library(nvexec_executable_flags INTERFACE)
290+
291+
target_compile_options(nvexec_executable_flags INTERFACE
292+
$<$<AND:$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>:${_nvhpc_seperate_memory_flags}>)
293+
target_link_options(nvexec_executable_flags INTERFACE
294+
$<$<AND:$<CXX_COMPILER_ID:NVHPC>,$<COMPILE_LANGUAGE:CXX>>:${_nvhpc_seperate_memory_flags}>)
295+
290296
if(STDEXEC_ENABLE_CUDA)
291297
file(GLOB_RECURSE nvexec_headers CONFIGURE_DEPENDS include/nvexec/*.cuh)
292298
add_library(nvexec INTERFACE)

examples/benchmark/static_thread_pool_old.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#include <exception>
2727
#include <mutex>
2828
#include <thread>
29-
#include <type_traits>
3029
#include <vector>
3130

3231
namespace exec_old {
@@ -410,7 +409,8 @@ namespace exec_old {
410409
this->__execute = [](task_base* t, const std::uint32_t /* tid */) noexcept {
411410
auto& op = *static_cast<operation*>(t);
412411
auto stoken = stdexec::get_stop_token(stdexec::get_env(op.receiver_));
413-
if constexpr (stdexec::unstoppable_token<decltype(stoken)>) {
412+
if constexpr (
413+
stdexec::unstoppable_token<decltype(stoken)>) { // NOLINT(bugprone-branch-clone)
414414
stdexec::set_value(static_cast<Receiver&&>(op.receiver_));
415415
} else if (stoken.stop_requested()) {
416416
stdexec::set_stopped(static_cast<Receiver&&>(op.receiver_));

examples/nvexec/maxwell/cuda.cuh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
#include "common.cuh"
1919
#include "nvexec/detail/throw_on_cuda_error.cuh"
2020

21+
STDEXEC_PRAGMA_PUSH()
22+
STDEXEC_PRAGMA_IGNORE_EDG(cuda_compile)
23+
2124
template <int BlockThreads, class Action>
2225
__launch_bounds__(BlockThreads) __global__ void kernel(std::size_t cells, Action action) {
2326
std::size_t cell_id = threadIdx.x + blockIdx.x * BlockThreads;
@@ -62,3 +65,5 @@ void run_cuda(
6265

6366
cudaStreamDestroy(stream);
6467
}
68+
69+
STDEXEC_PRAGMA_POP()

examples/nvexec/maxwell/snr.cuh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,9 +356,9 @@ namespace repeat_n_detail {
356356
template <stdexec::__decays_to<repeat_n_sender_t> Self, stdexec::receiver Receiver>
357357
requires(stdexec::sender_to<Sender, Receiver>)
358358
&& (nvexec::STDEXEC_STREAM_DETAIL_NS::receiver_with_stream_env<Receiver>)
359-
friend auto tag_invoke(stdexec::connect_t, Self&& self, Receiver r)
360-
-> nvexec::STDEXEC_STREAM_DETAIL_NS::repeat_n::
361-
operation_state_t<SenderId, Closure, stdexec::__id<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>> {
362362
return nvexec::STDEXEC_STREAM_DETAIL_NS::repeat_n::
363363
operation_state_t<SenderId, Closure, stdexec::__id<Receiver>>(
364364
static_cast<Sender&&>(self.sender_), self.closure_, static_cast<Receiver&&>(r), self.n_);

include/exec/any_sender_of.hpp

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,9 @@ namespace exec {
437437
(*__other.__vtable_)(__copy_construct, this, __other);
438438
}
439439

440-
auto operator=(const __t& __other) -> __t& requires(_Copyable) {
440+
auto operator=(const __t& __other) -> __t&
441+
requires(_Copyable)
442+
{
441443
if (&__other != this) {
442444
__t tmp(__other);
443445
*this = std::move(tmp);
@@ -1150,27 +1152,21 @@ namespace exec {
11501152
}
11511153

11521154
template <class... _As>
1153-
requires stdexec::tag_invocable<stdexec::set_value_t, __receiver_base, _As...>
1155+
requires stdexec::__callable<stdexec::set_value_t, __receiver_base, _As...>
11541156
void set_value(_As&&... __as) noexcept {
1155-
stdexec::tag_invoke(
1156-
stdexec::set_value,
1157-
static_cast<__receiver_base&&>(__receiver_),
1158-
static_cast<_As&&>(__as)...);
1157+
stdexec::set_value(static_cast<__receiver_base&&>(__receiver_), static_cast<_As&&>(__as)...);
11591158
}
11601159

11611160
template <class _Error>
1162-
requires stdexec::tag_invocable<stdexec::set_error_t, __receiver_base, _Error>
1161+
requires stdexec::__callable<stdexec::set_error_t, __receiver_base, _Error>
11631162
void set_error(_Error&& __err) noexcept {
1164-
stdexec::tag_invoke(
1165-
stdexec::set_error,
1166-
static_cast<__receiver_base&&>(__receiver_),
1167-
static_cast<_Error&&>(__err));
1163+
stdexec::set_error(static_cast<__receiver_base&&>(__receiver_), static_cast<_Error&&>(__err));
11681164
}
11691165

11701166
void set_stopped() noexcept
1171-
requires stdexec::tag_invocable<stdexec::set_stopped_t, __receiver_base>
1167+
requires stdexec::__callable<stdexec::set_stopped_t, __receiver_base>
11721168
{
1173-
stdexec::tag_invoke(stdexec::set_stopped, static_cast<__receiver_base&&>(__receiver_));
1169+
stdexec::set_stopped(static_cast<__receiver_base&&>(__receiver_));
11741170
}
11751171

11761172
auto get_env() const noexcept -> stdexec::env_of_t<__receiver_base> {

include/exec/libdispatch_queue.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020

2121
// TODO: This is needed for libdispatch to compile with GCC. Need to look for
2222
// workaround.
23-
#ifndef __has_feature
24-
# define __has_feature(x) false
25-
#endif
26-
#ifndef __has_extension
27-
# define __has_extension(x) false
28-
#endif
29-
30-
#include "stdexec/execution.hpp"
31-
#include <dispatch/dispatch.h>
23+
# ifndef __has_feature
24+
# define __has_feature(x) false
25+
# endif
26+
# ifndef __has_extension
27+
# define __has_extension(x) false
28+
# endif
29+
30+
# include "stdexec/execution.hpp"
31+
# include <dispatch/dispatch.h>
3232

3333
namespace exec {
3434
struct libdispatch_queue;

include/exec/linux/io_uring_context.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ namespace exec {
653653
__io_task<_Op> && //
654654
requires(_Op& __op) {
655655
{
656-
static_cast<_Op&&>(__op).receiver()
656+
static_cast<_Op &&>(__op).receiver()
657657
} noexcept
658658
-> stdexec::receiver_of<stdexec::completion_signatures<stdexec::set_stopped_t()>>;
659659
};

include/exec/materialize.hpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ namespace exec {
7474

7575
template <__decays_to<_Sender> _Sndr>
7676
__t(_Sndr&& __sender)
77-
: __sender_{static_cast<_Sndr&&>(__sender)} {
77+
: __sndr_{static_cast<_Sndr&&>(__sender)} {
7878
}
7979

8080
template <__decays_to<__t> _Self, class _Receiver>
@@ -83,7 +83,7 @@ namespace exec {
8383
noexcept(__nothrow_connectable<__copy_cvref_t<_Self, _Sender>, __receiver_t<_Receiver>>)
8484
-> connect_result_t<__copy_cvref_t<_Self, _Sender>, __receiver_t<_Receiver>> {
8585
return stdexec::connect(
86-
static_cast<_Self&&>(__self).__sender_,
86+
static_cast<_Self&&>(__self).__sndr_,
8787
__receiver_t<_Receiver>{static_cast<_Receiver&&>(__receiver)});
8888
}
8989

@@ -93,23 +93,23 @@ namespace exec {
9393
template <class _Err>
9494
using __materialize_error = completion_signatures<set_value_t(set_error_t, _Err)>;
9595

96-
template <class... _Env>
97-
using __completion_signatures_for_t = //
96+
template <class _Self, class... _Env>
97+
using __completions_t = //
9898
__transform_completion_signatures<
99-
__completion_signatures_of_t<_Sender, _Env...>,
99+
__completion_signatures_of_t<__copy_cvref_t<_Self, _Sender>, _Env...>,
100100
__materialize_value,
101101
__materialize_error,
102102
completion_signatures<set_value_t(set_stopped_t)>,
103103
__mconcat<__qq<completion_signatures>>::__f>;
104104

105105
template <__decays_to<__t> _Self, class... _Env>
106106
static auto get_completion_signatures(_Self&&, _Env&&...) //
107-
-> __completion_signatures_for_t<_Env...> {
107+
-> __completions_t<_Self, _Env...> {
108108
return {};
109109
}
110110

111111
private:
112-
_Sender __sender_;
112+
_Sender __sndr_;
113113
};
114114
};
115115

@@ -145,7 +145,7 @@ namespace exec {
145145
}
146146

147147
template <__completion_tag _Tag, class... _Args>
148-
requires tag_invocable<_Tag, _Receiver&&, _Args...>
148+
requires __callable<_Tag, _Receiver, _Args...>
149149
void set_value(_Tag, _Args&&... __args) noexcept {
150150
_Tag()(static_cast<_Receiver&&>(__upstream_), static_cast<_Args&&>(__args)...);
151151
}
@@ -182,7 +182,7 @@ namespace exec {
182182

183183
template <__decays_to<_Sender> _Sndr>
184184
__t(_Sndr&& __sndr) noexcept(__nothrow_decay_copyable<_Sndr>)
185-
: __sender_{static_cast<_Sndr&&>(__sndr)} {
185+
: __sndr_{static_cast<_Sndr&&>(__sndr)} {
186186
}
187187

188188
template <__decays_to<__t> _Self, class _Receiver>
@@ -191,32 +191,29 @@ namespace exec {
191191
noexcept(__nothrow_connectable<__copy_cvref_t<_Self, _Sender>, __receiver_t<_Receiver>>)
192192
-> connect_result_t<__copy_cvref_t<_Self, _Sender>, __receiver_t<_Receiver>> {
193193
return stdexec::connect(
194-
static_cast<_Self&&>(__self).__sender_,
194+
static_cast<_Self&&>(__self).__sndr_,
195195
__receiver_t<_Receiver>{static_cast<_Receiver&&>(__receiver)});
196196
}
197197

198198
template <class _Tag, class... _Args>
199199
requires __completion_tag<__decay_t<_Tag>>
200200
using __dematerialize_value = completion_signatures<__decay_t<_Tag>(_Args...)>;
201201

202-
template <class... Ts>
203-
using __foo = __meval<__dematerialize_value, Ts...>;
204-
205-
template <class... _Env>
206-
using __completion_signatures_for_t = //
202+
template <class _Self, class... _Env>
203+
using __completions_t = //
207204
transform_completion_signatures<
208-
__completion_signatures_of_t<_Sender, _Env...>,
205+
__completion_signatures_of_t<__copy_cvref_t<_Self, _Sender>, _Env...>,
209206
completion_signatures<>,
210207
__mtry_q<__dematerialize_value>::template __f>;
211208

212209
template <__decays_to<__t> _Self, class... _Env>
213210
static auto get_completion_signatures(_Self&&, _Env&&...) //
214-
-> __completion_signatures_for_t<_Env...> {
211+
-> __completions_t<_Self, _Env...> {
215212
return {};
216213
}
217214

218215
private:
219-
_Sender __sender_;
216+
_Sender __sndr_;
220217
};
221218
};
222219

include/exec/sequence/ignore_all_values.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
namespace exec {
2626
template <class _Variant, class _Type, class... _Args>
2727
concept __variant_emplaceable = requires(_Variant& __v, _Args&&... __args) {
28-
__v.template emplace<_Type>(static_cast<_Args&&>(__args)...);
28+
__v.template emplace<_Type>(static_cast<_Args &&>(__args)...);
2929
};
3030

3131
template <class _Variant, class _Type, class... _Args>
3232
concept __nothrow_variant_emplaceable = requires(_Variant& __v, _Args&&... __args) {
33-
{ __v.template emplace<_Type>(static_cast<_Args&&>(__args)...) } noexcept;
33+
{ __v.template emplace<_Type>(static_cast<_Args &&>(__args)...) } noexcept;
3434
};
3535

3636
namespace __ignore_all_values {

include/exec/sequence_senders.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ namespace exec {
202202

203203
template <class _Sender, class... _Env>
204204
concept has_sequence_item_types = requires(_Sender&& __sndr, _Env&&... __env) {
205-
get_item_types(static_cast<_Sender&&>(__sndr), static_cast<_Env&&>(__env)...);
205+
get_item_types(static_cast<_Sender &&>(__sndr), static_cast<_Env &&>(__env)...);
206206
};
207207

208208
template <class _Sender, class... _Env>
@@ -413,7 +413,7 @@ namespace exec {
413413
concept sequence_sender_to =
414414
sequence_receiver_from<_Receiver, _Sender> && //
415415
requires(_Sender&& __sndr, _Receiver&& __rcvr) {
416-
subscribe(static_cast<_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr));
416+
subscribe(static_cast<_Sender &&>(__sndr), static_cast<_Receiver &&>(__rcvr));
417417
};
418418

419419
template <class _Receiver>

0 commit comments

Comments
 (0)