Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
28 changes: 13 additions & 15 deletions cudax/include/cuda/experimental/__container/async_buffer.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

#include <cuda/__memory_resource/get_memory_resource.h>
#include <cuda/__memory_resource/properties.h>
#include <cuda/__memory_resource/resource_ref.h>
#include <cuda/__stream/get_stream.h>
#include <cuda/std/__execution/env.h>
#include <cuda/std/__iterator/concepts.h>
Expand All @@ -50,7 +49,6 @@
#include <cuda/experimental/__execution/policy.cuh>
#include <cuda/experimental/__launch/host_launch.cuh>
#include <cuda/experimental/__memory_resource/any_resource.cuh>
#include <cuda/experimental/__memory_resource/properties.cuh>
#include <cuda/experimental/__utility/ensure_current_device.cuh>

#include <cuda/std/__cccl/prologue.h>
Expand Down Expand Up @@ -96,7 +94,7 @@ public:
using const_reverse_iterator = ::cuda::std::reverse_iterator<const_iterator>;
using size_type = ::cuda::std::size_t;
using difference_type = ::cuda::std::ptrdiff_t;
using properties_list = ::cuda::experimental::properties_list<_Properties...>;
using properties_list = ::cuda::mr::properties_list<_Properties...>;

using __buffer_t = ::cuda::experimental::uninitialized_async_buffer<_Tp, _Properties...>;
using __resource_t = ::cuda::experimental::any_resource<_Properties...>;
Expand Down Expand Up @@ -533,7 +531,7 @@ public:

//! @brief Causes the buffer to be treated as a span when passed to cudax::launch.
//! @pre The buffer must have the cuda::mr::device_accessible property.
template <class _DeviceAccessible = device_accessible>
template <class _DeviceAccessible = ::cuda::mr::device_accessible>
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, async_buffer& __self) noexcept
_CCCL_TRAILING_REQUIRES(::cuda::std::span<_Tp>)(::cuda::std::__is_included_in_v<_DeviceAccessible, _Properties...>)
Expand All @@ -544,7 +542,7 @@ public:

