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
2 changes: 0 additions & 2 deletions benchmarks/fill.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@

#include <mdspan/mdspan.hpp>

namespace KokkosEx = MDSPAN_IMPL_STANDARD_NAMESPACE::MDSPAN_IMPL_PROPOSED_NAMESPACE;

#include <benchmark/benchmark.h>

#include <memory>
Expand Down
2 changes: 0 additions & 2 deletions benchmarks/sum/sum_3d_common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@

#include "fill.hpp"

namespace KokkosEx = MDSPAN_IMPL_STANDARD_NAMESPACE::MDSPAN_IMPL_PROPOSED_NAMESPACE;

template <class T, class Size>
void BM_Raw_Sum_1D(benchmark::State& state, T, Size size) {
auto buffer = std::make_unique<T[]>(size);
Expand Down
12 changes: 6 additions & 6 deletions compilation_tests/ctest_layout_convertible.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,11 @@ MDSPAN_STATIC_TEST(std::is_convertible<Kokkos::layout_stride::mapping<E1>, LS1>:
MDSPAN_STATIC_TEST(std::is_assignable<LS1, Kokkos::layout_stride::mapping<E1>>::value);

#if MDSPAN_HAS_CXX_17
MDSPAN_STATIC_TEST(std::is_constructible<LS1, Kokkos::Experimental::layout_left_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_convertible<Kokkos::Experimental::layout_left_padded<14>::mapping<E1>, LS1>::value);
MDSPAN_STATIC_TEST(std::is_assignable<LS1, Kokkos::Experimental::layout_left_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_constructible<LS1, Kokkos::layout_left_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_convertible<Kokkos::layout_left_padded<14>::mapping<E1>, LS1>::value);
MDSPAN_STATIC_TEST(std::is_assignable<LS1, Kokkos::layout_left_padded<14>::mapping<E1>>::value);

MDSPAN_STATIC_TEST(std::is_constructible<LS1, Kokkos::Experimental::layout_right_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_convertible<Kokkos::Experimental::layout_right_padded<14>::mapping<E1>, LS1>::value);
MDSPAN_STATIC_TEST(std::is_assignable<LS1, Kokkos::Experimental::layout_right_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_constructible<LS1, Kokkos::layout_right_padded<14>::mapping<E1>>::value);
MDSPAN_STATIC_TEST(std::is_convertible<Kokkos::layout_right_padded<14>::mapping<E1>, LS1>::value);
MDSPAN_STATIC_TEST(std::is_assignable<LS1, Kokkos::layout_right_padded<14>::mapping<E1>>::value);
#endif
40 changes: 19 additions & 21 deletions include/experimental/__p0009_bits/layout_left.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,30 +118,28 @@ class layout_left::mapping {
/**
* Converting constructor from `layout_left_padded::mapping`.
*
* This overload participates in overload resolution only if Mapping is a layout_left_padded mapping and
* extents_type is constructible from Mapping::extents_type.
* This overload participates in overload resolution only if Mapping is a
* layout_left_padded mapping and extents_type is constructible from
* Mapping::extents_type.
*
* \note There is currently a difference from p2642r2, where this function is specified as taking
* `layout_left_padded< padding_value >::mapping< Extents>`. However, this makes `padding_value` non-deducible.
* \note There is currently a difference from p2642r2, where this function
* is specified as taking `layout_left_padded< padding_value >::mapping<
* Extents>`. However, this makes `padding_value` non-deducible.
*/
MDSPAN_TEMPLATE_REQUIRES(
class Mapping,
/* requires */ (
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_left_padded_mapping<Mapping>::value
&& std::is_constructible_v<extents_type, typename Mapping::extents_type>
)
)
MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v<typename Mapping::extents_type, extents_type>))
MDSPAN_INLINE_FUNCTION constexpr
mapping(const Mapping& other) noexcept
: m_extents(other.extents())
{
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::
check_padded_layout_converting_constructor_mandates<
extents_type, Mapping>(detail::with_rank<extents_type::rank()>{});
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::
check_padded_layout_converting_constructor_preconditions<
extents_type>(detail::with_rank<extents_type::rank()>{}, other);
class Mapping,
/* requires */ (detail::is_layout_left_padded_mapping<Mapping>::value
&&std::is_constructible_v<
extents_type, typename Mapping::extents_type>))
MDSPAN_CONDITIONAL_EXPLICIT(
(!std::is_convertible_v<typename Mapping::extents_type, extents_type>))
MDSPAN_INLINE_FUNCTION constexpr mapping(const Mapping &other) noexcept
: m_extents(other.extents()) {
detail::check_padded_layout_converting_constructor_mandates<extents_type,
Mapping>(
detail::with_rank<extents_type::rank()>{});
detail::check_padded_layout_converting_constructor_preconditions<
extents_type>(detail::with_rank<extents_type::rank()>{}, other);
}
#endif

Expand Down
26 changes: 12 additions & 14 deletions include/experimental/__p0009_bits/layout_right.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,20 +128,18 @@ class layout_right::mapping {
#if MDSPAN_HAS_CXX_17
MDSPAN_TEMPLATE_REQUIRES(
class Mapping,
/* requires */ (
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_right_padded_mapping<Mapping>::value
&& std::is_constructible_v<extents_type, typename Mapping::extents_type>))
MDSPAN_CONDITIONAL_EXPLICIT((!std::is_convertible_v<typename Mapping::extents_type, extents_type>))
MDSPAN_INLINE_FUNCTION constexpr
mapping(const Mapping &other) noexcept
: m_extents(other.extents())
{
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::
check_padded_layout_converting_constructor_mandates<
extents_type, Mapping>(detail::with_rank<extents_type::rank()>{});
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::
check_padded_layout_converting_constructor_preconditions<
extents_type>(detail::with_rank<extents_type::rank()>{}, other);
/* requires */ (detail::is_layout_right_padded_mapping<Mapping>::value
&&std::is_constructible_v<
extents_type, typename Mapping::extents_type>))
MDSPAN_CONDITIONAL_EXPLICIT(
(!std::is_convertible_v<typename Mapping::extents_type, extents_type>))
MDSPAN_INLINE_FUNCTION constexpr mapping(const Mapping &other) noexcept
: m_extents(other.extents()) {
detail::check_padded_layout_converting_constructor_mandates<extents_type,
Mapping>(
detail::with_rank<extents_type::rank()>{});
detail::check_padded_layout_converting_constructor_preconditions<
extents_type>(detail::with_rank<extents_type::rank()>{}, other);
}
#endif

Expand Down
4 changes: 2 additions & 2 deletions include/experimental/__p0009_bits/layout_stride.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -445,8 +445,8 @@ struct layout_stride {
!(std::is_convertible<typename StridedLayoutMapping::extents_type, extents_type>::value &&
(detail::is_mapping_of<layout_left, StridedLayoutMapping> ||
detail::is_mapping_of<layout_right, StridedLayoutMapping> ||
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_left_padded_mapping<StridedLayoutMapping>::value || // Don't need to guard for C++14 as this isn't compiled in < C++20
MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::is_layout_right_padded_mapping<StridedLayoutMapping>::value ||
detail::is_layout_left_padded_mapping<StridedLayoutMapping>::value || // Don't need to guard for C++14 as this isn't compiled in < C++20
detail::is_layout_right_padded_mapping<StridedLayoutMapping>::value ||
detail::is_mapping_of<layout_stride, StridedLayoutMapping>))
) // needs two () due to comma
MDSPAN_INLINE_FUNCTION MDSPAN_IMPL_CONSTEXPR_14
Expand Down
3 changes: 0 additions & 3 deletions include/experimental/__p2389_bits/dims.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,10 @@

#pragma once

// backward compatibility import into experimental
namespace MDSPAN_IMPL_STANDARD_NAMESPACE {
namespace MDSPAN_IMPL_PROPOSED_NAMESPACE {

template< ::std::size_t Rank, class IndexType = std::size_t>
using dims =
:: MDSPAN_IMPL_STANDARD_NAMESPACE :: dextents<IndexType, Rank>;

} // namespace MDSPAN_IMPL_PROPOSED_NAMESPACE
} // namespace MDSPAN_IMPL_STANDARD_NAMESPACE
16 changes: 8 additions & 8 deletions include/experimental/__p2630_bits/submdspan_mapping.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ layout_left::mapping<Extents>::submdspan_mapping_impl(
offset};
} else if constexpr (deduce_layout::layout_left_padded_value()) {
constexpr size_t S_static = MDSPAN_IMPL_STANDARD_NAMESPACE::detail::compute_s_static_layout_left<Extents, deduce_layout::gap_len, Extents::static_extent(0)>(std::make_index_sequence<Extents::rank()>());
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<S_static>::template mapping<dst_ext_t>;
using dst_mapping_t = typename layout_left_padded<S_static>::template mapping<dst_ext_t>;
return submdspan_mapping_result<dst_mapping_t>{
dst_mapping_t(dst_ext, stride(1 + deduce_layout::gap_len)), offset};
} else {
Expand Down Expand Up @@ -269,7 +269,7 @@ template <size_t PaddingValue>
template <class Extents>
template <class... SliceSpecifiers>
MDSPAN_INLINE_FUNCTION constexpr auto
MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<PaddingValue>::mapping<Extents>::submdspan_mapping_impl(
layout_left_padded<PaddingValue>::mapping<Extents>::submdspan_mapping_impl(
SliceSpecifiers... slices) const {

// compute sub extents
Expand All @@ -278,7 +278,7 @@ MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<PaddingValue>::mapping<Extent
using dst_ext_t = decltype(dst_ext);

if constexpr (Extents::rank() == 0) { // rank-0 case
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<PaddingValue>::template mapping<Extents>;
using dst_mapping_t = typename layout_left_padded<PaddingValue>::template mapping<Extents>;
return submdspan_mapping_result<dst_mapping_t>{*this, 0};
} else {
const bool out_of_bounds =
Expand Down Expand Up @@ -314,7 +314,7 @@ MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<PaddingValue>::mapping<Extent
return submdspan_mapping_result<dst_mapping_t>{dst_mapping_t{dst_ext}, offset};
} else if constexpr (deduce_layout::layout_left_padded_value()) { // can keep layout_left_padded
constexpr size_t S_static = MDSPAN_IMPL_STANDARD_NAMESPACE::detail::compute_s_static_layout_left<Extents, deduce_layout::gap_len, static_padding_stride>(std::make_index_sequence<Extents::rank()>());
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_left_padded<S_static>::template mapping<dst_ext_t>;
using dst_mapping_t = typename layout_left_padded<S_static>::template mapping<dst_ext_t>;
return submdspan_mapping_result<dst_mapping_t>{
dst_mapping_t(dst_ext, stride(1 + deduce_layout::gap_len)), offset};
} else { // layout_stride
Expand Down Expand Up @@ -463,7 +463,7 @@ layout_right::mapping<Extents>::submdspan_mapping_impl(
offset};
} else if constexpr (deduce_layout::layout_right_padded_value()) {
constexpr size_t S_static = MDSPAN_IMPL_STANDARD_NAMESPACE::detail::compute_s_static_layout_left<Extents, deduce_layout::gap_len, Extents::static_extent(Extents::rank() - 1)>(std::make_index_sequence<Extents::rank()>());
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<S_static>::template mapping<dst_ext_t>;
using dst_mapping_t = typename layout_right_padded<S_static>::template mapping<dst_ext_t>;
return submdspan_mapping_result<dst_mapping_t>{
dst_mapping_t(dst_ext,
stride(src_ext_t::rank() - 2 - deduce_layout::gap_len)),
Expand Down Expand Up @@ -499,7 +499,7 @@ template <size_t PaddingValue>
template <class Extents>
template <class... SliceSpecifiers>
MDSPAN_INLINE_FUNCTION constexpr auto
MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<PaddingValue>::mapping<Extents>::submdspan_mapping_impl(
layout_right_padded<PaddingValue>::mapping<Extents>::submdspan_mapping_impl(
SliceSpecifiers... slices) const {

// compute sub extents
Expand All @@ -508,7 +508,7 @@ MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<PaddingValue>::mapping<Exten
using dst_ext_t = decltype(dst_ext);

if constexpr (Extents::rank() == 0) { // rank-0 case
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<PaddingValue>::template mapping<Extents>;
using dst_mapping_t = typename layout_right_padded<PaddingValue>::template mapping<Extents>;
return submdspan_mapping_result<dst_mapping_t>{*this, 0};
} else {
// Figure out if any slice's lower bound equals the corresponding extent.
Expand Down Expand Up @@ -536,7 +536,7 @@ MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<PaddingValue>::mapping<Exten
return submdspan_mapping_result<dst_mapping_t>{dst_mapping_t{dst_ext}, offset};
} else if constexpr (deduce_layout::layout_right_padded_value()) { // can keep layout_right_padded
constexpr size_t S_static = MDSPAN_IMPL_STANDARD_NAMESPACE::detail::compute_s_static_layout_right<Extents, deduce_layout::gap_len, static_padding_stride>(std::make_index_sequence<Extents::rank()>());
using dst_mapping_t = typename MDSPAN_IMPL_PROPOSED_NAMESPACE::layout_right_padded<S_static>::template mapping<dst_ext_t>;
using dst_mapping_t = typename layout_right_padded<S_static>::template mapping<dst_ext_t>;
return submdspan_mapping_result<dst_mapping_t>{
dst_mapping_t(dst_ext, stride(Extents::rank() - 2 - deduce_layout::gap_len)), offset};
} else { // layout_stride
Expand Down
4 changes: 1 addition & 3 deletions include/experimental/__p2642_bits/layout_padded.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include "../__p0009_bits/utility.hpp"

namespace MDSPAN_IMPL_STANDARD_NAMESPACE {
namespace MDSPAN_IMPL_PROPOSED_NAMESPACE {
namespace detail {
template<class T, class U>
MDSPAN_INLINE_FUNCTION
Expand Down Expand Up @@ -81,7 +80,7 @@ struct static_array_type_for_padded_extent {
using extents_type = Extents;
using type = ::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::maybe_static_array<
index_type, size_t, dynamic_extent,
::MDSPAN_IMPL_STANDARD_NAMESPACE::MDSPAN_IMPL_PROPOSED_NAMESPACE::detail::
::MDSPAN_IMPL_STANDARD_NAMESPACE::detail::
get_actual_static_padding_value<extents_type, PaddingValue,
ExtentToPadIdx>()>;
};
Expand Down Expand Up @@ -1086,4 +1085,3 @@ class layout_right_padded<PaddingValue>::mapping {
}
};
}
}
2 changes: 0 additions & 2 deletions include/experimental/__p2642_bits/layout_padded_fwd.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include "../__p0009_bits/utility.hpp"

namespace MDSPAN_IMPL_STANDARD_NAMESPACE {
namespace MDSPAN_IMPL_PROPOSED_NAMESPACE {

template <size_t padding_value = dynamic_extent>
struct layout_left_padded {
Expand Down Expand Up @@ -134,4 +133,3 @@ constexpr void check_padded_layout_converting_constructor_preconditions(MDSPAN_I

}
}
}
6 changes: 3 additions & 3 deletions tests/test_dims.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ static constexpr bool is_extents_v<
template<std::size_t Rank>
void test_dims_with_one_template_argument()
{
using d = MDSPAN_IMPL_STANDARD_NAMESPACE :: MDSPAN_IMPL_PROPOSED_NAMESPACE :: dims<Rank>;
using d = MDSPAN_IMPL_STANDARD_NAMESPACE :: dims<Rank>;
static_assert(test::is_extents_v<d>, "dims<Rank> is not an extents specialization");
static_assert(std::is_same<typename d::index_type, std::size_t>::value, "dims::index_type is wrong");
static_assert(d::rank() == Rank, "dims::rank() is wrong");
Expand All @@ -40,12 +40,12 @@ void test_dims_with_one_template_argument()
template<std::size_t Rank, class ExpectedIndexType>
void test_dims_with_two_template_arguments()
{
using d = MDSPAN_IMPL_STANDARD_NAMESPACE :: MDSPAN_IMPL_PROPOSED_NAMESPACE :: dims<Rank, ExpectedIndexType>;
using d = MDSPAN_IMPL_STANDARD_NAMESPACE :: dims<Rank, ExpectedIndexType>;
static_assert(test::is_extents_v<d>, "dims<Rank,T> is not an extents specialization");
static_assert(std::is_same<typename d::index_type, ExpectedIndexType>::value, "dims::index_type is wrong");
static_assert(d::rank() == Rank, "dims::rank() is wrong");
}

} // namespace test

TEST(TestDims, Test0)
Expand Down
Loading