//! @brief Causes the buffer to be treated as a span when passed to cudax::launch
//! @pre The buffer must have the cuda::mr::device_accessible property.
template <class _DeviceAccessible = device_accessible>
template <class _DeviceAccessible = ::cuda::mr::device_accessible>
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, const async_buffer& __self) noexcept _CCCL_TRAILING_REQUIRES(
::cuda::std::span<const _Tp>)(::cuda::std::__is_included_in_v<_DeviceAccessible, _Properties...>)
Expand Down Expand Up @@ -634,7 +632,7 @@ async_buffer<_Tp, _TargetProperties...> make_async_buffer(
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class... _SourceProperties, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND __has_default_queries<_Resource>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>)
auto make_async_buffer(
stream_ref __stream, _Resource&& __mr, const async_buffer<_Tp, _SourceProperties...>& __source, const _Env& __env = {})
{
Expand All @@ -656,8 +654,8 @@ make_async_buffer(stream_ref __stream, any_resource<_Properties...> __mr, const
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(
::cuda::mr::resource<_Resource> _CCCL_AND __has_default_queries<_Resource> _CCCL_AND __buffer_compatible_env<_Env>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource> _CCCL_AND
__buffer_compatible_env<_Env>)
auto make_async_buffer(stream_ref __stream, _Resource&& __mr, const _Env& __env = {})
{
using __buffer_type = __buffer_type_for_props<_Tp, typename ::cuda::std::decay_t<_Resource>::default_queries>;
Expand All @@ -678,7 +676,7 @@ async_buffer<_Tp, _Properties...> make_async_buffer(
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND __has_default_queries<_Resource>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>)
auto make_async_buffer(
stream_ref __stream, _Resource&& __mr, size_t __size, const _Tp& __value, [[maybe_unused]] const _Env& __env = {})
{
Expand All @@ -705,7 +703,7 @@ async_buffer<_Tp, _Properties...> make_async_buffer(
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND __has_default_queries<_Resource>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>)
auto make_async_buffer(
stream_ref __stream, _Resource&& __mr, size_t __size, ::cuda::experimental::no_init_t, const _Env& __env = {})
{
Expand All @@ -723,8 +721,8 @@ async_buffer<_Tp, _Properties...> make_async_buffer(
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Iter, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND
__has_default_queries<_Resource> _CCCL_AND ::cuda::std::__has_forward_traversal<_Iter>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>
_CCCL_AND ::cuda::std::__has_forward_traversal<_Iter>)
auto make_async_buffer(stream_ref __stream, _Resource&& __mr, _Iter __first, _Iter __last, const _Env& __env = {})
{
using __buffer_type = __buffer_type_for_props<_Tp, typename ::cuda::std::decay_t<_Resource>::default_queries>;
Expand All @@ -743,7 +741,7 @@ async_buffer<_Tp, _Properties...> make_async_buffer(
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND __has_default_queries<_Resource>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>)
auto make_async_buffer(
stream_ref __stream, _Resource&& __mr, ::cuda::std::initializer_list<_Tp> __ilist, const _Env& __env = {})
{
Expand All @@ -761,8 +759,8 @@ make_async_buffer(stream_ref __stream, any_resource<_Properties...> __mr, _Range
}

_CCCL_TEMPLATE(class _Tp, class _Resource, class _Range, class _Env = ::cuda::std::execution::env<>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND
__has_default_queries<_Resource> _CCCL_AND ::cuda::std::ranges::forward_range<_Range>)
_CCCL_REQUIRES(::cuda::mr::resource<_Resource> _CCCL_AND ::cuda::mr::__has_default_queries<_Resource>
_CCCL_AND ::cuda::std::ranges::forward_range<_Range>)
auto make_async_buffer(stream_ref __stream, _Resource&& __mr, _Range&& __range, const _Env& __env = {})
{
using __buffer_type = __buffer_type_for_props<_Tp, typename ::cuda::std::decay_t<_Resource>::default_queries>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
#include <cuda/stream_ref>

#include <cuda/experimental/__memory_resource/any_resource.cuh>
#include <cuda/experimental/__memory_resource/properties.cuh>

#include <cuda/std/__cccl/prologue.h>

Expand Down Expand Up @@ -119,7 +118,7 @@ private:
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, uninitialized_async_buffer& __self) noexcept
_CCCL_TRAILING_REQUIRES(::cuda::std::span<_Tp>)(
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<device_accessible, _Properties...>)
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<::cuda::mr::device_accessible, _Properties...>)
{
// TODO add auto synchronization
return {__self.__get_data(), __self.size()};
Expand All @@ -131,7 +130,7 @@ private:
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, const uninitialized_async_buffer& __self) noexcept
_CCCL_TRAILING_REQUIRES(::cuda::std::span<const _Tp>)(
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<device_accessible, _Properties...>)
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<::cuda::mr::device_accessible, _Properties...>)
{
// TODO add auto synchronization
return {__self.__get_data(), __self.size()};
Expand Down Expand Up @@ -390,7 +389,7 @@ public:
};

template <class _Tp>
using uninitialized_async_device_buffer = uninitialized_async_buffer<_Tp, device_accessible>;
using uninitialized_async_device_buffer = uninitialized_async_buffer<_Tp, ::cuda::mr::device_accessible>;

} // namespace cuda::experimental

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
#include <cuda/std/span>

#include <cuda/experimental/__memory_resource/any_resource.cuh>
#include <cuda/experimental/__memory_resource/properties.cuh>

#include <cuda/std/__cccl/prologue.h>

Expand Down Expand Up @@ -108,7 +107,7 @@ private:
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, uninitialized_buffer& __self) noexcept
_CCCL_TRAILING_REQUIRES(::cuda::std::span<_Tp>)(
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<device_accessible, _Properties...>)
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<::cuda::mr::device_accessible, _Properties...>)
{
return {__self.__get_data(), __self.size()};
}
Expand All @@ -119,7 +118,7 @@ private:
[[nodiscard]] _CCCL_HIDE_FROM_ABI friend auto
transform_device_argument(::cuda::stream_ref, const uninitialized_buffer& __self) noexcept
_CCCL_TRAILING_REQUIRES(::cuda::std::span<const _Tp>)(
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<device_accessible, _Properties...>)
::cuda::std::same_as<_Tp, _Tp2>&& ::cuda::std::__is_included_in_v<::cuda::mr::device_accessible, _Properties...>)
{
return {__self.__get_data(), __self.size()};
}
Expand Down Expand Up @@ -289,7 +288,7 @@ public:
};

template <class _Tp>
using uninitialized_device_buffer = uninitialized_buffer<_Tp, device_accessible>;
using uninitialized_device_buffer = uninitialized_buffer<_Tp, ::cuda::mr::device_accessible>;

} // namespace cuda::experimental

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@
#endif // no system header

#include <cuda/__memory_resource/get_property.h>
#include <cuda/__memory_resource/properties.h>
#include <cuda/__memory_resource/resource.h>
#include <cuda/__memory_resource/resource_ref.h>
#include <cuda/__utility/basic_any.h>
#include <cuda/std/__concepts/concept_macros.h>
#include <cuda/std/__utility/forward.h>
#include <cuda/std/optional>

#include <cuda/experimental/__memory_resource/properties.cuh>

#include <cuda/std/__cccl/prologue.h>

namespace cuda::experimental
Expand Down Expand Up @@ -300,7 +299,7 @@ struct _CCCL_DECLSPEC_EMPTY_BASES any_synchronous_resource
: __base(::cuda::std::move(__other.__get_base()))
{}

using default_queries = properties_list<_Properties...>;
using default_queries = ::cuda::mr::properties_list<_Properties...>;

private:
static_assert(::cuda::mr::__contains_execution_space_property<_Properties...>,
Expand All @@ -323,7 +322,7 @@ struct _CCCL_DECLSPEC_EMPTY_BASES any_resource
// Inherit constructors from __basic_any
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(any_resource, ::cuda::__basic_any, experimental::__iasync_resource<_Properties...>);

using default_queries = properties_list<_Properties...>;
using default_queries = ::cuda::mr::properties_list<_Properties...>;

private:
static_assert(::cuda::mr::__contains_execution_space_property<_Properties...>,
Expand Down Expand Up @@ -366,7 +365,7 @@ struct _CCCL_DECLSPEC_EMPTY_BASES synchronous_resource_ref
template <class... _OtherProperties>
synchronous_resource_ref(::cuda::mr::resource_ref<_OtherProperties...>) = delete;

using default_queries = properties_list<_Properties...>;
using default_queries = ::cuda::mr::properties_list<_Properties...>;

private:
static_assert(::cuda::mr::__contains_execution_space_property<_Properties...>,
Expand All @@ -390,7 +389,7 @@ struct _CCCL_DECLSPEC_EMPTY_BASES resource_ref
// Inherit other constructors from __basic_any
_LIBCUDACXX_DELEGATE_CONSTRUCTORS(resource_ref, ::cuda::__basic_any, experimental::__iasync_resource<_Properties...>&);

using default_queries = properties_list<_Properties...>;
using default_queries = ::cuda::mr::properties_list<_Properties...>;

private:
static_assert(::cuda::mr::__contains_execution_space_property<_Properties...>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,13 @@ public:

//! @brief Enables the \c device_accessible property for \c device_memory_resource.
//! @relates device_memory_resource
_CCCL_HOST_API friend constexpr void get_property(device_memory_resource const&, device_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(device_memory_resource const&, ::cuda::mr::device_accessible) noexcept
{}

using default_queries = properties_list<device_accessible>;
using default_queries = ::cuda::mr::properties_list<::cuda::mr::device_accessible>;
};
static_assert(::cuda::mr::synchronous_resource_with<device_memory_resource, device_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<device_memory_resource, ::cuda::mr::device_accessible>, "");
} // namespace cuda::experimental

#include <cuda/std/__cccl/epilogue.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
#include <cuda/std/detail/libcxx/include/stdexcept>

#include <cuda/experimental/__memory_resource/any_resource.cuh>
#include <cuda/experimental/__memory_resource/properties.cuh>
#include <cuda/experimental/__stream/internal_streams.cuh>

#include <cuda/std/__cccl/prologue.h>
Expand Down Expand Up @@ -121,10 +120,13 @@ public:
#endif // _CCCL_STD_VER <= 2017

//! @brief Enables the \c device_accessible property
_CCCL_HOST_API friend constexpr void get_property(legacy_managed_memory_resource const&, device_accessible) noexcept
_CCCL_HOST_API friend constexpr void
get_property(legacy_managed_memory_resource const&, ::cuda::mr::device_accessible) noexcept
{}
//! @brief Enables the \c host_accessible property
_CCCL_HOST_API friend constexpr void get_property(legacy_managed_memory_resource const&, host_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(legacy_managed_memory_resource const&, ::cuda::mr::host_accessible) noexcept
{}

//! @brief Checks whether the passed in alignment is valid
static constexpr bool __is_valid_alignment(const size_t __alignment) noexcept
Expand All @@ -133,13 +135,13 @@ public:
&& (::cuda::mr::default_cuda_malloc_alignment % __alignment == 0);
}

using default_queries = properties_list<device_accessible, host_accessible>;
using default_queries = ::cuda::mr::properties_list<::cuda::mr::device_accessible, ::cuda::mr::host_accessible>;

private:
device_ref __device_{0};
};
static_assert(::cuda::mr::synchronous_resource_with<legacy_managed_memory_resource, device_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_managed_memory_resource, host_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_managed_memory_resource, ::cuda::mr::device_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_managed_memory_resource, ::cuda::mr::host_accessible>, "");

} // namespace cuda::experimental

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,13 @@ public:
#endif // _CCCL_STD_VER <= 2017

//! @brief Enables the \c device_accessible property
_CCCL_HOST_API friend constexpr void get_property(legacy_pinned_memory_resource const&, device_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(legacy_pinned_memory_resource const&, ::cuda::mr::device_accessible) noexcept
{}
//! @brief Enables the \c host_accessible property
_CCCL_HOST_API friend constexpr void get_property(legacy_pinned_memory_resource const&, host_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(legacy_pinned_memory_resource const&, ::cuda::mr::host_accessible) noexcept
{}

//! @brief Checks whether the passed in alignment is valid
static constexpr bool __is_valid_alignment(const size_t __alignment) noexcept
Expand All @@ -123,14 +127,14 @@ public:
&& (::cuda::mr::default_cuda_malloc_host_alignment % __alignment == 0);
}

using default_queries = properties_list<device_accessible, host_accessible>;
using default_queries = ::cuda::mr::properties_list<::cuda::mr::device_accessible, ::cuda::mr::host_accessible>;

private:
device_ref __device_{0};
};

static_assert(::cuda::mr::synchronous_resource_with<legacy_pinned_memory_resource, device_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_pinned_memory_resource, host_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_pinned_memory_resource, ::cuda::mr::device_accessible>, "");
static_assert(::cuda::mr::synchronous_resource_with<legacy_pinned_memory_resource, ::cuda::mr::host_accessible>, "");

} // namespace cuda::experimental

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,18 @@ public:
{}

//! @brief Enables the \c device_accessible property
_CCCL_HOST_API friend constexpr void get_property(managed_memory_resource const&, device_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(managed_memory_resource const&, ::cuda::mr::device_accessible) noexcept
{}
//! @brief Enables the \c host_accessible property
_CCCL_HOST_API friend constexpr void get_property(managed_memory_resource const&, host_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void get_property(managed_memory_resource const&, ::cuda::mr::host_accessible) noexcept
{}

using default_queries = properties_list<device_accessible, host_accessible>;
using default_queries = ::cuda::mr::properties_list<::cuda::mr::device_accessible, ::cuda::mr::host_accessible>;
};

static_assert(::cuda::mr::resource_with<managed_memory_resource, device_accessible>, "");
static_assert(::cuda::mr::resource_with<managed_memory_resource, host_accessible>, "");
static_assert(::cuda::mr::resource_with<managed_memory_resource, ::cuda::mr::device_accessible>, "");
static_assert(::cuda::mr::resource_with<managed_memory_resource, ::cuda::mr::host_accessible>, "");

} // namespace cuda::experimental

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@
#endif // _CCCL_CUDA_COMPILER(CLANG)

#include <cuda/__device/device_ref.h>
#include <cuda/__memory_resource/properties.h>
#include <cuda/std/__concepts/concept_macros.h>
#include <cuda/std/__cuda/api_wrapper.h>
#include <cuda/std/cstddef>
#include <cuda/stream_ref>

#include <cuda/experimental/__memory_resource/any_resource.cuh>
#include <cuda/experimental/__memory_resource/memory_pool_base.cuh>
#include <cuda/experimental/__memory_resource/properties.cuh>
#include <cuda/experimental/__stream/internal_streams.cuh>
#include <cuda/experimental/__stream/stream.cuh>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,18 @@ public:
{}

//! @brief Enables the \c device_accessible property
_CCCL_HOST_API friend constexpr void get_property(pinned_memory_resource const&, device_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void
get_property(pinned_memory_resource const&, ::cuda::mr::device_accessible) noexcept
{}
//! @brief Enables the \c host_accessible property
_CCCL_HOST_API friend constexpr void get_property(pinned_memory_resource const&, host_accessible) noexcept {}
_CCCL_HOST_API friend constexpr void get_property(pinned_memory_resource const&, ::cuda::mr::host_accessible) noexcept
{}

using default_queries = properties_list<device_accessible, host_accessible>;
using default_queries = ::cuda::mr::properties_list<::cuda::mr::device_accessible, ::cuda::mr::host_accessible>;
};

static_assert(::cuda::mr::resource_with<pinned_memory_resource, device_accessible>, "");
static_assert(::cuda::mr::resource_with<pinned_memory_resource, host_accessible>, "");
static_assert(::cuda::mr::resource_with<pinned_memory_resource, ::cuda::mr::device_accessible>, "");
static_assert(::cuda::mr::resource_with<pinned_memory_resource, ::cuda::mr::host_accessible>, "");

#endif // _CCCL_CUDACC_AT_LEAST(12, 6)

Expand Down
Loading